반응형
새로운 관점으로 보는 Inheritance_vs_Composition 대한 글입니다.
한번 읽어봐도 좋을...
상속이냐 합성이냐 그것이 문제로다.
객체 지향 설계에 대한 미신
불과 10여 년 전만 하더라도 객체 지향 프로그래밍은 많은 이들에게 낯설게만 느껴졌지만
(혹시 저만 그랬던가요?) 이제는 C++나 JAVA와 같은 객체 지향 언어들이 다수의 소프트
웨어 개발자들에게 지지를 받고 있고 최근에 나오는 수많은 개발 방법론들이 대부분 객체
지향을 기반으로 하고 있을 만큼 소프트웨어 업계 전반적으로 객체 지향 기법 및 이론들이
널리 퍼져 있습니다. 그러나 이런 폭넓은 인프라에도 불구하고 아직까지 많은 책들과 대학
수업에서 객체 지향에 대해서 시대에 뒤떨어졌거나 심지어는 잘못된(정확히 말하자면 잘못
된 생각이었고 이제는 수정되어야 할) 내용들을 언급하거나 가르치고 있는 것이 현실입니다.
따라서 이 글에서는 실제로 프로젝트에서 합리적인 객체 지향 설계를 위해 우리가 버려야
할 과거의 인습 중 몇 가지에 대해서 언급하고자 합니다.(참고로 이 글은 많은 부분 '알기
쉬운 디자인 패턴(원제 : Design Patterns Explained, Alan shalloway, James R. Trott 저)'
의 8장 내용을 토대로 하고 있습니다.)
과거에 잘못 소개된 객체 지향 개념들 중 대표적인 것은 다음과 같습니다.
1. 상속은 기능의 확장이다.
2. 객체는 데이터+메소드이다.
3. 캡슐화는 데이터 은닉이다.
'알기 쉬운 디자인 패턴'에서 저자는 위의 개념들이 다음과 같이 수정되어야 한다고 주장하
고 있습니다.
1. 상속은 기능의 확장이 아니라 클래스들을 분류하는 수단이다.
2. 객체는 책임이 있는 어떤 것이다.
3. 캡슐화는 데이터, 인터페이스, 클래스, 시스템 등 구현 가능한 모든 것에 대한 은닉이다.
한번 읽어봐도 좋을...
상속이냐 합성이냐 그것이 문제로다.
객체 지향 설계에 대한 미신
불과 10여 년 전만 하더라도 객체 지향 프로그래밍은 많은 이들에게 낯설게만 느껴졌지만
(혹시 저만 그랬던가요?) 이제는 C++나 JAVA와 같은 객체 지향 언어들이 다수의 소프트
웨어 개발자들에게 지지를 받고 있고 최근에 나오는 수많은 개발 방법론들이 대부분 객체
지향을 기반으로 하고 있을 만큼 소프트웨어 업계 전반적으로 객체 지향 기법 및 이론들이
널리 퍼져 있습니다. 그러나 이런 폭넓은 인프라에도 불구하고 아직까지 많은 책들과 대학
수업에서 객체 지향에 대해서 시대에 뒤떨어졌거나 심지어는 잘못된(정확히 말하자면 잘못
된 생각이었고 이제는 수정되어야 할) 내용들을 언급하거나 가르치고 있는 것이 현실입니다.
따라서 이 글에서는 실제로 프로젝트에서 합리적인 객체 지향 설계를 위해 우리가 버려야
할 과거의 인습 중 몇 가지에 대해서 언급하고자 합니다.(참고로 이 글은 많은 부분 '알기
쉬운 디자인 패턴(원제 : Design Patterns Explained, Alan shalloway, James R. Trott 저)'
의 8장 내용을 토대로 하고 있습니다.)
과거에 잘못 소개된 객체 지향 개념들 중 대표적인 것은 다음과 같습니다.
1. 상속은 기능의 확장이다.
2. 객체는 데이터+메소드이다.
3. 캡슐화는 데이터 은닉이다.
'알기 쉬운 디자인 패턴'에서 저자는 위의 개념들이 다음과 같이 수정되어야 한다고 주장하
고 있습니다.
1. 상속은 기능의 확장이 아니라 클래스들을 분류하는 수단이다.
2. 객체는 책임이 있는 어떤 것이다.
3. 캡슐화는 데이터, 인터페이스, 클래스, 시스템 등 구현 가능한 모든 것에 대한 은닉이다.
반응형
'개발자 > C#' 카테고리의 다른 글
Infrasound 관측망과 인공발파 식별연구 (0) | 2012.07.29 |
---|---|
C# 파일 없으면 만들어 쓰고 있으면 한줄씩 읽어오는 코드 (1) | 2012.07.20 |
정수에서 1이 설정된 비트(Bit) 수 세기 (0) | 2012.07.17 |
wfdisc 파일정보 보여주는 프로그램 (0) | 2011.12.30 |
35 Free C and C++ Programming Books and Ebooks (0) | 2011.03.01 |
C++ 관련 책 list 입니다. (0) | 2011.03.01 |
파일 확장자 변경 코드 (0) | 2011.01.27 |
C언어 관련 주요 질문과 답변 (0) | 2011.01.12 |
더욱 좋은 정보를 제공하겠습니다.~ ^^