일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 의존성
- 컴파일 타임 의존성
- 유여난 설계
- OOP
- 객체지향
- 오브젝트
- 믹스인
- Apple # HIG #iOS15 #iOS14 #Human #Interface #Guidelines #Apple developer # Apple human interface guidelines
- 일관성 있는 협력
- Swift#flatMap#map#Monad#함수형 프로그래밍#Optional
- '기존 설계 재사용
- 상속
- 다형성
- 런타임 의존성
- 설계 재사용
- OCP
- 행동 호환성
- 명령-쿼리 분리
- 알고리즘
- 유연한 설계
- dip
- 메서드를 통한 해결
- 합성
- 객체 생성 사용 분리
- 추상화
- 서브 타이핑
- 상속 조합 폭발적 증가
- 책임주도설계
- 하향식 접근
- iSP
- Today
- Total
목록OOP (25)
도니의 iOS 프로그래밍 세상
객체 협력 구조가 기존과 다를 때, 코드의 이해도가 낮아지고 코드 수정시 더 많은 버그를 유발하게 된다.따라서 객체간 일관성 있는 협력 방식을 사용하여, 유사 기능엔 유사한 협력 패턴을 사용해야 한다.설계 일관성변하는 개념, 변하지 않는 개념을 분리변하는 개념을 캡슐화 하는 게 중요캡슐화는 변화는 어떤것을 감추는 것(데이터 은닉만을 포함하지 않음)결론일관성 있는 협력을 통해, 다른 사람들과 협업시 코드 이해도를 높이고 버그 가능성을 줄일 수 있음캡슐화약간의 부조화를 수용하더라도, 서비스 내에 일관성 있는 패턴을 지키는게 더 중요하다ex. 인터페이스에 객체중 한곳에서 특정 로직을 수행해야 함해당 객체의 역할상 특정 로직을 수행한다는게 초기 의도와 다름하지만 그렇더라도, 각 서비스들의 책임이 올바르게 동작한..
LSP서브 타입과 서브 클래스가 부모 클래스, 상위 타입 대체가 가능 해야함불가능한 예시직사각형, 정사각형현실에서는 정사각형은 직사각형의 한 종류 지만, 동작이 달라 상속이 불가능 함why? 정사각형은 높이를 변경하면, 너비도 함께 바뀜(따라서, 두 사각형의 높이를 변경했을 때 넓이의 변화가 다름(직사각형은 높이만큼, 정사각형은 변경된 높이의 제곱만큼 영향을 받음)따라서 클라이언트의 가정에 따라 부모 클래스 가정을 세우고 맞게 처리해야 함is-a 관계는 클라의 입장에서 고려, 자식 객체가 부모 객체의 행동을 대체할 수 있어야 함(속성은 필요X)LSP의 효과유연한 설계(어떤 자식 클래스과도 안정적으로 협력이 가능)OCP를 위한 전제 조건why? 위반시엔 자식 클래스를 추가할 때마다 문제가 발생하기 때문계약..
밑의 내용은 “오브젝트” 도서를 읽고 본인이 이해한 내용을 정리한 글입니다. 실제 내용과 다를 수 있습니다.목차상속의 두 가지 목적타입서브 클래싱과 서브 타이핑결론1. 상속의 두가지 목적메인 목적은 타입 계층 구현, 이는 객체들간에 관계에 기반하여 확장에 유연한 설계를 가능하게 함동일한 메세지를 다르게 동작 하는 것이 다형적 계층에 기반타입 계층 구현부모는 일반화, 자식은 특수화코드 재사용코드 재사용은, 부모와 자식간의 강한 Coupling을 만들기 때문에 주의부수적인 효과로 생각하는게 더 유익2. 타입1. 프로그래밍적 관점타입에 수행되는 유효한 오퍼레이션 집합Int에선 + 가 덧셈, String에서는 문자열 연결오퍼레이션에 대한 유효한 문맥 제공(약속된 문맥 제공이 원문)Integer 값 덧셈을 위해선..
밑의 내용은 “오브젝트” 도서를 읽고 본인이 이해한 내용을 정리한 글입니다. 실제 내용과 다를 수 있습니다. 의존성객체 지향 설계에서, 객체간 협력은 필수적이나 과도하게 많은 협력은 추후 변경을 어렵게 한다.객체간의 협력은 객체간 정보를 가지고 있어야 하며, 이는 의존성이라고 부른다.잘못된 의존성은 유연한 설계를 방해하는 요소이다.1. 의존성의 이해의존성 전이캡슐화 여부에 따라 의존성이 전이된다.ex. PeriodCondition → Screening → Movie으로 의존성 구조이때, Screening이 캡슐화를 올바르게 처리하지 않으면 PeriodCondition은 Move에 의존하는 구조를 가질 가능성이 매우 높음의존성 해결 방법객체 생성 시점에 생성자에 의존성 주입객체 생성후 의존성 주입→ 생성 ..
밑의 내용은 “오브젝트” 도서를 읽고 본인이 이해한 내용을 정리한 글입니다. 실제 내용과 다를 수 있습니다. 추상화 문제 해결의 핵심만 남기는 작업 핵심을 남기기 어렵다면, 문제의 크기를 더욱 작은 문제의 단위로 나누는 작업인 분해를 실행 목차 Procedure 추상화, Data 추상화 Procedure 추상화의 문제점 ADT(Abstract Data Type) 결론 1. Procedure 추상화, Data 추상화 추상화의 두가지 종류 프로시저 추상화는 무엇을 해야 하는지에 대한 추상화 이전에 배웠던 대로 메서드를 통해서 추상화 하는 방식(ex. 가격을 계산하라) 데이터 추상화는 무엇을 알아야 하는지에 대한 추상화 이전과 달리, 메서드가 아닌 struct등이 추상화 됨 이전 추상화는 대부분 메서드의 추상..