프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라,
프로그램을 수많은 '객체(object)'라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다.
객체란 하나의 역할을 수행하는 '메소드와 변수(데이터)'의 묶음으로 봐야 한다.
-
추상화
- 구체적인 사물들의 공통적인 특징을 파악해서 이를 하나의 개념(집합)으로 다루는 것
-
캡슐화
- 필드와 메소드를 클래스로 묶는 데이터 캡슐화
- 외부에서 객체의 상태를 변경하는것을 막기위한 은닉화(접근제어자)
-
상속
- 자식 클래스가 부모 클래스의 특성과 기능을 물려받는 것
-
다형성
- 어떤 변수,메소드가 상황에 따라 다른 결과를 내는 것 (오버라이딩, 오버로딩)
-
SRP (단일 책임 원칙)
- 객체는 오직 하나의 책임을 가져야한다.
-
OCP (개방-폐쇄 원칙)
- 객체는 확장에 대해서는 개방적이고 수정에 대해서는 폐쇄적이어야 한다는 원칙
-
LSP (리스코프 치환 원칙)
- 자식 클래스는 언제나 자신의 부모 클래스를 대체할수 있다는 원칙
-
ISP (인터페이스 분리 원칙)
- 클라이언트에서 사용하지 않는 메서드는 사용해선 안된다. 그러므로 인터페이스를 다시 작게 나누어 만든다.
-
DIP (의존성 역전 원칙)
- 추상성이 높고 안정적인 고수준의 클래스는 구체적이고 불안정한 저수준의 클래스에 의존해서는 안된다는 원칙