일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- '기존 설계 재사용
- 유여난 설계
- 서브 타이핑
- 합성
- 설계 재사용
- 추상화
- 하향식 접근
- 객체 생성 사용 분리
- 상속 조합 폭발적 증가
- 오브젝트
- 메서드를 통한 해결
- 일관성 있는 협력
- Swift#flatMap#map#Monad#함수형 프로그래밍#Optional
- 유연한 설계
- iSP
- OOP
- 컴파일 타임 의존성
- 의존성
- Apple # HIG #iOS15 #iOS14 #Human #Interface #Guidelines #Apple developer # Apple human interface guidelines
- 책임주도설계
- 명령-쿼리 분리
- 알고리즘
- 믹스인
- 상속
- 행동 호환성
- Today
- Total
목록객체지향 (5)
도니의 iOS 프로그래밍 세상
유연하게 대응할 수 있는 설계를 만드는 원칙 중 하나인 OCP(Open-Closed Principle)에 대해 알아보자.Chap01. OCP소프트웨어 개체(클래스, 모듈, 함수)는 확장에 열려 있고, 수정에 닫혀 있어야 한다.확장에 대해 열려있다: 애플리케이션 요구 사항 변경시, 변경에 맞게 새로운 동작을 추가해서 기능을 확장할 수 있다.수정에 닫혀 있다: 기존 “코드”를 수정하지 않고, 애플리케이션 동작을 추가하거나 변경할 수 있다.이는 결국 추상화를 의미한다. 추상화 과정을 거쳐 문맥이 바뀌더라도 변하지 않는 부분만 남고, 변하는 부분은 생략된다.런타임 때 의존성이 변경되도록 구현하면 된다.결국, 문맥이 바뀌더라도 변하지 않는 부분을 추상화하고, 변하는 부분이 수정할 수 있도록 하는 것이 핵심ex. ..
1. 영화 예매 시스템결국 프로그래밍에서 중요한 건 용어를 알맞게 정의하는 것책에서 영화 예매 프로그램을 구현하기 전, 영화와 상영의 정의를 나누고 있음우리가 일반적으로 예매하는 건, 영화가 아닌 상영(특정 시간에 상영되는 영화)영화는 단순히 실제 영화 정보를 담고 있음이게 실제 세계와 맞는지 중요하지 않고, 해당 프로그램을 만들 때 이렇게 정의한 게 중요2. 객체지향 프로그래밍을 향해객체, 클래스, 협력객체 지향 프로그래밍의 본질은 객체(not class)객체 지향에 핵심 두가지어떤 객체가 필요한가?이를통해, 해당 객체에 필요한 state(속성)과 행동(behavior)를 정의객체는 협력하는 공동체의 일원(not 독립적 존재)객체를 협력의 대상으로 봄으로써, 유연하고 확장 가능하게 만듦클래스, 도메인도..
들어가기 전패러다임(paradigm)은 특정 학문, 분야, 또는 시스템에서 특정한 시각이나 접근 방식그중 프로그래밍 패러다임은, 프로그래밍에서 쓰일수 있는 유용한 방법론들의 모음이라고 생각함객체지향 패러다임, 함수형 패러다임, 절차형 패러다임등 다양한 패러다임을 배우고 이를 적용하는게 가장 좋은듯실제로 객체지향 패러다임에, 함수형을 적절하게 섞어 더욱 가독성 있고 이해하기 쉬운 코드를 짤수 있는 것 처럼!티켓 판매 어플리케이션 구현기존 설계 방식커플링이 굉장히 심한 구조Theater(클래스)외에 다른 세가지 클래스가 데이터만 갖고 있는 형태절차 지향적 방식이라는 말은 이해하지 못했으나, 결국 클래스의 ㅛ책임이 한쪽에 집중된 구조캡슐화없이 Theater가 클래스의 모든 데이터 구조 및 함수를 알고 있는 구..
밑의 내용은 “오브젝트” 도서를 읽고 본인이 이해한 내용을 정리한 글입니다. 실제 내용과 다를 수 있습니다.목차상속의 두 가지 목적타입서브 클래싱과 서브 타이핑결론1. 상속의 두가지 목적메인 목적은 타입 계층 구현, 이는 객체들간에 관계에 기반하여 확장에 유연한 설계를 가능하게 함동일한 메세지를 다르게 동작 하는 것이 다형적 계층에 기반타입 계층 구현부모는 일반화, 자식은 특수화코드 재사용코드 재사용은, 부모와 자식간의 강한 Coupling을 만들기 때문에 주의부수적인 효과로 생각하는게 더 유익2. 타입1. 프로그래밍적 관점타입에 수행되는 유효한 오퍼레이션 집합Int에선 + 가 덧셈, String에서는 문자열 연결오퍼레이션에 대한 유효한 문맥 제공(약속된 문맥 제공이 원문)Integer 값 덧셈을 위해선..
밑의 내용은 “오브젝트” 도서를 읽고 본인이 이해한 내용을 정리한 글입니다. 실제 내용과 다를 수 있습니다. 의존성객체 지향 설계에서, 객체간 협력은 필수적이나 과도하게 많은 협력은 추후 변경을 어렵게 한다.객체간의 협력은 객체간 정보를 가지고 있어야 하며, 이는 의존성이라고 부른다.잘못된 의존성은 유연한 설계를 방해하는 요소이다.1. 의존성의 이해의존성 전이캡슐화 여부에 따라 의존성이 전이된다.ex. PeriodCondition → Screening → Movie으로 의존성 구조이때, Screening이 캡슐화를 올바르게 처리하지 않으면 PeriodCondition은 Move에 의존하는 구조를 가질 가능성이 매우 높음의존성 해결 방법객체 생성 시점에 생성자에 의존성 주입객체 생성후 의존성 주입→ 생성 ..