반응형

오브젝트 5

[엘레강트 오브젝트] 4-3장 final이나 abstract이거나

이 글은 엘레강트 오브젝트 새로운 관점에서 바라본 객체지향 도서를 보며 스터디한 글입니다. 책에서 주장하는 내용을 정리하였으며 예제들은 모두 코틀린 코드로 변환하여 작성하였습니다. 목차 잘못된 상속 클래스의 신분 올바른 설계 결론 1. 잘못된 상속 상속은 매우 강력한 기능입니다. 하지만 상속을 잘못 사용한다면 문제를 일으킬 수 있습니다. 문제를 일으키는 원인은 가상 메서드입니다. 코드로 살펴보겠습니다. open class Document { fun length(): Int { return content().length } open fun content(): String { // read document // load byte array return "" } } 위 코드와 같은 Document 클래스가 있..

Study/object 2021.10.13

[엘레강트 오브젝트] 2-6장 불변 객체로 만드세요

이 글은 엘레강트 오브젝트 새로운 관점에서 바라본 객체지향 도서를 보며 스터디한 글입니다. 책에서 주장하는 내용을 정리하였으며 예제들은 모두 코틀린 코드로 변환하여 작성하였습니다. 목차 불변이란? 식별자 가변성(Identity Mutability) 실패 원자성(Failure Atomicity) 시간적 결합(Temporal Coupling) 부수효과 제거(Side effect-free) NULL 참조 없애기 스레드 안정성 더 작고 더 단순한 객체 주관적인 생각 1. 불변이란? Immutable, 즉 변경할 수 없음을 의미합니다. 예시로 살펴보겠습니다. 가변 객체 먼저 가변 객체는 내부 속성값을 변경이 가능한 객체입니다. // 가변 객체 class Cash( private var dollars: Int ) ..

Study/object 2021.08.31

[엘레강트 오브젝트] 2-5장 퍼블릭 상수(Public Constant)를 사용하지 마세요

이 글은 엘레강트 오브젝트 새로운 관점에서 바라본 객체지향 도서를 보며 스터디한 글입니다. 책에서 주장하는 내용을 정리하였으며 예제들은 모두 코틀린 코드로 변환하여 작성하였습니다. 목차 퍼블릭 상수 결합도 증가 응집도 저하 개선 클래스의 단위를 최소화하자 결론 주관적인 생각 1. 퍼블릭 상수 상수(Constant) 는 public static final 로 선언되며 객체 사이에서 데이터를 공유하기 위해 사용되는 메커니즘입니다. 하지만 객체지향에서는 객체들 간의 어떤 것도 공유해서는 안됩니다. 예제를 통해 살펴보겠습니다. 올바른 예 class Records( private val records: MutableList ) { companion object { private const val EOL = "\r..

Study/object 2021.08.21

[엘레강트 오브젝트] 2-2장 최소한 뭔가는 캡슐화하세요

이 글은 엘레강트 오브젝트 새로운 관점에서 바라본 객체지향 도서를 보며 스터디한 글입니다. 책에서 주장하는 내용을 정리하였으며 예제들은 모두 코틀린 코드로 변환하여 작성하였습니다. 토론하기 아무것도 캡슐화하지 않은 클래스 정적 메서드와 동일하며 객체지향 프로그램 관점에서는 잘못된 설계입니다. class Year { fun read() = System.currentTimeMillis() / (1000 * 60 * 60 * 24 * 30 * 12) - 1970 } 예제에서 클래스의 모든 객체는 동일 아무런 상태를 가지고 있지 않으며 행동만을 포함 read() 메서드에서 정적 메서드를 사용 ( 순수한 OOP에서는 정적 메서드를 사용하지 않음 ) 실행으로 부터 인스턴스 생성 고립 생성자에서만 new 연산자를 허..

Study/object 2021.08.16
728x90
반응형