Object oriented programming
OOP 4가지 특징
-
추상화
- 객체들 간의 공통된 속성이나 행동을 추출하여 하나의 개념(집합)으로 다룬다.
- 인터페이스와 구현을 분리한다.
-
캡슐화
- 필드와 메서드를 하나로 묶는 것
- 정보 은닉 : 필요가 없는 정보는 외부에서 접근하지 못하도록 제한하는 것
정보 은닉을 통해 높은 응집도와 낮은 결합도를 갖도록 한다.
-
상속(일반화)
- 자식은 부모에게서 상속된 필드와 메서드를 사용할 수 있고 수정 가능하다.
- 상속을 통해 중복 코드를 줄일 수 있다.
-
다형성
- 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미한다.
- 오버로딩 : 같은 기능을 하는 메서드들을 매개변수가 다르게 하여 정의하는 것
- 오버라이딩 : 상위 클래스의 메서드를 하위 클래스에서 재정의하는 것
응집도 : 클래스나 모듈 안의 요소들이 얼마나 밀접하게 관련되어 있는 정도
결합도 : 어떤 기능을 실행하는 데 다른 클래스나 모듈들에 얼마나 의존적인지
OOP 5대 원칙(SOLID)
- S : 단일 책임 원칙
- O : 개방-폐쇄 원칙
- 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계가 되어야 한다.
- L : 리스코프 치환 원칙
- 자식 클래스는 최소한 자신의 부모 클래스에서 가능한 행위는 수행할 수 있어야 한다.
- I : 의존 역전 원칙
- 의존 관계를 맺을 때 변화하기 쉬운 것 또는 자주 변화하는 것보다는 변화하기 어려운 것, 거의 변화가 없는 것에 의존하라는 것이다.
- D : 인터페이스 분리 원칙
- 인터페이스를 클라이언트에 특화되도록 분리시키는 설계 원칙.