본문 바로가기

개발자/C#

상속이냐 합성이냐

반응형
새로운 관점으로 보는 Inheritance_vs_Composition 대한 글입니다.
한번 읽어봐도 좋을...



상속이냐 합성이냐 그것이 문제로다.

객체 지향 설계에 대한 미신

불과 10여 년 전만 하더라도 객체 지향 프로그래밍은 많은 이들에게 낯설게만 느껴졌지만
(혹시 저만 그랬던가요?) 이제는 C++나 JAVA와 같은 객체 지향 언어들이 다수의 소프트
웨어 개발자들에게 지지를 받고 있고 최근에 나오는 수많은 개발 방법론들이 대부분 객체
지향을 기반으로 하고 있을 만큼 소프트웨어 업계 전반적으로 객체 지향 기법 및 이론들이
널리 퍼져 있습니다. 그러나 이런 폭넓은 인프라에도 불구하고 아직까지 많은 책들과 대학
수업에서 객체 지향에 대해서 시대에 뒤떨어졌거나 심지어는 잘못된(정확히 말하자면 잘못
된 생각이었고 이제는 수정되어야 할) 내용들을 언급하거나 가르치고 있는 것이 현실입니다.
따라서 이 글에서는 실제로 프로젝트에서 합리적인 객체 지향 설계를 위해 우리가 버려야
할 과거의 인습 중 몇 가지에 대해서 언급하고자 합니다.(참고로 이 글은 많은 부분 '알기
쉬운 디자인 패턴(원제 : Design Patterns Explained, Alan shalloway, James R. Trott 저)'
의 8장 내용을 토대로 하고 있습니다.)
과거에 잘못 소개된 객체 지향 개념들 중 대표적인 것은 다음과 같습니다.
1. 상속은 기능의 확장이다.
2. 객체는 데이터+메소드이다.
3. 캡슐화는 데이터 은닉이다.
'알기 쉬운 디자인 패턴'에서 저자는 위의 개념들이 다음과 같이 수정되어야 한다고 주장하
고 있습니다.
1. 상속은 기능의 확장이 아니라 클래스들을 분류하는 수단이다.
2. 객체는 책임이 있는 어떤 것이다.
3. 캡슐화는 데이터, 인터페이스, 클래스, 시스템 등 구현 가능한 모든 것에 대한 은닉이다.
반응형

캐어랩 고객 지원

취업, 창업의 막막함, 외주 관리, 제품 부재!

당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약, 아이디어는 있지만 구현할 기술이 없는 막막함.

우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.

이제 고민을 멈추고, 캐어랩을 만나세요!

코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.

제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!

귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.

지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.

카카오 채널 추가하기

카톡 채팅방에서 무엇이든 물어보세요

당신의 성공을 위해 캐어랩과 함께 하세요.

캐어랩 온라인 채널 바로가기

캐어랩