본문 바로가기

객체지향설계

코드스피츠 1강 오브젝트 5회차 책 오브젝트를 기반으로 하는 코드스피츠 강의 오브젝트 - 5회차 를 정리한 내용입니다. 1.코드스피츠 1강 오브젝트 1회차 (1) 2.코드스피츠 1강 오브젝트 1회차 (2) 3.코드스피츠 1강 오브젝트 2회차 4.코드스피츠 1강 오브젝트 3회차 5. 코드스피츠 1강 오브젝트 4회차 6. 코드스피츠 1강 오브젝트 5회차 7. 코드스피츠 1강 오브젝트 6회차 들어가기전 책의 6장에서 배운 내용을 정리해보자. 디미터의 법칙: 협력이라는 컨텍스트 안에서 객체보다 메시지를 먼저 결정하면 두 객체 사이의 구조적인 결합도를 낮출 수 있다. a().b().c() 헐리우드 원칙(묻지 말고 시켜라): 클라이언트 관점에서 메시지를 선택하기 때문에 필요한 정보를 물을 필요 없이 원하는 것을 표현한 메시지를 전송하면 된다. i.. 더보기
코드스피츠 1강 오브젝트 4회차 책 오브젝트를 기반으로 하는 코드스피츠 강의 오브젝트 - 4회차 를 정리한 내용입니다. 1.코드스피츠 1강 오브젝트 1회차 (1) 2.코드스피츠 1강 오브젝트 1회차 (2) 3.코드스피츠 1강 오브젝트 2회차 4.코드스피츠 1강 오브젝트 3회차 5. 코드스피츠 1강 오브젝트 4회차 6. 코드스피츠 1강 오브젝트 5회차 7. 코드스피츠 1강 오브젝트 6회차 객체 지향 설계에 실패하는 이유: 디미터, 헐리우드 원칙 위반 객체는 자신 스스로 상태를 관리하기 때문에 묻게 되면 필연적으로 영향을 받는다. SOLID 원칙 중 OCP, LSP 와 연관이 깊다. OCP, LSP 원칙을 지킬려면 헐리우드 원칙을 사용할 수 밖에 없다. 리스코프 치환원칙 자신형을 부모형으로 안전하게 대체할 수 있다. a, b, c 함수의 .. 더보기
코드스피츠 1강 오브젝트 3회차 책 오브젝트를 기반으로 하는 코드스피츠 강의 오브젝트 - 3회차 를 정리한 내용입니다. 1.코드스피츠 1강 오브젝트 1회차 (1) 2.코드스피츠 1강 오브젝트 1회차 (2) 3.코드스피츠 1강 오브젝트 2회차 4.코드스피츠 1강 오브젝트 3회차 5. 코드스피츠 1강 오브젝트 4회차 6. 코드스피츠 1강 오브젝트 5회차 7. 코드스피츠 1강 오브젝트 6회차 객체간 통신 나의 데이터는 "돈" 이지만 협력의 메시지로 전달될 때는 "급여지급", "용돈 주기" 의 다양한 양상으로 나타난다. 돈(속성) == 캡슐화된 데이터 은닉 (interface) == 아빠, 사장 책임(메소드) == 급여지급, 용돈 주기 돈(속성) == 캡슐화된 데이터 은닉 (interface) == 아들, 사원 책임(메소드) == 월급받기, .. 더보기
코드스피츠 1강 오브젝트 2회차 책 오브젝트를 기반으로 하는 코드스피츠 강의 오브젝트 - 2회차 를 정리한 내용입니다. 1.코드스피츠 1강 오브젝트 1회차 (1) 2.코드스피츠 1강 오브젝트 1회차 (2) 3.코드스피츠 1강 오브젝트 2회차 4.코드스피츠 1강 오브젝트 3회차 5. 코드스피츠 1강 오브젝트 4회차 6. 코드스피츠 1강 오브젝트 5회차 7. 코드스피츠 1강 오브젝트 6회차 이 포스트는 Java 예제를 Swift 예제로 바꿔서 다루고 있습니다. Type 데이터 타입은 메모리에서 얼만큼 차지하는 길이이다. (Bool, Int, Long ...) 하지만 객체지향의 타입 다르다! 객체지향의 Types Role: Type을 통해 역할을 묘사함 Responsibility: 알고리즘을 Type으로 표현 Message: 형을 통해 메시.. 더보기
코드스피츠 1강 오브젝트 1회차 (2) 책 오브젝트를 기반으로 하는 코드스피츠 강의 오브젝트 - 1회차 (2) 를 정리한 내용입니다. 1.코드스피츠 1강 오브젝트 1회차 (1) 2.코드스피츠 1강 오브젝트 1회차 (2) 3.코드스피츠 1강 오브젝트 2회차 4.코드스피츠 1강 오브젝트 3회차 5. 코드스피츠 1강 오브젝트 4회차 6. 코드스피츠 1강 오브젝트 5회차 7. 코드스피츠 1강 오브젝트 6회차 들어가기 앞서 오브젝트에서 말하는 책임과 SRP 의 책임은 다릅니다. 여기에서 먼저 확인해 주세요! Value & Identifier 특정 유형의 데이터를 값으로 볼것인가? 객체로 볼것인가? 필드 값으로 객체의 동등성을 평가한다면 더이상 객체가 아니다. 객체는 식별자를 통해서만 객체의 고유성을 평가해야만 한다. 협력자 객체를 받아왔다면 이 객체가.. 더보기
오브젝트 책임과 SOLID 단일 책임 원칙은 무엇이 다른가요? SOLID 단일 책임 원칙과 책 오브젝트와 책임이 어떻게 다른지 그 의미를 살펴보기 위하여 이 포스트를 작성하였습니다. 책 오브젝트 객체지향 설계의 핵심 3가지 중 역할, 책임, 협력에서 책임은 SOLID 단일 책임 원칙과 다르다고 합니다. 단일 책임 원칙은 변경과 관련된 더 큰 개념이라고 설명하고 있습니다. 객체지향 설계의 핵심에서의 책임 객체지향 설계의 핵심 역할 책임 협력 3가지 협력 애플리케이션의 기능을 구현하기 위해 메시지를 주고받는 객체들 사이의 상호작용 책임 객체가 다른 객체와 협력하기 위해 수행하는 행동 역할 대체 가능한 책임의 집합 아래 그림은 코드스피츠 83 오브젝트 - 3회차 에서 역할과 책임에 대한 설명을 캡쳐한 그림입니다. 객체가 다른 객체와 협력하기 위해 수행하는 행동이라는 의미.. 더보기
코드스피츠 1강 오브젝트 1회차 (1) 책 오브젝트를 기반으로 하는 코드스피츠 강의 오브젝트 - 1회차 (1) 를 정리한 내용입니다. 1.코드스피츠 1강 오브젝트 1회차 (1) 2.코드스피츠 1강 오브젝트 1회차 (2) 3.코드스피츠 1강 오브젝트 2회차 4.코드스피츠 1강 오브젝트 3회차 5. 코드스피츠 1강 오브젝트 4회차 6. 코드스피츠 1강 오브젝트 5회차 7. 코드스피츠 1강 오브젝트 6회차 Value 켄트벡이 개발자 세계에서 제시하는 3가지 가치 Communication Communication 이 잘되지 않으면 그만큼 비용이 발생한다. Simplicity 간단하게 코드를 짜라 Flexibility 유연성을 얻기 위해서는 간단하게 짜라! Principle 원칙을 다같이 지키고 있을때 그 효과를 발휘한다. 또, 불필요한 비용을 줄일 .. 더보기