[Java] OOP(객체 지향 프로그래밍)

H_rin·2023년 8월 6일

1. OOP 이란?

Object Oriented Programming의 줄임말

객체 지향 프로그래밍은 현실 세계의 사물을 객체라고 보고 그 객체로부터 개발하고자 하는 애플리케이션에 필요한 특징을 뽑아와서 프로그래밍 하는 것이다.
-> 추상화

프로그래밍에서 필요한 데이터를 추상화시켜서 상태와 행위를 가진 객체로 만들고, 그 객체 간의 상호 작용을 통해 로직을 구성하는 방법을 의미

1) 장점

  • 다른 클래스를 가져와 사용할 수 있고, 상속을 받을 수 있으므로 코드의 재사용성 증가
  • 자주 사용되는 로직을 라이브러리로 만들어서 신뢰성 확보 가능
  • 객체 단위로 코드가 나눠져 작성되므로 디버깅이 쉽고, 유지보수가 용이

2) 단점

  • 처리 속도가 느림
  • 객체가 많아지면 용량이 커짐
  • 설계할 때 많은 노력과 시간이 필요

2. 객체 지향 특징

1) 캡슐화

코드 재활용하는 것을 목적으로 한다.
클래스라는 캡슐에 기능과 특성을 담는다.

2) 상속

클래스로부터 즉, 부모로부터 속성과 메서드를 물려받는다.
다른 클래스를 가져와 사용할 때, 그 클래스를 직접 수정하는 대신 상속을 받아 변경하고자 하는 부분만 변경하면 된다.

3) 추상화

불필요한 정보 외 중요한 정보만 표현함으로써 공통의 속성과 기능을 묶어 이름을 붙이는 것이다.

4) 다형성

하나의 변수명이나 함수명이 상황에 따라 다르게 해석될 수 있다.
오버 라이딩, 오버로딩

3. OOP의 5가지 설계 원칙 (SOLID)

1) SRP (Single Responsibility Principle)

단일 책임 원칙
클래스는 단 하나의 책임을 가지고, 그에 대한 책임을 져야 한다.

2) OCP (Open Close Principle)

개방-폐쇄 원칙
확장에는 열려있어야 하고, 변경에는 닫혀 있어야 한다.
-> 즉, 클래스를 상속하여 수정한다.

3) LSP (Liskov Substitution Principle)

리스 코프 치환 원칙
상위 타입의 객체를 하위 타입의 객체로 지환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다.
-> 즉, 자식 클래스를 사용중일 때, 거기에 부모 클래스로 치환하여도 문제가 없어야 한다.

4) ISP (Interface Segregation Principle)

인터페이스 분리 원칙
각 행위에 대한 인터페이스는 서로 분리되어야 한다.

5) DIP (Dependency Inversion Principle)

의존 역전 원칙
상위 클래스가 하위 클래스에 의존하면 안 된다는 법칙

profile
hyerin / 한단계씩 배워가는 백엔드 개발자..(‘•̀ ▽ •́ )φ

0개의 댓글