티스토리 뷰

DEV/ETC

객체 지향 프로그래밍

초록매실원액 2015. 11. 26. 17:44
* 객체 지향 프로그래밍
- 캡슐화 : 관련성 있는 기능을 모아서 하나의 클래스로 생성
- 은닉성 : 클래스 사용하기 위한 필요한 method만 public 내부적 구현은 감춘다
- 상속성 : 클래스의 확장과, 상위 클래스의 기능을 그대로 재사용 가능
- 추상화 : 공통 데이터에 대한 추상화, 방식은 다르나 구분은 같은 기능을 추상화 하여 실제 구현은 실 객체에 하며 사용은 추상화된 데이터 타입만으로 작동가능 
- 다형성 : 추상화를 통한 클래스의 공통 분모를 만들고 해당 클래스가 여러가지 기능의 다른 클래스로 확장되었다하더라고 사용하는 측면에서는 같은 것으로 보며 기능을 획일적으로 실행가능.
ex) Draw()추상 클래스를 상속받는 a(네모),b(세모)는 override를 통해서 각각의 실행을 할수 있다.
* 객체지향 설계시 원칙
- 단일 책임 원칙 : 모든 클래스는 하나의 기능만을 수행 해야 한다. Controller, Model, View등 한가지만 해야 한다. 보여주면서 데이터도 조작 하는 클래스는 차후 확장시 한쪽에 중복된 기능이 포함 될 수 도 있다. 만약 중복되어 두가지 기능을 한곳에서 하게 되면 수정시 너무 많은 곳을 수정해야 하며 수정되었다 하더라도 SideEffect가 날 수 있다.
- 개방-폐쇄 원칙
 : 확장은 개발되지만 수정은 폐쇄 되어야 한다. 이것은 기능을 Override하거나 해서 기능을 더 확장(대체) 할 수는 있지만 기존기능을 수정 할 수는 없어야 한다. 만약 기존기능을 수정하게 된다면 같은 클래스를 상속 받아서 구현한 다른 클래스들에서도 여러가지 문제가 나타날 수 있다.
- 리스코프 치환 법칙
자식 클래스는 언제는 부모클래스로 교체 할 수 있어야 한다. 즉 부모 클래스가들어갈 자리에 자식 클래스가 들어가도 동일하게 작동해야 한다. 이것이 상속의 본질이다. 이것은 추상화와 상속성을 나태낸다.- 인터페이스 분리 원칙
인터페이스의 목적을 분명히 하고 해당 목적에 맞는 인터페이스만을 선언 해야 한다. 이동과 공격이 분리 되어 있지 않다면 건물에도 이동 명령이 들어갈 수 있고 공격이 불가능한 유닛에 공격 명령이 불필요하게 들어갈 수 있다. 이것은 분명 시스템을 느리게 하는 요소일 수 있다.
- 의존성 역전 법칙
상위 클래스는 하위 클래스에 의존해서는 절대 안된다. 상위 클래스는 하위 클래스에 뭐가 선언될지 알 수가 없다는 전제로 개발되어야 한다. 만약 하위 클래스를 지정하고 개발 된다면 향후 확장성과 추상화는 모두 깨진것이라고 봐야 한다.




'DEV > ETC' 카테고리의 다른 글

[STS] 'AUTOMATIC UPDATES DOWNLOAD' HAS ENCOUNTERED A PROBLEM.  (0) 2016.10.20
X-UA-Compatible, IE 호환성 강제 랜더링  (0) 2016.05.03
리턴메일 오류 분석  (0) 2016.03.31
개발 폰트  (0) 2015.11.27
SVN 계정정보 삭제(이클립스)  (0) 2015.11.26
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함