본 글은 스터디 내에서 객체지향의 사실과 오해 - 역할, 책임, 협력 관점에서 본 객체지향을 읽고 정리한 글입니다.
추상화 기법
분류와 인스턴스화: 분류는 객체의 구체적인 세부 사항을 숨기고 인스턴스 간에 공유하는 공통적인 특성을 기반으로 범주를 형성하는 과정, 분류의 역은 범주로부터 객체를 생성하는 인스턴스화
일반화와 특수화: 일반화는 범주 사이의 차이를 숨기고 범주 간에 공유하는 공통적인 특성 강조, 일반화의 역은 특수화
집합과 분해: 집합은 부분과 관련된 세부 사항을 숨기고 부분을 사용해서 전체를 형성하는 과정, 집합의 반대 과정은 전체를 부분으로 분리하는 분해 과정
개념과 범주
객체를 분류하고 범주로 묶는 것은 공통의 개념을 적용하는 것을 의미한다.
세상에 존재하는 객체에 개념을 적용하는 과정을 분류라고 한다.
객체: 수많은 개별적인 현상
타입: 하나의 개념
인스턴스화: 타입에 해당하는 객체를 생성하는 과정
타입: 속성과 행위가 유사한 객체에 공통적으로 적용되는 관념
타입
심볼: 타입을 가리키는 간략한 이름이나 명칭
내연: 타입의 완전한 정의
외연: 타입에 속하는 모든 객체의 집합
외연과 집합
단일 분류: 한 객체가 한 시점에 하나의 타입에만 속하는 것
다중 분류: 한 객체가 한 시점에 여러 타입에 속할 경우
동적 분류: 객체가 한 집합에서 다른 집한의 원소로 자신이 속하는 타입을 변경할 수 있는 경우
정적 분류: 객체가 자신의 타입을 변경할 수 없는 경우
클래스
타입을 구현하는 가장 보편적인 방법: 클래스
클래스는 객체가 공유하는 가장 본질적인 속성
범주의 계층
계층의 상위에 위치한 범주를 계층 하위의 범주의 일반화
계층 하위의 범주를 계층 상위의 범주의 특수화
서브타입
어떤 타입이 다른 타입보다 일반적이라면 이 타입을 슈퍼타입이라고 함.
어떤 타입이 다른 타입보다 특수하다면 이 타입을 서브타입이라고 함.
어떤 타입이 다른 타입의 서브타입이 되기 위해서는 100% 규칙과 is-a 규칙을 준수해야 함
100% 규칙: 슈퍼타입의 정의가 100% 서브타입에 적용돼야 한다.
Is-a 규칙: 서브타입의 모든 인스턴스는 슈퍼타입 집합에 포함되어야 한다.
상속
모든 상속 관계가 일반화 관계는 아님.
서브타입이 슈퍼타입을 대체하더라도, 구조에 관한 동일한 기대 집합을 만족시킬 수 있다.
행위적인 순응은 타입의 행위에 관한 것이며, 서브타입은 슈퍼타입을 행위적으로 대체 가능해야 한다.
리스코프 치환 원칙: 행위적인 순응
서브타이핑: 서브클래스가 슈퍼클래스를 대체할 수 있는 경우(인터페이스 상속)
서브클래싱: 서브클래스가 슈퍼클래스를 대체할 수 없는 경우(구현 상속)
위임(delegation): 어떤 객체의 클래스가 수신된 메시지를 이해할 수 없다면 메시지를 클래스의 부모 클래스로 위임
집합: 안정적인 형태의 부분으로부터 전체를 구축하는 행위
분해: 전체를 부분으로 분할하는 행위
합성 관계
합성관계는 주문 항목의 존재를 일시적으로 감춤으로써 복잡성을 낮춘다.
패키지
소프트웨어의 전체적인 구조를 표현하기 위해 관련된 클래스 집합을 하나의 논리적 단위로 묶는 구성 요소를 패키지 혹은 모듈이라고 한다.
'📗 BOOK > 객체지향의 사실과 오해' 카테고리의 다른 글
객체지향의 사실과 오해 7장 정리 (0) | 2022.03.12 |
---|---|
객체지향의 사실과 오해 5장 정리 (0) | 2022.03.04 |
객체지향의 사실과 오해 4장 정리 (0) | 2022.03.04 |
객체지향의 사실과 오해 - 3장 정리 (0) | 2022.02.24 |
객체지향의 사실과 오해 - 2장 정리 (0) | 2022.02.24 |