일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 믹스인
- 하향식 접근
- 설계 재사용
- 합성
- 다형성
- 메서드를 통한 해결
- dip
- 상속
- OCP
- 책임주도설계
- 오브젝트
- 객체 생성 사용 분리
- 일관성 있는 협력
- iSP
- 유연한 설계
- 상속 조합 폭발적 증가
- 객체지향
- Swift#flatMap#map#Monad#함수형 프로그래밍#Optional
- Apple # HIG #iOS15 #iOS14 #Human #Interface #Guidelines #Apple developer # Apple human interface guidelines
- 컴파일 타임 의존성
- 유여난 설계
- 의존성
- 명령-쿼리 분리
- 추상화
- OOP
- 행동 호환성
- 서브 타이핑
- 알고리즘
- 런타임 의존성
- '기존 설계 재사용
- Today
- Total
목록다형성 (4)
도니의 iOS 프로그래밍 세상
상속의 타입 계층을 구조화 하기 위해 사용하는 것이지 코드 재사용이 아님1. 다형성서브타입 다형성은 메세지가 동일하더라도 수신한 객체의 타입에 따라 실제 수행되는 행동이 달라지는 것우리가 부르는 다형성은 일반적으로 서브타입 다형성 의미상속은 다형성을 위한 서브타입 계층을 구축하여, 런타임에 상속 계층 안에서 적절한 메서드 선택을 가능하게 함2. 상속의 양면성객체 지향 패러다임의 아이디어는 객체라고 불리우는 실행 단위 안으로 데이터와 행동을 통합하는 것데이터와 행동 관점에서만 바라본다면, 상속이란 부모 클래스의 데이터와 행동을 자식 클래스와 자동적으로 공유할 수 있는 메카니즘진정한 목적은 타입 계층을 구조화 하는 것3. 업캐스팅과 동적 바인딩같은 메시지, 다른 결과업캐스팅이란 부모 클래스 타입으로 선언된 ..
데이터 중심의 문제는 객체에 상태에 초점을 맞추기 때문에, 변경등에 취약함따라서 책임에 초점을 맞추도록 해야하지만, 실제로 어떤 객체에 책임을 할당하지 정하는게 쉽지 않음→ 올바른 책임 할당을 위해 Grasp 패턴을 적용1. 책임 주도 설계를 향해데이터 중심에서 책임 주도 설계로의 전환을 위한 두가지 원칙데이터 보다 행동을 먼저 결정협력이라는 문맥 안에서 책임을 결정데이터 보단 행동을 먼저 결정객체에서 중요한 건 데이터가 아닌, 외부에 제공하는 행동(이것이 곧 “책임”)객체가 수행할 책임을 먼저 결정하고, 필요한 데이터가 무엇인지 결정협력이라는 문맥 안에서 책임을 결정책임의 품질은 협력에 적합한 정도로 결정메세지 전송 클라이언트 의도에 적합한 책임을 할당메세지 수신자에 대한 가정을 하지 않기 때문에, 수..
상속의 목적은 타입 계층을 구조화(not 코드 재사용!)타입 계층은 다형성의 기반을 제공함Chap01. 다형성오버로딩 다형성함수의 이름은 동일하나, 서로 다른 파라미터class Bank { func withdraw(won: WON) func withdraw(dollar: Dollar) } 2. 강제 다형성언어가 지원하는 자동 타입 변환 및 사용자 직접 타입변환을 통해 사용하는 방식ex. + 정수일떈 값을 더함, 문자열은 append 시킴3. 포함 다형성메시지는 동일하고, 수신 객체 타입에 따라 실제 수행되는 행동이 달라지는 것subtype 다형성Chap02. 상속의 양면성객체지향 아이디어의 근거는 데이터와 행동을 객체라는 하나의 실행 단위로 통합하는 것상속은 결국 부모의 데이터와 행동이 자식에 포함되..
1. 영화 예매 시스템결국 프로그래밍에서 중요한 건 용어를 알맞게 정의하는 것책에서 영화 예매 프로그램을 구현하기 전, 영화와 상영의 정의를 나누고 있음우리가 일반적으로 예매하는 건, 영화가 아닌 상영(특정 시간에 상영되는 영화)영화는 단순히 실제 영화 정보를 담고 있음이게 실제 세계와 맞는지 중요하지 않고, 해당 프로그램을 만들 때 이렇게 정의한 게 중요2. 객체지향 프로그래밍을 향해객체, 클래스, 협력객체 지향 프로그래밍의 본질은 객체(not class)객체 지향에 핵심 두가지어떤 객체가 필요한가?이를통해, 해당 객체에 필요한 state(속성)과 행동(behavior)를 정의객체는 협력하는 공동체의 일원(not 독립적 존재)객체를 협력의 대상으로 봄으로써, 유연하고 확장 가능하게 만듦클래스, 도메인도..