저번 주말에 스터디했던 객체지향 5원칙에 대해서 정리해 보아요~
객체지향 5대원칙이라고도 하는 5원칙은 OOP를 설계할 때 따져야 할
다섯가지 원칙의 영문 앞 글자를 따서 SOLID 라고 하는데요
제가 이해한데로 간단하게 명료하게 써 볼께요
* SRP (단일책임의 원칙: Single Responsibility Principle)
하나의 클래스는 한가지 기능만 제공해야 함
여러가지 하면 다른거 고칠 때 문제발생 우려가 있음
그래서 독립적으로 만들어야 되니까 한 클래스에는 한가지 기능에 책임을 질 수 있도록 설계 !!
* OCP (개방폐쇄의 원칙: Open Close Principle)
확장에는 열려있고, 변경에는 닫혀있어야 함
일단 만든 객체에서 변경은 폐쇄적으로 하고 확장은 개방 하도록 설계해야 한다는 의미인데
예를 들어
일단 '남자' 라는 객체가 있어요
이 남자는 여러가지 직업을 가질 수 있어요. 프로그래머, 만화가, 운동선수, 요리사, 등등....
만약 여자 프로그래머가 추가된다면??
'남자' 이전에 '사람' 을 인터페이스로 가지고 있으면 편하겠네요
그러면 사람이라는 객체에서
남자, 여자 공통부분이 많으니까 공통을 인터페이스로 잡고 각각 고유의 특성을 확장할 수 있으니까 개방적이에요
그리고 사람이라는 객체 자체에서 변경을 해버리면 남자, 여자 객체에서 문제가 발생할 수 있으니까 폐쇄적이네요
(이건 어려움요..)
* LSP (리스코브 치환의 원칙: The Liskov Substitution Principle)
객체(부모)는 서브 타입(자식)에 관계없이 대체 가능해야 함
서브 타입(자식)은 기반 타입(부모)으로 교체할 수 있어야 함
=> 서브 타입(자식)은 기반 타입(부모)의 규칙을 잘 지켜서 만들어져야 함
* ISP (인터페이스 분리의 원칙: Interface Segregation Principle)
사용하지 않는 기능은 애초에 빼야 함
차라리 인터페이스를 여러개 만들어서 동시에 사용할수 있도록 기능 분리
* DIP (의존성역전의 원칙: Dependency Inversion Principle)
상위 부모 모듈이 하위 자식 모듈에 의존하면 안됨
하위 것 때문에 위에서 변경하면 복잡해짐
그래서 최대한 단순화 하기 위해 하위 모듈은 상위 모듈을 상속만 하는 걸로...
이해한게 맞는지 모르겠네요..
어렵다
'개발이야기 > C, C++, MFC, C#, .Net' 카테고리의 다른 글
[C++] cppcheck (win) (0) | 2014.03.04 |
---|