본문 바로가기
[책 정리] 9장. LSP(Liskov Substitution Principle): 리스코프 치환 원칙 - Clean Architecture - 리스코프는 하위 타입(subtype)을 아래와 같이 정의했다. "여기에서 필요한 것은 다음과 같은 치환(substitution)원칙이다. S 타입의 객체 o1 각각에 대응하는 T타입 객체 o2 가 있고, T타입을 이용해서 정의한 모든 프로그램 P 에서 o2 의 자리에 o1 을 치환하더라도 P 의 행위가 변하지 않는다면, S는 T의 하위 타입이다." 상속을 사용하도록 가이드하기 - 사용자가 Interface 를 바라보면서 어떤 하위타입이 사용되는지에 의존하지 않는다면 이것은 LSP 를 준수한다고 볼 수 있다. 정사각형/직사각형 문제 - LSP 를 위반하는 전형적인 문제로는 유명한 정사각형/직사각형 문제가 있다. Squre 가 Rectangle 을 상속하는 경우.. Rectangle r = ... r.s.. 2020. 4. 13.
[Effective Unit Testing] Chap7. 테스트 가능 설계 [Effective Unit Testing] Chap7. 테스트 가능 설계 7.1. 테스트 가능 설계란? -테스트 가능 설계의 가장 큰 의의는 당연히 코드를 더 잘 테스트할 수 있도록 해준다는 것이다. -테스트 용이성(testability)이란 테스트할 수 있는 소프트웨어냐 아니냐를 설명하는 용어가 아니다.그보다는 소프트웨어를 멀마나 쉽게 테스트할 수 있느냐를 평가하는 용어다.단위 테스트를 위한 시나리오 준비는 식은 죽 먹기여야 한다.테스트 용이성이 떨어질수록 테스트를 작성하는 프로그래머의 부담이 커진다. 7.1.1. 모듈러 설계 -제품은 특정 역할을 담당하는 독립 모듈로 구성된다는 그 본질만 잘 반영하면 자연스럽게 모듈러 설계가 만들어진다.제품의 전체 기능을 뚜렷한 역할로 나누고 그 역할 각각을 독립된.. 2019. 3. 17.
[Objective-C] 추상 클래스와 클래스 클러스터 [Objective-C] 추상 클래스와 클래스 클러스터 출처 : OS X 구조를 이해하면서 배우는 Objective-C Chap 11. Notice : 정리자(돼지왕 왕돼지)가 remind 하고 싶은 내용이나 모르는 내용 기반으로 정리하는 것이기 때문에 구체적인 내용은 책을 사서 보시기를 권장드립니다. 11.1. 추상 클래스 * 11.1.1. 추상 클래스란 -Objective-C 에는 인스턴스를 생성할 수 있는 일반 클래스와 추상 클래스를 구별해서 정의하는 특별한 언어적 구조가 없다.Objective-C 에서 추상 클래스라는 용어는 개념적으로만 존재한다. -다른 객체지향 언어는 virtual, abstract 등의 키워드를 사용해서 추상 클래스를 나타내는 수단이 있다.Objective-C 에서는 추상 클.. 2018. 1. 3.
[Objective-C] 카테고리 [Objective-C] 카테고리 출처 : OS X 구조를 이해하면서 배우는 Objective-C Chap 10. Notice : 정리자(돼지왕 왕돼지)가 remind 하고 싶은 내용이나 모르는 내용 기반으로 정리하는 것이기 때문에 구체적인 내용은 책을 사서 보시기를 권장드립니다. 10.1. 카테고리 선언과 정의 * 10.1.1. 카테고리란 -카테고리는 클래스와 마찬가지로 인터페이스로 선언하고, 구현 부분에 그 정의를 기술한다.단, 인스턴스 변수를 선언할 수는 없으며, 카테고리는 메서드만 포함한다.메서드는 인스턴스 메서드와 클래스 메서드 양쪽 다 가능하다. -카테고리 구현 부분에도 인스턴스 변수를 선언할 수 없다.메서드 정의에서는 그 클래스의 다른 메서드를 호출하거나 인스턴스 변수에 자유롭게 접근할 수 .. 2018. 1. 2.
[Objective-C] 상속과 클래스 [Objective-C] 상속과 클래스 출처 : OS X 구조를 이해하면서 배우는 Objective-C Chap 3. Notice : 정리자(돼지왕 왕돼지)가 remind 하고 싶은 내용이나 모르는 내용 기반으로 정리하는 것이기 때문에 구체적인 내용은 책을 사서 보시기를 권장드립니다. 3.1. 상속 개념 * 3.1.1. 슈퍼 클래스와 서브 클래스 * 3.1.2. 클래스 계층 -Cocoa 환경에는 루트 클래스로 NSObject 클래스가 있어서 다른 모든 클래스가 직접 또는 간접적으로 NSObject 클래스를 상속한다.(NSProxy 라는 또 다른 루트 클래스가 있다.) -객체지향 언어는 이렇게 루트 클래스가 오직 하나인 언어와 여러 개인 언어가 있다.C++ 는 루트 클래스가 여러 개이다.루트 클래스가 오직.. 2017. 12. 25.
[Effective Objective-C] #47 시스템 프레임워크를 숙지하라 [Effective Objective-C] #47 시스템 프레임워크를 숙지하라 출처 : Effective Objective-C -시스템 프레임워크가 없어도 오브젝티브-C 를 사용할 수 있지만 그런 일은 매우 드물다.표준 최상위 클래스 NSObject 조차도 언어에 포함되어 있는 것이 아니라 Foundation 프레임워크에 포함되어 있다.Foundation 을 쓰는 것을 원하지 않으면 자신만의 최상위 클래스 뿐 아니라 자신만의 컬렉션, 이벤트 루프, 다른 유용한 클래스를 직접 만들어야 한다.게다가 시스템 프레임워크 없이 맥 OS X 와 iOS 앱을 오브젝티브-C 로 개발할 수 없다. -어떤 시스템 프레임워크가 있는지 모른다면 이미 만들어진 것도 또 다시 직접 모두 작성해야 할 것이다. -프레임워크는 동적 .. 2017. 10. 14.
[도서 목차 정리] Kotlin in action [도서 목차 정리] Kotlin in action Kotlin in action 을 공부하면서 정리한 내용입니다.Java 를 어느 정도 이해하고 숙달한 사람들이 이해하기 좋습니다.Java 와 동일하거나 너무 당연한 기본적인 내용은 정리하지 않았습니다. Kotlin 소개 - Kotlin : what and why Kotlin 기초 #1 - Chap2. Kotlin basics Kotlin 기초 #2 - Chap2. Kotlin basics 함수 정의하고 호출하기 #1 - Chap 3. Defining and calling functions 함수 정의하고 호출하기 #2 클래스, objects, 그리고 인터페이스 #1 - Chap4. Classes, objects, and interfaces 클래스, obje.. 2017. 9. 25.
[Effective Objective-C] #28 프로토콜을 이용해 익명 객체를 제공하라. [Effective Objective-C] #28 프로토콜을 이용해 익명 객체를 제공하라. 출처 : Effective Objective-C -프로토콜은 프로토콜을 따르는 객체가 구현할(또는 선택(optional)이 아니라면 반드시 구현해야 할) 메서드들을 정의한다.프로토콜은 API 의 자세한 구현 내용을 숨기기 위해 사용할 수 있는데, 그 방법은 반환하는 객체를 프로토콜을 따르는 평범한 id 타입으로 반환하는 것이다.이 방법을 쓰면 특정 클래스 이름이 API 에 노출되지 않는다.이는 인터페이스 뒤편에 수많은 종류의 클래스가 있고 그 모든 클래스를 명시하고 싶지 않을 때 유용하다.다른 말로 하면 하나의 공통 기초 클래스(common base class) 타입으로 반환해야 하는 API 에서 반환해야 할 클래.. 2017. 9. 12.
[편의점 간식] 참치마요 비빔면 & 거꾸로 수박바 도전!! [편의점 간식] 참치마요 비빔면 & 거꾸로 수박바 도전!! 0936 / 0947 점심을 부실하게 먹은 파트원들이 오후 5시쯤 되니깐 간식 먹으러 가자고 합니다.뭐 먹을까 고민하며 돌아다니다가 편의점에 가서 컵라면을 먹기로 합니다. 그래서 CU 편의점으로 고고~ 거기서 제가 발견한 "참치마요 비빔면" ㅋㅋㅋ 제가 또 새로운 거 도전하는 데 선수잖습니까?맛이 은근 기대됩니다.뭔가 크림 스파게티 같을 것 같은 느낌이랄까? 안쪽에는 2개의 스프 봉지가 들어있습니다.하나는 후첨토핑, 하나는 비빔소스입니다. 음.. 둘 다 동시에 넣고 비비는건가?설명을 읽어봅시다. 먼저 면을 익히고, 비빔소스를 넣고 비벼준 다음 마지막에 후첨토핑을 뿌려 먹으면 된다고 한다.시키는 데로 해야 맛나겠지? 좋아! 물 받아와서 익기까지 기.. 2017. 9. 5.
반응형