추상화란?
복잡한 현실을 단순화하기 위해 사용하는 인간의 가장 기본적인 인지수단이다. 훌륭한 추상화는 목적에 부합하는 것이어야 한다.
- 공통점을 기반으로 객체들을 묶기 위한 그릇을 개념(concept)이라고 한다.
- 어떠한 객체가 특정 개념에 소속될 수 있다면, 그 객체를 해당 개념의 인스턴스(instance)라 칭한다.
- 개념*은, 객체들의 복잡성을 극복하기 위한 추상화 도구이다.
개념의 세 가지 관점
- 심볼(symbol):개념을 가리키는 간략한 이름이나 명칭
- 내연(intension):개념의 완전한 정의. 객체가 개념에 속하는지 판별할 수 있음
- 외연(extension):개념에 속하는 모든 객체 집합
- 타입(개념)과 객체의 타입(개념)타입과 개념의 정의는 같다. 둘 다 객체를 한데 묶어 추상화하기 위한 방법이다.
객체에서 중요한 것은 객체의 행동이다. 객체를 창조할 때 가장 중요하게 고려해야 하는 것은 이웃하는 객체와 상호작용을 하기 위해 어떤 행동을 해야 하는지이다. - 어떤 객체가 어떤 타입에 속하는지를 결정하는 것은, 객체가 수행하는 행동이다.
- 객체의 내부적 표현은 외부로부터 철저하게 감춰진다.
객체의 타입(개념)을 나누는 데, 내부적 표현과는 상관없다. 단지 객체가 어떤 행동을 하느냐라는 것에 달렸다.
다형성
같은 타입에 속한 객체는 행동만 동일하다면 서로 다른 데이터를 가질 수 있다. (행동=책임=메세지 수신)
다형성이란, 동일한 요청에 대해 서로 다른 방식으로 응답할 수 있는 능력을 뜻한다.
일반화/특수화 관계
타입 간에는 일반화/특수화 관계가 존재할 수 있다. 트럼프는 트럼프 인간보다 더 일반적인 개념이다. 트럼프는 트럼프 인간에 속하는 객체를 포함한다. 여기서도, 중요하게 여기는 것은 데이터가 아니라 행동이다.
- SuperType : 좀 더 일반적인 타입
- SubType : 좀 더 특수한 타입
서브타입은 슈퍼타입의 행동+@로 추가 행동을 가지고 있다. 따라서 슈퍼타입을 대체할 수 있어야 한다.
일반화-차이점을 제거, 포괄적 의미를 지닌 행동으로 묘사. 이를 통해 추상화로 나아갈 수 있음
타입
우리는 앨리스의 키를 생각할때, 앨리스가 가질 수 있는 모든 키 숫자를 기억하기보다는 변경되는 키 라는 상태를 가진다고 단순화된다. 앨리스의 상태를 시간과 무관한 정적인 모습으로 다룰 수 있게 해 준다. 이처럼, 타입 또한 추상화로 나아가기 위한 하나의 수단이다.
정적모델과 동적모델
소프트웨어 설계 및 개발 과정에서 정적 모델과 동적 모델을 모두 고려해야 하는 이유는, 시스템의 정확성, 효율성, 확장성을 보장하기 위해서이다.
- 정적 모델
- 정적 모델*은 시스템의 ** 구조적인 측면을 나타냅니다.
- 클래스, 객체, 속성, 관계 등의 정적인 요소를 표현합니다.
- UML 다이어그램에서는 클래스 다이어그램, 객체 다이어그램 등으로 표현됩니다.
학생 -- 등록 --> 강의
- 동적 모델
- 동적 모델은 시스템이 시간에 따라 어떻게 동작하는지를 나타냅니다
- 객체 간의 상호작용, 이벤트 흐름, 상태 변화 등을 표현합니다.
- UML 다이어그램에서는 시퀀스 다이어그램, 상태 다이어그램, 활동 다이어그램 등이 사용됩니다.[[4장. 역할, 책임, 협력]]
학생 -> 시스템: 등록 요청 시스템 -> 강의: 학생 추가
'책 > 객체지향의 사실과 오해' 카테고리의 다른 글
5장 Part1. 책임과 메시지 (1) | 2025.01.01 |
---|---|
4장. 역할, 책임, 협력 (0) | 2025.01.01 |
2장. 이상한 나라의 객체 (2) | 2025.01.01 |
1장. 협력하는 객체들의 공동체 (0) | 2025.01.01 |
0장. 서론, 객체지향으로 가는 발걸음 (1) | 2025.01.01 |