일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 메서드를 통한 해결
- 서브 타이핑
- 명령-쿼리 분리
- '기존 설계 재사용
- 합성
- 오브젝트
- 알고리즘
- 행동 호환성
- 책임주도설계
- 추상화
- 유여난 설계
- 의존성
- 컴파일 타임 의존성
- 믹스인
- iSP
- 런타임 의존성
- 설계 재사용
- 객체지향
- OCP
- 상속
- 다형성
- OOP
- 일관성 있는 협력
- 상속 조합 폭발적 증가
- Swift#flatMap#map#Monad#함수형 프로그래밍#Optional
- 유연한 설계
- dip
- 하향식 접근
- Apple # HIG #iOS15 #iOS14 #Human #Interface #Guidelines #Apple developer # Apple human interface guidelines
- 객체 생성 사용 분리
- Today
- Total
목록2024/10 (3)
도니의 iOS 프로그래밍 세상
상속의 목적은 타입 계층을 구조화(not 코드 재사용!)타입 계층은 다형성의 기반을 제공함Chap01. 다형성오버로딩 다형성함수의 이름은 동일하나, 서로 다른 파라미터class Bank { func withdraw(won: WON) func withdraw(dollar: Dollar) } 2. 강제 다형성언어가 지원하는 자동 타입 변환 및 사용자 직접 타입변환을 통해 사용하는 방식ex. + 정수일떈 값을 더함, 문자열은 append 시킴3. 포함 다형성메시지는 동일하고, 수신 객체 타입에 따라 실제 수행되는 행동이 달라지는 것subtype 다형성Chap02. 상속의 양면성객체지향 아이디어의 근거는 데이터와 행동을 객체라는 하나의 실행 단위로 통합하는 것상속은 결국 부모의 데이터와 행동이 자식에 포함되..
상속과 합성은 가장 많이 사용되는 코드 재사용 기법상속은 클래스 사이에 정적인 관계, 합성은 동적인 관계상속은 부모 클래스에 구현에 의존하기 때문에 자식과 부모간의 강한 결합도를 가짐(부모 클래스이 구현에 의존하지 않는다면 어떻게 될까? → 부모 inteface에 의존한 상속을 설계한다면 더욱 유연해지지 않을까?)합성은 퍼블릭 인터페이스에 의존하기 때문에 객체 내부 구현 변경에 따른 영향이 최소화되어 안정적임→ 이로인해, 합성이 상속에 비해 유연한 설계가 가능함(구현이 아닌, 인터페이스에 의존하기 때문)1. 상속으로 인한 조합의 폭발적인 증가상속이 가진 부모 자식간의 결합도는 코드 수정간 더 많은 작업량을 요구함합성은 상속과 같이 중복을 제거하면서도 보다 간단하게 처리가 가능함새로운 클래스 생성기능 A,..
객체 지향의 장점중 하나인 상속을 통한 코드 재사용합성을 통해서도 코드 재사용 가능Chap01. 상속과 중복 코드중복 코드란 스펙이 변경될 때 함께 수정되어야 하는 코드중복을 제거해야 하는 이유는, 추후 코드 수정시에 몇배의 노력이 발생 하기 때문(계속된 중복 코드는 제곱배로 커져, 버그 발생 가능성이 높아짐)따라서, 신뢰할 수 있는 소프트웨어를 위해선 DRY 원칙(Don’t Repeat Yourself를 지켜야 함중복 제거 방법타입코드중복 코드를 제거를 위해, 클래스로 만들어 중복 코드를 이관시킴타입코드는 낮은 응집도와 높은 결합도 문제 발생(특정 타입에 종속되어 있기 때문)상속상속을 통해 기반 클래스의 로직을 재활용상속을 염두하지 않는 클래스를 상속하는 것은 코드 수정 및 이해를 어렵게 함상속은 부모..