책 소개
제목 : 객체 지향의 사실과 오해
저자 : 조영호
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=60550259
객체지향의 사실과 오해
위키북스 IT Leaders 시리즈 23권. 객체지향이란 무엇인가? 이 책은 이 질문에 대한 답을 찾기 위해 노력하고 있는 모든 개발자를 위한 책이다.
www.aladin.co.kr
3장. 타입과 추상화
해리 백이 창조한 지하철 노선도의 핵심은 지도가 당연히 가져야 한다고 생각 되는 '정확성'을 버리고 그 '목적'에 집중한 결과다.
각 역 간의 거리는 실제와 다르지만, 사람들은 노선도를 보고 원하는 곳까지 쉽게 갈 수 있다.
추상화를 통한 복잡성 극복
- 진정한 의미의 추상화란 현실에서 출발하되 불필요한 부분을 도려내가면서 사물의 본질을 드러나게 하는 과정
- 추상화의 목적은 불필요한 부분을 무시함으로써 현실에 존재하는 복잡성을 극복하는 것
- 추상화는 두 차원에서 이루어진다.
- 구체적인 사물들 간의 공통점은 취하고 차이점은 버리는 일반화 --> 단순하게 만든다.
- 중요한 부분을 강조하기 위해 불필요한 세부 사항 제거 --> 단순하게 만든다.
객체지향과 추상화
- 객체 : 명확한 경계를 가지고 서로 구별할 수 있는 구체적인 사람이나 사물
- 예를 들면, 앨리스는 트럼프 여왕, 병사, 정원사 등을 보고 '트럼프' 그룹을 만들어서 단순화 했다.
개념 (Concept)
- 공통점을 기반으로 객체들을 묶기 위한 그릇 (e.g. '트럼프')
- 개념을 이용해 객체를 여러 그룹으로 분류(Classification) 할 수 있다.
- 분류(Classification) : 특정한 객체를 특정한 개념의 객체 집합에 포함시키거나 포함시키지 않는 작업
- 객체에 어떤 개념을 적용하는 것이 가능해서 개념 그룹의 일원이 될 때, 객체를 그 개념의 인스턴스(Instance)라고 한다.
- 개념의 3가지 관점
- 심볼(Symbol) : 개념을 가리키는 간략한 이름, 명칭 (e.g. '트럼프)
- 내연(Intension) : 개념의 완전한 정의. 내연의 의미를 이용해 객체가 개념에 속하는지 여부를 확인 가능
(e.g. 트럼프에 대한 설명 : 몸이 납작하고 손발이 네모난 몸 모서리에 달려 있다.) - 외연(Extension) 개념에 속하는 모든 객체의 집합(set)
(e.g. 정원사, 병사, 신하, 왕자, 공주, 왕, 왕비 등)
- 개념은 객체들의 복잡성을 극복하기 위한 추상화 도구
타입 (Type)
- 타입의 정의는 개념의 정의와 완전히 동일 (공통점을 기반으로 객체들을 묶기 위한 틀)
- 2가지 중요 사실
- 타입은 데이터가 어떻게 사용 되느냐에 관한 것
- 타입에 속한 데이터를 메모리에 어떻게 표현 하는지는 외부에 보이지 않음 (행동만 보이고, 상태는 안보인다!)
- 객체는 행동에 따라 변할 수 있는 상태를 가지고 있다.
- 어떤 객체가 어떤 타입에 속하는지 결정하는 것은 객체가 수행하는 행동
- 객체의 내부적인 표현(상태)은 외부에서 안보인다.
- 객체의 타입은 객체의 행동이 결정한다.
- 다형성 : 내부의 표현 방식은 다를 수 있다 --> 동일한 요청에 대해 서로 다른 방식으로 응답할 수 있다.
- 캡슐화 : 외부에 행동은 보이지만 상태(데이터)는 안보인다.
타입의 계층
- 일반화 / 특수화 (Generalization / Specialization)
- 객체의 행동이 결정한다.
- 특수한 타입은 일반적인 타입의 행동 + 자신만의 특수한 행동 포함
- 슈퍼타입 / 서브타입
- 슈퍼타입(Supertype) : 일반적인 타입
- 서브타입(Subtype) : 특수한 타입
정적 모델
- 타입은 시간에 따라 동적으로 변하는 상태를 시간과 무관한(= 시간에 독립적인) 정적인 모습으로 다룰 수 있게 한다.
- 따라서 타입은 추상화이다. (객체의 동적인 특성 추상화)
- 객체의 2가지 모델
- 스냅샷(Snapshot) : 객체가 특정 시점에 구체적으로 어떤 상태를 가지는가
- 객체 다이어그램(Object Diagram), 동적 모델(Dynamic Model) 이라고도 한다.
- 타입 모델(Type Diagram) : 객체가 가질 수 있는 모든 상태와 모든 행동을 시간에 독립적으로 표현
- 정적 모델(Static Moel) 이라고도 한다.
- 정적 모델은 클래스를 이용해 구현한다.
- 스냅샷(Snapshot) : 객체가 특정 시점에 구체적으로 어떤 상태를 가지는가
- 객체를 분류하는 기준은 타입이며, 타입을 나누는 기준은 객체가 수행하는 행동이다.
'TechBooks' 카테고리의 다른 글
[BigData] 빅데이터 기초 개념,동인,기법 #6장 (0) | 2020.07.04 |
---|---|
[BigData] 빅데이터 기초 개념,동인,기법 #5장 (0) | 2020.07.03 |
[BigData] 빅데이터 기초 개념,동인,기법 #3장, 4장 (0) | 2020.07.01 |
[Programming] 객체지향의 사실과 오해 #2장 (0) | 2020.06.30 |
[BigData] 빅데이터 기초 개념,동인,기법 #1장 (0) | 2020.06.30 |
댓글