날짜별 글 목록: 2010년 7월 19일

OOP 설계 5원칙

OOP 기반의 소프트웨어를 설계하는데 지켜야 하는 OOP 설계 원칙에 대한 내용이고, 5개가 있다.

1. 단일 책임의 원칙(SRP : Single Responsibility Principle)

– 한 객체는 한 가지 책임을 가져야 한다는 원칙이다. 이 원칙은 응집도를 높이고, 결합도를 낮추게 한다.

2. 의존 관계 역전의 법칙(DIP : Dependency Inversion Principle)

– 클라이언트는 상세 클래스가 아닌 추상화(인터페이스, 추상클래스) 레이어에 의존해야 한다는 원칙이다. 확장 이슈가 있는 부분(공통된 특성 및 기능)은 추상화를 해야 한다는 것이다.

3. 인터페이스 분리의 원칙(ISP : Interface Segregation Principle)

– 클라이언트에 특화된 여러개의 인터페이스가 하나의 범용 인터페이스보다 좋다는 것이다.

4. 리스코프 대체 원칙(LSP : Liskov Substitution Principle)

– 상위 클래스는 파생클래스로 대체 가능해야 되는 원칙이다. 그래서, 상위 클래스의 기능은 파생클래스가 포함해야 한다는 것이다. 따라서, 파생클래스는 상위클래스보다 더 많은 기능을 제공한다. 아래의 lsp.doc 파일은 전에 스터디를 하면서, C#으로 만들어 본 예제이다.

lsp.doc

5. 개방 폐쇄 원칙(Open-Closed Principle)

– 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다는 원칙이다. 이 원칙은 기존 클래스를 수정하지 말고, 상속이나 구현으로 기능을 확장해야 한다는 것이다.