티스토리 뷰
ch.3 타입과 추상화
'정확성'을 버리고 '목적'에 집중해라
지하철 노선도는 실제 지도에 맞춰서 그릴 필요가 없다. 환승역이나 역간의 연결만이 중요할 뿐
실제 지도와 똑같이 그릴려는 '정확성'을 버리고 노선도에 맞는 '목적'에 초점을 맞추자
'추상화'의 목적
- 불필요한 부분을 무시함으로써 현실에 존재하는 복잡성을 극복하는 것
그룹으로써의 추상화
현실에 살아가는 우리는 핸드폰, 컴퓨터, 신발, 책 등 일상생활에서 모든 것을 추상화해서 부른다.
모든 것을 세분화해 "난 '갤럭시 플립4'를 사용해"라고 하지 않을 것 이다.
이 객체를 나누기 위한 개념을 말할땐 3가지 관점을 통해 얘기한다.
심볼 ; 개념을 가리키는 이름 ex)핸드폰
내연 ; 개념의 완전한 정의 ex)연락을 하거나, 문자를 보내는 도구
외연 ; 개념에 속하는 객체의 집합 ex)갤럭시xx,아이폰xx
즉, 분류를 통해 객체를 나누는 것은 객체지향의 가장 중요한 개념 중 하나이다.
(DB설계?, 도메인 설계?)
타입과 다형성
일상생활에서 객체를 나누는 '개념'을 소프트웨어 내에선 '타입'으로 대채해 설명한다.
객체가 어떤 행등을 하느냐에 따라 객체의 타입이 결정
(그렇다면 만약 '주문'이란 행동을 갖고 있는 객체들은 전부 같은 타입으로 묶여야 하는가?)
(더 큰 타입으로 묶여있는 객체안에 '주문'이 있다면 혹은 그 행위가 더 직관성을 해친다면?)
객체를 행동에 따라 같은 '타입'으로 분류했다면.
같은 타입에 속한 객체는 동일한 '행동'이지만 다른 데이터를 가질 수 있다.
동일한 메시지를 받더라도 객체마다 내부의 처리방식이 다를 수 있다.
이것을 다형성
이라고 부른다.
(같은 메시지를 받는 객체를 같은 타입으로 두어라?)
일반화/특수화
상속이라는 단어가 바로 떠올랐다.
같은 공통된 '내연'을 갖고있지만 조금더 일반화할 측면이 있는 부분을 한번더 분류해슈퍼타입
과 서브타입
으로 나눌 수 있다.
느낀점
지금껏 추상화를 단순히 구현화 된 객체를 사용하지 않기 위해 한단계 감싸주는 용도(?)로써 생각했다.
하지만 책을 읽고 나서 보니 완전히 다르게 오해했다는 것을 알게 되었다.
이번 장은 객체지향의 특징들을 명확히 분류해 주었고 앞장의 아리까리하게 설명한 부분들을 이해하기 쉽게 다루어 확실히 객체지향의 특징을 '소프트웨어'로써 이해하게 된 것 같다.
크게 2가지로 나누어본 객체지향적 설계
- 명확하게 'DB' 혹은 '도메인'을 설계하는 것
- 설계한 객체의 행동을 분류하여 같은 타입의 객체로 나눌 것
'IT Book > 객체지향의 사실과 오해' 카테고리의 다른 글
Ch.6 객체지도 (0) | 2023.05.29 |
---|---|
Ch.5 책임과 메시지 (0) | 2023.05.21 |
Ch.4 역할, 책임, 협력 (0) | 2023.05.14 |
Ch2. 이상한 나라의 객체 (0) | 2023.04.29 |
Ch1. 협력하는 객체들의 공동체 (0) | 2023.04.22 |
- JWT
- 책리뷰
- 정수형으로 변환
- SpringSecurity
- java 플레이그라운드
- 객체 지도
- springboot
- 프로그래머스
- 맥 error
- pinia
- 한권으로끝내기리눅스마스터2급
- Vue.js3
- 타임리프
- it책 리뷰
- 짝지어제거하기
- 알고리즘
- script setup
- 리눅스마스터2급
- LEVEL2
- vue.js
- 객체지향
- 다음 큰 숫자
- vuex
- mybatis구현
- 객체지향의 사실과 오해
- 토스페이먼츠
- 함께모으기
- for
- CompositionAPI
- 스프링부트
- Total
- Today
- Yesterday