일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 추상화
- OCP
- 상속 조합 폭발적 증가
- 일관성 있는 협력
- 책임주도설계
- OOP
- 오브젝트
- 런타임 의존성
- 설계 재사용
- 객체 생성 사용 분리
- '기존 설계 재사용
- 상속
- 서브 타이핑
- 믹스인
- 컴파일 타임 의존성
- 명령-쿼리 분리
- Swift#flatMap#map#Monad#함수형 프로그래밍#Optional
- 합성
- dip
- Apple # HIG #iOS15 #iOS14 #Human #Interface #Guidelines #Apple developer # Apple human interface guidelines
- 하향식 접근
- 유여난 설계
- iSP
- 알고리즘
- 의존성
- 객체지향
- 유연한 설계
- 행동 호환성
- 메서드를 통한 해결
- 다형성
Archives
- Today
- Total
도니의 iOS 프로그래밍 세상
[오브젝트] 7장 - 객체 분해 본문
밑의 내용은 “오브젝트” 도서를 읽고 본인이 이해한 내용을 정리한 글입니다. 실제 내용과 다를 수 있습니다.
추상화
- 문제 해결의 핵심만 남기는 작업
- 핵심을 남기기 어렵다면, 문제의 크기를 더욱 작은 문제의 단위로 나누는 작업인 분해를 실행
목차
- Procedure 추상화, Data 추상화
- Procedure 추상화의 문제점
- ADT(Abstract Data Type)
- 결론
1. Procedure 추상화, Data 추상화
- 추상화의 두가지 종류
- 프로시저 추상화는 무엇을 해야 하는지에 대한 추상화
- 이전에 배웠던 대로 메서드를 통해서 추상화 하는 방식(ex. 가격을 계산하라)
- 데이터 추상화는 무엇을 알아야 하는지에 대한 추상화
- 이전과 달리, 메서드가 아닌 struct등이 추상화 됨
- 이전 추상화는 대부분 메서드의 추상화를 의미했다면, 이제는 데이터 관리의 추상화가 등장
- ex. Int, Double등의 + 함수를 사용하기 위해 내부 구현을 알 필요 없이, 단순하게 사칙연산을 지원하는 데이터 타입 이라는 사실만 알면 됨
Procedure 추상화
- 기능 분해
데이터 추상화
- 타입 추상화(Abstract Data Type)
- 프로시저 추상화(Object-Oriented)
2. Procedure 추상화의 문제점
- 기능 분해의 문제점은 전통적인 방식인 Top-Down Approach 와 연관
Top-Down-Approach
- 시스템 구성에 해당하는 최상위 기능을 정의하고, 세부적인 하위 단계로 분해
- 세분화 단계는, 하향식으로 갈수록 세분화된 구조(하향식으로 갈수록 덜 추상적)
장점
- 논리적이고 체계적인 시스템 개발절차로서, 서비스가 실제로 구성되어 있다면 굉장히 좋은 방법
- 단점이 많음에도, 많이 활용되는 이유는 빠른 개발 속도인 것 같음. 따라서 추후에 변경이 많이 발생할 때, 리팩토링을 통해 문제점을 해결하는 것도 좋은것 같음
단점
- 실제 서비스들은 최상위 기능 정의가 모호하고 확정되지 않았으며, 논리적이고 체계적이지 못한 경우가 많음
- 최상위 기능임에도, 하위 기능에서 최상위로 jump 하는등 App내에서는 무조건적인 tree구조가 적용되지 못하는 케이스가 많은데, 그걸 의미하는 것으로 보임
- 객체 지향의 목적은 변경에 대응하기 위함이지만, top-down은 시간에 의존한 구현이기 때문에 재사용성 및 유연성이 떨어짐
- 특정 Depth에 종속되어, 추후에 추가적인 기능에 사용될 때 재사용되기 어려움**(순서라는 구체적인 구현에 의존적이기 때문이다)**
- 실행 순서는 가장 변경되기 쉬운 요소이기에, 이에 의존한다면 전체적인 사이드 이펙트 발생등이 큼
→ 결국 이 모든것을 관통하는 말인 결합도가 Top-Down-Approach의 단점
3. ADT
- 데이터 추상화는 결국 특정 데이터를 감추기 위해 데이터 추상화를 하는 작업
- 이전엔, 메시지 즉 함수를 추상화 시켰다면, 이젠 데이터를 추상화 시키기 위해 오퍼레이션을 사용
- 이것만 보았을 때, 무엇이 달라진걸까?
- 말로는 분명히 다르지만, 실제 추상화 하는 방식은 두가지를 섞어두어 구분하기 힘든것 같다. (
지금은 그냥 넘어가보자, 뒤에서 혹은 다시 볼때 깨달음이 있을것이다.)
결론
- Procedure 추상화 중 하나인 Top-Down-Approach 의 최대 단점은 시간에 따른 결합도 가 큼
- 특정 순서에 의존하기 때문에, 재사용성이 떨어짐
- ADT의 경우 데이터를 감추기 위한 데이터 추상화 작업
- 이때, OOP의 경우 다형성을 이용하고 ADT는 조건문을 통해서 분기 처리됨(올바르게 이해한 게 맞는지 잘 모르겠음.)
'OOP' 카테고리의 다른 글
[오브젝트] 15장 - 디자인 패턴 / 프레임워크 (1) | 2024.07.21 |
---|---|
[오브젝트] 14장 - 일관성 있는 협력 (0) | 2024.07.21 |
[오브젝트] 13장 - 서브 클래싱 및 서브 타이핑(2) (1) | 2024.07.21 |
[오브젝트] 13장 - 서브클래싱과 서브 타이핑(1) (0) | 2024.06.06 |
[오브젝트] 8장 - 의존성 관리하기 (0) | 2024.05.06 |
Comments