추상화
객체의 공통된 속성들 중 필요한 부분을 포착해서 클래스로 정의하는 설계 기법
구체적인 사물들의 공통적인 특징을 파악해서 이를 하나의 집합으로 다루는 것
캡슐화
외부에 노출할 필요가 없는 정보들은 은닉(: 정보은닉)
필요한 정보만 보여주게끔 설계해야 한다
상속화
부모 클래스가 자손 클래스에게 속성을 물려주는 것
코드의 재사용
다형화
overriding: 상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의해서 사용
overloading: 이름의 메서드 여러개를 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술
참고
구분 | 오버로딩 | 오버라이딩 |
---|---|---|
메서드 이름 | 동일 | 동일 |
매개변수, 타입 | 다름 | 동일 |
리턴 타입 | 동일하거나 다르거나 | 동일 |
SRP: Single Responsibility Principle, 단일 책임 원칙
→ 클래스는 단 하나의 목적을 가져야 하며 클래스를 변경하는 이유는 단 하나의 이유여야 한다
OCP: Open Close Principle, 개방 폐쇄 원칙
→ 클래스는 확장에는 열려 있고 변경에는 닫혀 있어야 한다
LSP: Liskov Substitution Principle, 리스코프 치환 원칙
→ 상위 타입의 객체를 하위 타입으로 바구어도 프로그램은 일관되게 동작해야 한다
ISP: Interface Segregation Principle, 인터페이스 분리 원칙
→ 클라이언트는 이용하지 않는 메소드에 의존하지 않도록 인터페이스를 분리해야 한다
DIP: Dependency Inversion Principle, 의존 역전 원칙
→ 클라이언트는 추상화(인터페이스)에 의존해야하며 구체화(구현된 클래스)에 의존해선 안된다