본문 바로가기

객체지향설계

코드스피츠 2강 오브젝트 - 6회차 (Final) 책 오브젝트를 기반으로 하는 코드스피츠 강의 오브젝트2 - 6회차 를 정리한 내용입니다. 1. 코드스피츠 2강 오브젝트 - 1회차 2. 코드스피츠 2강 오브젝트 - 2회차(1) 3.코드스피츠 2강 오브젝트 - 2회차(2) 4.코드스피츠 2강 오브젝트 - 3회차 5.코드스피츠 2강 오브젝트 - 4회차 6.코드스피츠 2강 오브젝트 - 5회차 7.코드스피츠 2강 오브젝트 - 6회차 (Final) Testing 설계가 잘못되었다고 생각되어서 고쳤더니 고친 설계가 잘된건지 어떻게 알까? 고친 설계를 올바르다는 확신하는 Testing 도구가 필요하다. UnitTest 알고리즘 로직의 단위 테스트를 검증한다. 예) CenterLayoutArrangerTest.swift 화면 정 가운데에 정상적으로 배치하는지 검증한다.. 더보기
코드스피츠 2강 오브젝트 - 5회차 책 오브젝트를 기반으로 하는 코드스피츠 강의 오브젝트2 - 5회차 를 정리한 내용입니다. 1. 코드스피츠 2강 오브젝트 - 1회차 2. 코드스피츠 2강 오브젝트 - 2회차(1) 3.코드스피츠 2강 오브젝트 - 2회차(2) 4.코드스피츠 2강 오브젝트 - 3회차 5.코드스피츠 2강 오브젝트 - 4회차 6.코드스피츠 2강 오브젝트 - 5회차 7.코드스피츠 2강 오브젝트 - 6회차 (Final) 이전 강의 요약 Visitor 는 제어를 뺏고 행위만 남겨두는 것 Renderer 가 모든 제어를 가져가고 Visitor 는 행위만 공급하는 것 Framework 의 첫번째 단계인 제어를 역전 시키는 DI 하는데 성공했다. Visitor, Composite 를 사용하면 제어 역전을 통해서 제어 구문을 분리해낼 수 있다.. 더보기
코드스피츠 2강 오브젝트 - 3회차 책 오브젝트 14장를 기반으로 하는 코드스피츠 강의 오브젝트2 - 3회차 를 정리한 내용입니다. 1. 코드스피츠 2강 오브젝트 - 1회차 2. 코드스피츠 2강 오브젝트 - 2회차(1) 3.코드스피츠 2강 오브젝트 - 2회차(2) 4.코드스피츠 2강 오브젝트 - 3회차 5.코드스피츠 2강 오브젝트 - 4회차 6.코드스피츠 2강 오브젝트 - 5회차 7.코드스피츠 2강 오브젝트 - 6회차 (Final) 이 포스트는 Java 예제를 Swift 예제로 바꿔서 다루고 있습니다. 설계의 일관성 알고리즘: 어떠한 문제는 변수와 제어를 통해서 순차적으로 처리해 나가는 과정 설계: 알고리즘 코드를 적절하게 배치하는 것 알고리즘이 다양한 형태를 가짐에도 불구하고 일관성있게 배치가 되었다는 뜻이다. 왜 코드를 일관성있게 짜야.. 더보기
코드스피츠 2강 오브젝트 - 4회차 책 오브젝트 14장를 기반으로 하는 코드스피츠 강의 오브젝트2 - 4회차 를 정리한 내용입니다. 1. 코드스피츠 2강 오브젝트 - 1회차 2. 코드스피츠 2강 오브젝트 - 2회차(1) 3.코드스피츠 2강 오브젝트 - 2회차(2) 4.코드스피츠 2강 오브젝트 - 3회차 5.코드스피츠 2강 오브젝트 - 4회차 6.코드스피츠 2강 오브젝트 - 5회차 7.코드스피츠 2강 오브젝트 - 6회차 (Final) 이 포스트는 Java 예제를 Swift 예제로 바꿔서 다루고 있습니다. Library와 Framework 차이점? Framework 라고 말할 수 있다면 제어 역전이 되어 있는지 아닌지? 를 보면 알 수 있다. 제공한 메서드가 어느 시점에 호출될지를 우리가 결정하지 못한다. 이 제어를 Framework 에서 담.. 더보기
코드스피츠 2강 오브젝트 - 2회차(2) 책 오브젝트 13장를 기반으로 하는 코드스피츠 강의 오브젝트2 - 2회차 (2) 를 정리한 내용입니다. 1. 코드스피츠 2강 오브젝트 - 1회차 2. 코드스피츠 2강 오브젝트 - 2회차(1) 3.코드스피츠 2강 오브젝트 - 2회차(2) 4.코드스피츠 2강 오브젝트 - 3회차 5.코드스피츠 2강 오브젝트 - 4회차 6.코드스피츠 2강 오브젝트 - 5회차 7.코드스피츠 2강 오브젝트 - 6회차 (Final) 계약의 전파 Precondition 을 검증해야 한다는 로직이 있을 때 메시지 체인마다 Precondition 검증을 해야하는지? 중복코드가 발생하고 Dry 원칙을 위반하게 된다. 메시지 체인에 계약을 유지시킬수 있는 방법이 없는가? 생성자에 Null 이 들어올수 있기 때문에 Invariant 검증을 하.. 더보기
코드스피츠 2강 오브젝트 - 1회차 책 오브젝트 11장를 기반으로 하는 코드스피츠 강의 오브젝트2 - 1회차 를 정리한 내용입니다. 1. 코드스피츠 2강 오브젝트 - 1회차 2. 코드스피츠 2강 오브젝트 - 2회차(1) 3.코드스피츠 2강 오브젝트 - 2회차(2) 4.코드스피츠 2강 오브젝트 - 3회차 5.코드스피츠 2강 오브젝트 - 4회차 6.코드스피츠 2강 오브젝트 - 5회차 7.코드스피츠 2강 오브젝트 - 6회차 (Final) 책의 방향 소개 책의 내용에서 전반부는 SOLID 원칙이나 SOLID 원칙을 확장한 내용을 가지고 설명하지만 후반부는 JVM, C++ Compiler 가 어떻게 객체지향 언어를 결과를 내는지와 그 시스템을 어떻게 이용해서 객체지향을 구현하는지 다루고 있다. 주 내용은 Pointer of Pointer 이다. 직.. 더보기
코드스피츠 2강 오브젝트 - 2회차(1) 책 오브젝트 13장를 기반으로 하는 코드스피츠 강의 오브젝트2 - 2회차 (1) 를 정리한 내용입니다. 1. 코드스피츠 2강 오브젝트 - 1회차 2. 코드스피츠 2강 오브젝트 - 2회차(1) 3.코드스피츠 2강 오브젝트 - 2회차(2) 4.코드스피츠 2강 오브젝트 - 3회차 5.코드스피츠 2강 오브젝트 - 4회차 6.코드스피츠 2강 오브젝트 - 5회차 7.코드스피츠 2강 오브젝트 - 6회차 (Final) 계약 (Contract) 프로그램에서는 메시지를 통해서 계약을 성립하게 된다.  전달받은 메시지의 규격을 지키고 있어야 한다. (precondition) Receiver 가 메시지를 검증하는 것을 기본적으로 정책으로 삼고있다. 전달할 메시지의 규격 (postcondition) Receiver 가 값을 .. 더보기
코드스피츠 1강 오브젝트 6회차 책 오브젝트를 기반으로 하는 코드스피츠 강의 오브젝트 - 6회차 를 정리한 내용입니다. 1.코드스피츠 1강 오브젝트 1회차 (1) 2.코드스피츠 1강 오브젝트 1회차 (2) 3.코드스피츠 1강 오브젝트 2회차 4.코드스피츠 1강 오브젝트 3회차 5. 코드스피츠 1강 오브젝트 4회차 6. 코드스피츠 1강 오브젝트 5회차 7. 코드스피츠 1강 오브젝트 6회차 합성과 의존성 디자인 패턴으로 가장 쉽게 합성과 상속의 차이점을 알아보는 방법은 Template method, strategy 각 패턴이 문제를 해결하는 방식을 알아보는 것이다. 객체망을 구성하면서 객체간의 의존성이 생긴다는 것이다. 의존성을 적절하게 맺는 방법은 양방향 참조가 되지 않도록 하는 것이다. Template method pattern 일반적.. 더보기