SlideShare a Scribd company logo
객체지향의 사실과 오해
3장. 타입과 추상화
1863년 영국, 최초의 지하철 노선도
실제와 유사한 물리적인 지형
구불구불한 운행노선
불규칙적인 역간의 거리
‘실제 물리적인 위치를 사실적으로 묘사하고 있다’
실제 지형에 맞는
사실적인 정보를 함축적으로 표현하고 있는데…
무엇이 문제인가?
불필요한 정보가 너무 많다
승객들로 하여금 노선도를
이해하기 어렵게 함
어디서 환승을 해야 하는지
확인이 어렵다
출발지와 도착지를 찾기 어렵다
‘지하철 노선도 디자인에서 가장 중요한 것은
얼마나 사실적으로 지형을 묘사했느냐가 아니라
역과 역 사이의 연결성을 얼마나 직관적으로 표현 했느냐’이다
직관성
역과 역 사이의 연결성을 잘 표시되어야 해
그래서… 1933년, 헨리 벡은 혁신적인 지하철 노선도 창조
지도가 당연히 가져야 하는‘정확성’을 버리고 그‘목적’에 집중한 결과이다.
현대의 지하철 노선도
몰라도 되는 정보는 무시
승객이 꼭 알아야 하는 사실만 정확히 표현
목적에 부합하는 지하철 노선도 창출
지하철 노선도의 추상화
추상화를 통한 복잡성 극복
‘복잡성의 총체인 현실을 그대로 수용하기에는
인간이 지니고 있는 인지 능력과 저장공간이 너무나도 보잘것없다는 점이다’
현실세계의 복잡성
‘현실은 복잡하며 예측 불가능한 혼돈의 덩어리다’
증시 예측
현실세계의 복잡성
일주일 후의 날씨
현실세계의 복잡성
여자친구가 화난 이유
현실세계의 복잡성
변화하는 비즈니스
현실세계의 복잡성
주의력 착각
관심을 갖는 부분만 알아차리고 나머지는 인지하지 못
한다
인간의 인지능력 한계
기억력 착각
기억했다고 생각하는 내용과 실제 사이에 존재하는 차이
지식 착각
사람들은 실제로 자신이 알고 있는 수준보다
더 많이 안다고 생각
이런 현실의 복잡한 문제를 해결하기 위해 추상화를 사용한다
현실세계의
복잡성
인간의
인지능력 한계
추상화
추상화란
어떤 양상, 세부사항, 구조를 좀 더 명확하게 이해하기 위해 특정 절차나 물체를 의도적으로 생략하거나 감춤
으로써 복잡도를 극복하는 방법
복잡성을 다루기 위해 추상화는 두 차원에서 이뤄진다 [Kramer 2007]
§ 첫번째 차원은 구체적인 사물들 간의 공통점을 취하고 차이점을 버리는 일반화를 통해 단순하게 만드는
것이다.
§ 두번째 차원은 중요한 부분을 강조하기 위해 불필요한 세부사항을 제거함으로써 단순하게 만드는 것이다.
모든 경우에 추상화의 목적은 복잡성을 이해하기 수운 수준으로 단순화하는 것이라는 점을 기억하라.
추상화의 사례를 보자~
동물원에 많은 동물들이 있다
동물들의 건강상태를
매일 확인하여 보고하세요~
어린이 대공원장
어린이 대공원에는 총 93종의 동물들이 있다
금일 동물들의 상태는
호랑이 이상없고, 물개 이상없고, 원숭이 이상없고,
미어켓 이상없고, 반달곰 이상없고, 사막여우 이상없
고, 사자 이상없고, 재규어 이상없고 …
헉헉…
이상 보고 끝입니다.
김종민 사육사
경과시간
1시간
금일 동물들의 상태는
포유류 이상없고, 파충류 이상없고,
어류 이상없고, 조류 이상없고 …
이상 보고 끝입니다.
손예진 사육사
경과시간
1분
동물 이상무~ 김철수 사육사
경과시간
1초
동물들의 건강상태
확인의 목적은?
건강에 이상 있는 동물을 확인하여
치료하기 위함이다
추상화는 세부사항을 숨기고 공통점을 취하는 것이지만
중요한 것은 그 목적에 부합하는 방법으로 진행되어야 한다
사람들은 본능적으로 공통적인 특성을 기준으로 객체를 여러 그룹으로 묶고
가짓수를 줄여 단순화 하려고 노력한다.
à 이처럼 공통점을 기반으로 객체들을 묶기 위한 그릇을 개념(concept)이라고 한다.
개념
개념의 세가지 관점
symbol 심볼
개념을 가르키는 간략한 이름이나 명칭
intension 내연
개념의 완전한 정의를 나타내며 객체가 개념에 속하는지 여부를 확인
extension 외연
개념에 속하는 모든 객체의 집합
1
2
3
개념 = 객체를 분류하기 위한 틀
분류는 객체를
특정 개념의
객체 집합에 포함
어떤 개념을
적용할까?
분류가 안되면
유지보수가 힘들지
분류는 개발자의
이해력 향상
분류는 객체를
찾기 쉽게 해
분류는 추상화를 위한 도구
개념을 통해 객체를 분류하는 과정은 추상화의 두 가지 차원을 모두 사용한다
추상화는 구체적인 사물 간의 공통점을 취하고 차이점을
버리는 일반화를 통해 단순화 하는 것이다.
à 트럼프라는 개념으로 묶은 것
à 몸이 납작, 네모난 몸 외의 사항은 제외
1
중요한 부분을 강조하기 위해 불필요한 세부사항을 제거해
단순화 하는 것이다.
2
타입은 개념과 동일하다. 따라서 타입이란 우리가 인식하고 있는 다
양한 사물이나 객체에 적용할 수 있는 아이디어나 관념을 의미한다.
데이터 타입?
타입
객체와 타입
객체는 데이터인가?
그렇지 않다
중요한 것은
내부 속성이 아니라
어떤 행동을 하느냐이다
객체와 타입
즉, 객체가 협력을 위해 어떤 책임
을 지녀야 하는지를 결정하는 것이
객체지향 설계의 핵심이다
행동이 우선이다
객체가 어떤 행동을 하느냐에 따라 객체의 타입이 결정된다.
객체의 타입은 객체의 내부 표현과는 아무런 상관이 없다.
앞에서 얘기한 내용을 다시 정리하자면…
1
2
행동이 우선이다
객체를 다른 객체와 동일한 타입
으로 분류하는 기준이 뭐냐?
동일한 행동을 하기만 하면 돼
어떤 데이터를 가지는가는
중요하지 않아~
데이터가 같아도
다르게 행동하면 다른 객체야
다형성
같은 타입의 객체는 동일한 책임을 가진다면
다른 데이터를 가질 수 있어
훌륭한 객체지향 설계는 외부에 행동만을 제공하고
데이터는 행동 뒤로 감춰야 해
캡슐화
책임-주도 설계
데이터를 먼저 생각하는 데이터-주도 설계 방법의 단점을
개선하기 위해 고안됐다
책임 주도 설계 방법의 과정
§ 시스템이 사용자에게 제공해야 하는 기능인 시스템 책임을 파악한다.
§ 시스템 책임을 더 작은 책임으로 분할한다.
§ 분할된 책임을 수행할 수 있는 적절한 객체 또는 역할을 찾아 책임을 할당한다.
§ 객체가 책임을 수행하는 도중 다른 객체의 도움이 필요한 경우 이를 책임질 적절한
객체 또는 역할을 찾는다.
§ 해당 객체 또는 역할에게 책임을 할당함으로써 두 객체가 협력하게 한다.
정보 전문가
Information Expert
객체의 책임과 책임을 수행하는데 필요한 상태는 객체 안에 존재해야 한다
생성자
Creator
하나의 객체는 다른 객체의 정보가 최대한 적어야 한다낮은 결합도
Low Coupling
높은 응집도
High Cohesion
하나의 객체는 하나의 이유로 변경 되어야 한다
컨트롤러
Controller
객체를 생성할 책임을 어떤 객체에 할당할 지에 대한 지침
요청을 처리할 객체를 만들자.
직접적으로 객체간 요청을 하게 된다면 결합도가 증가한다
GRASP 패턴 5원칙
General Responsibility Assignment Software Principle
일반화와 특수화
일반적인 타입
특수한 타입을 가진 모든 행동들 중에서
일부 행동만을 가지는 타입
특수한 타입
일반적인 타입이 가진 모든 타입을 포함하지만
거기에 더해 자신만의 행동을 추가하는 타입
슈퍼타입과 서브타입
일반적인 타입을 ‘슈퍼타입’좀 더 특수한 타입을 ‘서브타입'이라고 한다.
서브타입은 슈퍼타입의
행동을 모두 가져야 해
서브타입은 슈퍼타입을
대체할 수 있어야 해
‘어떤 타입을 다른 타입의 서브타입이라고 말할 수 있으려면
다른 타입을 대체할 수 있어야 한다’
Barbara Liskov, 1987
리스코프 치환원칙
그럼, 타입을 왜 사용해야 해?
객체지향은 객체를 지향하는 것이니
객체만 다루만 되지 않아?
인간의 인지능력의 한계지..
시간에 따라 변하는 객체의 복잡
성을 극복하기 어려워~
타입의 목적
좀 더 설명 부탁~
앨리스가 어떤 행동을 할때마다 키가 변했
자나~ 그래도 앨리스는 앨리스야.
타입은 시간에 따라 동적으로 변하는 상태
를 시간과 무관하게 다룰 수 있게 해
즉, 시간에 따른 복잡성을 제거해서 상황을
단순화 할 수 있는 거지~
타입의 목적
앨리스가 가질 수 있는 모든 키를 나열하는
대신 앨리스는 임의의 키를 가질 수 있다고
생각해서 단순화 할 수 있는 거야
이제 좀 이해되네~
이번 장의 목적은 무엇인가?
현실세계의 복잡한 문제를
추상화를 통해 극복하자~
한마디로 정리하자면…
끝
객체지향의 사실과 오해
3장. 타입과 추상화 였습니다

More Related Content

Similar to 객체지향의 사실과 오해 3장. 타입과 추상화

Expressive processing - Making Models
Expressive processing - Making ModelsExpressive processing - Making Models
Expressive processing - Making Models
Nammin Lee
 
4. 디자인과 인간심리
4. 디자인과 인간심리4. 디자인과 인간심리
4. 디자인과 인간심리Suyeong Park
 
12. 생각의 탄생 생각도구 10 모형만들기
12. 생각의 탄생 생각도구 10 모형만들기12. 생각의 탄생 생각도구 10 모형만들기
12. 생각의 탄생 생각도구 10 모형만들기hansei university
 
1415893 미래세상
1415893 미래세상1415893 미래세상
1415893 미래세상
Hye Bin Bae
 
아울림 통찰력의 시대
아울림   통찰력의 시대아울림   통찰력의 시대
아울림 통찰력의 시대
경임 김
 
아울림 통찰력의 시대
아울림   통찰력의 시대아울림   통찰력의 시대
아울림 통찰력의 시대경임 김
 
Organizing and the Process of Sensemaking
Organizing and the Process of SensemakingOrganizing and the Process of Sensemaking
Organizing and the Process of Sensemaking
Seungbin Cho
 
Healthcare bigdata value_hyojinkim
Healthcare bigdata value_hyojinkimHealthcare bigdata value_hyojinkim
Healthcare bigdata value_hyojinkim
hyojin kim
 
User experience Design에 활용되는 각종 용어 정리
User experience Design에 활용되는 각종 용어 정리User experience Design에 활용되는 각종 용어 정리
User experience Design에 활용되는 각종 용어 정리
Dong Chan Shin
 
Subject analysis
Subject analysisSubject analysis
Subject analysis
Bae Eun Ju
 
OOP - Object Oriendted Programing
OOP - Object Oriendted ProgramingOOP - Object Oriendted Programing
OOP - Object Oriendted Programing
ChangHyeon Bae
 
5월 지혜의공간ii
5월 지혜의공간ii5월 지혜의공간ii
5월 지혜의공간ii
Dong-Joon Kim
 
Cognitive psychology by robert j
Cognitive psychology by robert jCognitive psychology by robert j
Cognitive psychology by robert jbson1012
 
UI design seminar "Principle & Myth"
UI design seminar  "Principle & Myth"UI design seminar  "Principle & Myth"
UI design seminar "Principle & Myth"
Dongsik Yang
 
블랙스완(Black Swan)
블랙스완(Black Swan)블랙스완(Black Swan)
블랙스완(Black Swan)
guest27749f
 
BlackSwan (블랙스완)
BlackSwan (블랙스완)BlackSwan (블랙스완)
BlackSwan (블랙스완)
TedAhn
 

Similar to 객체지향의 사실과 오해 3장. 타입과 추상화 (17)

Expressive processing - Making Models
Expressive processing - Making ModelsExpressive processing - Making Models
Expressive processing - Making Models
 
4. 디자인과 인간심리
4. 디자인과 인간심리4. 디자인과 인간심리
4. 디자인과 인간심리
 
12. 생각의 탄생 생각도구 10 모형만들기
12. 생각의 탄생 생각도구 10 모형만들기12. 생각의 탄생 생각도구 10 모형만들기
12. 생각의 탄생 생각도구 10 모형만들기
 
1415893 미래세상
1415893 미래세상1415893 미래세상
1415893 미래세상
 
아울림 통찰력의 시대
아울림   통찰력의 시대아울림   통찰력의 시대
아울림 통찰력의 시대
 
아울림 통찰력의 시대
아울림   통찰력의 시대아울림   통찰력의 시대
아울림 통찰력의 시대
 
Organizing and the Process of Sensemaking
Organizing and the Process of SensemakingOrganizing and the Process of Sensemaking
Organizing and the Process of Sensemaking
 
Healthcare bigdata value_hyojinkim
Healthcare bigdata value_hyojinkimHealthcare bigdata value_hyojinkim
Healthcare bigdata value_hyojinkim
 
User experience Design에 활용되는 각종 용어 정리
User experience Design에 활용되는 각종 용어 정리User experience Design에 활용되는 각종 용어 정리
User experience Design에 활용되는 각종 용어 정리
 
Subject analysis
Subject analysisSubject analysis
Subject analysis
 
OOP - Object Oriendted Programing
OOP - Object Oriendted ProgramingOOP - Object Oriendted Programing
OOP - Object Oriendted Programing
 
5월 지혜의공간ii
5월 지혜의공간ii5월 지혜의공간ii
5월 지혜의공간ii
 
Cognitive psychology by robert j
Cognitive psychology by robert jCognitive psychology by robert j
Cognitive psychology by robert j
 
UI design seminar "Principle & Myth"
UI design seminar  "Principle & Myth"UI design seminar  "Principle & Myth"
UI design seminar "Principle & Myth"
 
이기적 유전자
이기적 유전자이기적 유전자
이기적 유전자
 
블랙스완(Black Swan)
블랙스완(Black Swan)블랙스완(Black Swan)
블랙스완(Black Swan)
 
BlackSwan (블랙스완)
BlackSwan (블랙스완)BlackSwan (블랙스완)
BlackSwan (블랙스완)
 

More from 한 경만

엘라스틱서치 실무 가이드_202204.pdf
엘라스틱서치 실무 가이드_202204.pdf엘라스틱서치 실무 가이드_202204.pdf
엘라스틱서치 실무 가이드_202204.pdf
한 경만
 
아파치 카프카_애플리케이션 프로그래밍 with 자바_202204.pdf
아파치 카프카_애플리케이션 프로그래밍 with 자바_202204.pdf아파치 카프카_애플리케이션 프로그래밍 with 자바_202204.pdf
아파치 카프카_애플리케이션 프로그래밍 with 자바_202204.pdf
한 경만
 
도메인 주도 설계 철저 입문_202204.pdf
도메인 주도 설계 철저 입문_202204.pdf도메인 주도 설계 철저 입문_202204.pdf
도메인 주도 설계 철저 입문_202204.pdf
한 경만
 
파워포인트 블루스
파워포인트 블루스파워포인트 블루스
파워포인트 블루스
한 경만
 
만들면서 배우는 클린 아키텍처
만들면서 배우는 클린 아키텍처만들면서 배우는 클린 아키텍처
만들면서 배우는 클린 아키텍처
한 경만
 
개발자 리서치 활동강화 방안 180109
개발자 리서치 활동강화 방안 180109개발자 리서치 활동강화 방안 180109
개발자 리서치 활동강화 방안 180109
한 경만
 
소프트웨어 공학의 사실과 오해
소프트웨어 공학의 사실과 오해소프트웨어 공학의 사실과 오해
소프트웨어 공학의 사실과 오해
한 경만
 
Database 튜닝 교육 110124
Database 튜닝 교육 110124Database 튜닝 교육 110124
Database 튜닝 교육 110124
한 경만
 
2018 workshop 180615
2018 workshop 1806152018 workshop 180615
2018 workshop 180615
한 경만
 
객체지향의 사실과 오해 7장.함께모으기
객체지향의 사실과 오해 7장.함께모으기 객체지향의 사실과 오해 7장.함께모으기
객체지향의 사실과 오해 7장.함께모으기
한 경만
 
애자일 프랙티스
애자일 프랙티스애자일 프랙티스
애자일 프랙티스
한 경만
 
Kafka streams 20201012
Kafka streams 20201012Kafka streams 20201012
Kafka streams 20201012
한 경만
 

More from 한 경만 (12)

엘라스틱서치 실무 가이드_202204.pdf
엘라스틱서치 실무 가이드_202204.pdf엘라스틱서치 실무 가이드_202204.pdf
엘라스틱서치 실무 가이드_202204.pdf
 
아파치 카프카_애플리케이션 프로그래밍 with 자바_202204.pdf
아파치 카프카_애플리케이션 프로그래밍 with 자바_202204.pdf아파치 카프카_애플리케이션 프로그래밍 with 자바_202204.pdf
아파치 카프카_애플리케이션 프로그래밍 with 자바_202204.pdf
 
도메인 주도 설계 철저 입문_202204.pdf
도메인 주도 설계 철저 입문_202204.pdf도메인 주도 설계 철저 입문_202204.pdf
도메인 주도 설계 철저 입문_202204.pdf
 
파워포인트 블루스
파워포인트 블루스파워포인트 블루스
파워포인트 블루스
 
만들면서 배우는 클린 아키텍처
만들면서 배우는 클린 아키텍처만들면서 배우는 클린 아키텍처
만들면서 배우는 클린 아키텍처
 
개발자 리서치 활동강화 방안 180109
개발자 리서치 활동강화 방안 180109개발자 리서치 활동강화 방안 180109
개발자 리서치 활동강화 방안 180109
 
소프트웨어 공학의 사실과 오해
소프트웨어 공학의 사실과 오해소프트웨어 공학의 사실과 오해
소프트웨어 공학의 사실과 오해
 
Database 튜닝 교육 110124
Database 튜닝 교육 110124Database 튜닝 교육 110124
Database 튜닝 교육 110124
 
2018 workshop 180615
2018 workshop 1806152018 workshop 180615
2018 workshop 180615
 
객체지향의 사실과 오해 7장.함께모으기
객체지향의 사실과 오해 7장.함께모으기 객체지향의 사실과 오해 7장.함께모으기
객체지향의 사실과 오해 7장.함께모으기
 
애자일 프랙티스
애자일 프랙티스애자일 프랙티스
애자일 프랙티스
 
Kafka streams 20201012
Kafka streams 20201012Kafka streams 20201012
Kafka streams 20201012
 

객체지향의 사실과 오해 3장. 타입과 추상화

  • 2. 1863년 영국, 최초의 지하철 노선도
  • 3. 실제와 유사한 물리적인 지형 구불구불한 운행노선 불규칙적인 역간의 거리 ‘실제 물리적인 위치를 사실적으로 묘사하고 있다’
  • 4. 실제 지형에 맞는 사실적인 정보를 함축적으로 표현하고 있는데… 무엇이 문제인가?
  • 5. 불필요한 정보가 너무 많다 승객들로 하여금 노선도를 이해하기 어렵게 함 어디서 환승을 해야 하는지 확인이 어렵다 출발지와 도착지를 찾기 어렵다
  • 6. ‘지하철 노선도 디자인에서 가장 중요한 것은 얼마나 사실적으로 지형을 묘사했느냐가 아니라 역과 역 사이의 연결성을 얼마나 직관적으로 표현 했느냐’이다
  • 7. 직관성 역과 역 사이의 연결성을 잘 표시되어야 해
  • 8. 그래서… 1933년, 헨리 벡은 혁신적인 지하철 노선도 창조
  • 9. 지도가 당연히 가져야 하는‘정확성’을 버리고 그‘목적’에 집중한 결과이다. 현대의 지하철 노선도 몰라도 되는 정보는 무시 승객이 꼭 알아야 하는 사실만 정확히 표현 목적에 부합하는 지하철 노선도 창출 지하철 노선도의 추상화
  • 10. 추상화를 통한 복잡성 극복 ‘복잡성의 총체인 현실을 그대로 수용하기에는 인간이 지니고 있는 인지 능력과 저장공간이 너무나도 보잘것없다는 점이다’
  • 11. 현실세계의 복잡성 ‘현실은 복잡하며 예측 불가능한 혼돈의 덩어리다’
  • 16. 주의력 착각 관심을 갖는 부분만 알아차리고 나머지는 인지하지 못 한다 인간의 인지능력 한계 기억력 착각 기억했다고 생각하는 내용과 실제 사이에 존재하는 차이 지식 착각 사람들은 실제로 자신이 알고 있는 수준보다 더 많이 안다고 생각
  • 17. 이런 현실의 복잡한 문제를 해결하기 위해 추상화를 사용한다 현실세계의 복잡성 인간의 인지능력 한계 추상화
  • 18. 추상화란 어떤 양상, 세부사항, 구조를 좀 더 명확하게 이해하기 위해 특정 절차나 물체를 의도적으로 생략하거나 감춤 으로써 복잡도를 극복하는 방법 복잡성을 다루기 위해 추상화는 두 차원에서 이뤄진다 [Kramer 2007] § 첫번째 차원은 구체적인 사물들 간의 공통점을 취하고 차이점을 버리는 일반화를 통해 단순하게 만드는 것이다. § 두번째 차원은 중요한 부분을 강조하기 위해 불필요한 세부사항을 제거함으로써 단순하게 만드는 것이다. 모든 경우에 추상화의 목적은 복잡성을 이해하기 수운 수준으로 단순화하는 것이라는 점을 기억하라.
  • 20.
  • 22. 동물들의 건강상태를 매일 확인하여 보고하세요~ 어린이 대공원장
  • 23. 어린이 대공원에는 총 93종의 동물들이 있다
  • 24. 금일 동물들의 상태는 호랑이 이상없고, 물개 이상없고, 원숭이 이상없고, 미어켓 이상없고, 반달곰 이상없고, 사막여우 이상없 고, 사자 이상없고, 재규어 이상없고 … 헉헉… 이상 보고 끝입니다. 김종민 사육사 경과시간 1시간
  • 25. 금일 동물들의 상태는 포유류 이상없고, 파충류 이상없고, 어류 이상없고, 조류 이상없고 … 이상 보고 끝입니다. 손예진 사육사 경과시간 1분
  • 26. 동물 이상무~ 김철수 사육사 경과시간 1초
  • 27. 동물들의 건강상태 확인의 목적은? 건강에 이상 있는 동물을 확인하여 치료하기 위함이다
  • 28. 추상화는 세부사항을 숨기고 공통점을 취하는 것이지만 중요한 것은 그 목적에 부합하는 방법으로 진행되어야 한다
  • 29. 사람들은 본능적으로 공통적인 특성을 기준으로 객체를 여러 그룹으로 묶고 가짓수를 줄여 단순화 하려고 노력한다. à 이처럼 공통점을 기반으로 객체들을 묶기 위한 그릇을 개념(concept)이라고 한다. 개념
  • 30. 개념의 세가지 관점 symbol 심볼 개념을 가르키는 간략한 이름이나 명칭 intension 내연 개념의 완전한 정의를 나타내며 객체가 개념에 속하는지 여부를 확인 extension 외연 개념에 속하는 모든 객체의 집합 1 2 3
  • 31. 개념 = 객체를 분류하기 위한 틀 분류는 객체를 특정 개념의 객체 집합에 포함 어떤 개념을 적용할까? 분류가 안되면 유지보수가 힘들지 분류는 개발자의 이해력 향상 분류는 객체를 찾기 쉽게 해
  • 32. 분류는 추상화를 위한 도구 개념을 통해 객체를 분류하는 과정은 추상화의 두 가지 차원을 모두 사용한다 추상화는 구체적인 사물 간의 공통점을 취하고 차이점을 버리는 일반화를 통해 단순화 하는 것이다. à 트럼프라는 개념으로 묶은 것 à 몸이 납작, 네모난 몸 외의 사항은 제외 1 중요한 부분을 강조하기 위해 불필요한 세부사항을 제거해 단순화 하는 것이다. 2
  • 33. 타입은 개념과 동일하다. 따라서 타입이란 우리가 인식하고 있는 다 양한 사물이나 객체에 적용할 수 있는 아이디어나 관념을 의미한다. 데이터 타입? 타입
  • 34. 객체와 타입 객체는 데이터인가? 그렇지 않다 중요한 것은 내부 속성이 아니라 어떤 행동을 하느냐이다
  • 35. 객체와 타입 즉, 객체가 협력을 위해 어떤 책임 을 지녀야 하는지를 결정하는 것이 객체지향 설계의 핵심이다
  • 36. 행동이 우선이다 객체가 어떤 행동을 하느냐에 따라 객체의 타입이 결정된다. 객체의 타입은 객체의 내부 표현과는 아무런 상관이 없다. 앞에서 얘기한 내용을 다시 정리하자면… 1 2
  • 37. 행동이 우선이다 객체를 다른 객체와 동일한 타입 으로 분류하는 기준이 뭐냐? 동일한 행동을 하기만 하면 돼 어떤 데이터를 가지는가는 중요하지 않아~ 데이터가 같아도 다르게 행동하면 다른 객체야
  • 38. 다형성 같은 타입의 객체는 동일한 책임을 가진다면 다른 데이터를 가질 수 있어
  • 39. 훌륭한 객체지향 설계는 외부에 행동만을 제공하고 데이터는 행동 뒤로 감춰야 해 캡슐화
  • 40. 책임-주도 설계 데이터를 먼저 생각하는 데이터-주도 설계 방법의 단점을 개선하기 위해 고안됐다 책임 주도 설계 방법의 과정 § 시스템이 사용자에게 제공해야 하는 기능인 시스템 책임을 파악한다. § 시스템 책임을 더 작은 책임으로 분할한다. § 분할된 책임을 수행할 수 있는 적절한 객체 또는 역할을 찾아 책임을 할당한다. § 객체가 책임을 수행하는 도중 다른 객체의 도움이 필요한 경우 이를 책임질 적절한 객체 또는 역할을 찾는다. § 해당 객체 또는 역할에게 책임을 할당함으로써 두 객체가 협력하게 한다.
  • 41. 정보 전문가 Information Expert 객체의 책임과 책임을 수행하는데 필요한 상태는 객체 안에 존재해야 한다 생성자 Creator 하나의 객체는 다른 객체의 정보가 최대한 적어야 한다낮은 결합도 Low Coupling 높은 응집도 High Cohesion 하나의 객체는 하나의 이유로 변경 되어야 한다 컨트롤러 Controller 객체를 생성할 책임을 어떤 객체에 할당할 지에 대한 지침 요청을 처리할 객체를 만들자. 직접적으로 객체간 요청을 하게 된다면 결합도가 증가한다 GRASP 패턴 5원칙 General Responsibility Assignment Software Principle
  • 42. 일반화와 특수화 일반적인 타입 특수한 타입을 가진 모든 행동들 중에서 일부 행동만을 가지는 타입 특수한 타입 일반적인 타입이 가진 모든 타입을 포함하지만 거기에 더해 자신만의 행동을 추가하는 타입
  • 43. 슈퍼타입과 서브타입 일반적인 타입을 ‘슈퍼타입’좀 더 특수한 타입을 ‘서브타입'이라고 한다. 서브타입은 슈퍼타입의 행동을 모두 가져야 해 서브타입은 슈퍼타입을 대체할 수 있어야 해
  • 44. ‘어떤 타입을 다른 타입의 서브타입이라고 말할 수 있으려면 다른 타입을 대체할 수 있어야 한다’ Barbara Liskov, 1987 리스코프 치환원칙
  • 45. 그럼, 타입을 왜 사용해야 해? 객체지향은 객체를 지향하는 것이니 객체만 다루만 되지 않아? 인간의 인지능력의 한계지.. 시간에 따라 변하는 객체의 복잡 성을 극복하기 어려워~ 타입의 목적 좀 더 설명 부탁~
  • 46. 앨리스가 어떤 행동을 할때마다 키가 변했 자나~ 그래도 앨리스는 앨리스야. 타입은 시간에 따라 동적으로 변하는 상태 를 시간과 무관하게 다룰 수 있게 해 즉, 시간에 따른 복잡성을 제거해서 상황을 단순화 할 수 있는 거지~ 타입의 목적 앨리스가 가질 수 있는 모든 키를 나열하는 대신 앨리스는 임의의 키를 가질 수 있다고 생각해서 단순화 할 수 있는 거야 이제 좀 이해되네~
  • 47. 이번 장의 목적은 무엇인가? 현실세계의 복잡한 문제를 추상화를 통해 극복하자~ 한마디로 정리하자면…
  • 48. 끝 객체지향의 사실과 오해 3장. 타입과 추상화 였습니다