07. 함께 모으기, 추상화 기법

2023. 5. 31. 11:37북리뷰/객체지향 사실과 오해

728x90

# 객체지양 설계 내 상호 연관 관점 

## 개념 관점

설계는 도메인 안에서 존재하는 개념과 개념들 사이 관계를 표현

실제 도메인의 규칙 및 제약을 최대한 유사하게 반영

## 명세 관점

사용자의 영역인 도메인을 벗어나 개발자의 영역인 SW에 초점이 옮겨짐

도메인에서 벗어나 실제 SW안에서 살아 숨쉬는 객체들의 책임에 초점

즉, 인터페이스를 바라봄

'무엇'을 할 수 있는가에 초점

## 구현 관점

실제 작업을 수행하는 코드와 연관

객체들의 책임을 수행하는 데 필요한 동작하는 코드를 작성

'어떻게' 수행할 것인가에 초점

 

구현하지 않고 머리속으로만 구상한 설계는 코드로 구현하는 단계에서 대부분 변경됨. 설계 작업은 구현을 위한 스케치 를 작성하는 단계지 구현 그 자체일 수 없음. 중요한 것은 설계가 아니라 코드. 따라서 협력을 구상하는 단계에 너무 오랜 시간을 투자하지 말고, 최대한 빨리 코드를 구현해서 설계에 이상이 없는지 판단, 코드를 통한 피드백 없이는 깔끔한 설계를 얻을 수 없음

 

# 추상화

추상화는 도메인의 복잡성을 단순화하고 직관적인 멘탈 모델을 만드는 데 사용할 수 있는 가장 기본적인 인지 수단

 

## 추상화 기법 종류

### 분류와 인스턴스화 

객체의 구체적인 세부 사항을 숨기고 인스턴스 간 공유하는 공통적인 특성 기반으로 범주를 형성하는 과정

공통적 개념을 적용

### 일반화와 특수화

일봔화 : 범주 사이의 차이를 숨기고 범주 간 공유하는 공통적 특성 강조

특수화 : 일반화의 역

### 집합과 분해 

집합 : 부분과 관련된 세부 사항을 숨기고 부분을 사용해서 전체를 형셩

분해 : 집합의 역

 

728x90

'북리뷰 > 객체지향 사실과 오해' 카테고리의 다른 글

06. 객체 지도  (0) 2023.05.31
05. 책임과 메시지  (0) 2023.05.30
04. 역할, 책임, 협력  (0) 2023.05.30
03. 타입과 추상화  (0) 2023.05.29
02. 이상한 나라의 객체  (0) 2023.05.29