추상화
캡슐화
데이터와 해당 데이터를 처리하는 메서드를 하나로 묶어서 외부에서의 접근을 제한
상속
다형성
SRP (Single Responsibility Principle) : 단일 책임 원칙
객체는 단 하나의 책임만 가져야 한다.
클래스는 단 하나의 책임을 가져야 하며, 클래스를 변경하는 이유는 단 하나의 이유이어야 한다.
OCP (Open-Closed Principle) : 개방-폐쇄 원칙
기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계가 되어야 한다.
확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다.
LSP (Liskov Substitution Principle) : 리스코프 치환 원칙
자식 클래스는 최소한 자신의 부모 클래스에서 가능한 행위는 수행할 수 있어야 한다.
상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다.
ISP (Interface Segregation Principle) : 인터페이스 분리 원칙
DIP (Dependency Inversion Principle) : 의존 역전 원칙
의존 관계를 맺을 때 변화하기 쉬운 것 또는 자주 변화하는 것보다는 변화하기 어려운 것, 거의 변화가 없는 것에 의존해야 한다.
고수준 모듈은 저수준 모듈의 구현에 의존해서는 안된다.
절차지향 프로그래밍
객체지향 프로그래밍