본문 바로가기
반응형

객체5

[엘레강트 오브젝트] 3.5 절대 getter와 setter를 사용하지 마세요 이 내용은 엘레강트 오브젝트 를 읽으면서 정리한 내용을 포함하고 있습니다. getter와 setter 정리 관련해서 생각해볼 내용 getter와 setter getter와 setter의 형태는 다음과 같다. class Cash { private int dollars; public int getDollars() { return this.dollars; } public void setDollars(int value) { this.dollars = value; } } 위 클래스는 다음과 같은 문제점이 있다. 이 클래스는 가변이고, 두 개의 메서드는 이름이 잘못 지어졌고, 생성자도 없다. 가변성, 메서드 이름, 생성자가 하나도 없다는 사실보다 더 큰 문제는 해당 클래스는 단순한 자료구조이다. 객체 대 자료구조 .. 2023. 3. 22.
[엘레강트 오브젝트] 2.2 최소한 뭔가는 캡슐화하세요 이 내용은 엘레강트 오브젝트 를 읽으면서 정리한 내용을 포함하고 있습니다. 다음 목차로 진행합니다. 캡슐화 연습해보기 실습 정리 캡슐화 프로퍼티가 없는 클래스는 객체지향 프로그래밍에서 정적 메소드와 유사 아무것도 캡슐화하지 않는 방식은 바람직하지 않다. 이러한 클래스들은 아무런 상태와 식별자도 가지지 않고 오직 행동만을 포함한다. 연습해보기 실행으로부터 인스턴스 생성을 고립시켜야 한다. 오직 생성자에서만 new 연산자를 허용해야 한다. 좌표가 없는 객체는 무언가를 캡슐화해야 한다. 객체는 자기 자신을 식별할 수 있도록 다른 객체들을 캡슐화해야 한다. 실습 로또 예를 들어서 확인해보도록 하겠다. 로또 6개의 번호 중 하나의 번호를 책임지는 객체가 있다. 아래와 같은 객체는 필요할까? 해당 객체는 식별자나 .. 2023. 3. 1.
[엘레강트 오브젝트] 2.1 가능하면 적게 캡슐화하세요 이 내용은 엘레강트 오브젝트 를 읽으면서 정리한 내용을 포함하고 있습니다. 다음 목차로 진행합니다. 객체의 캡슐화 객체의 집합체 연습해보기 관련해서 참고해볼 내용 객체의 캡슐화 내부에 캡슐화된 객체 전체를 가리켜 객체의 상태(state) 또는 식별자(identity) 아래는 Cash의 상태 또는 식별자를 나타내는 필드로, Cash의 집합체 class Cash { private Integer digits; private Integer cents; private String currency; } 동일한 값의 달러, 센트, 통화를 캡슐화하는 Cash 클래스의 두 객체는 서로 동일합니다. Cash x = new Cash(29, 95, "USD"); Cash y = new Cash(29, 95, "USD"); a.. 2023. 3. 1.
[엘레강트 오브젝트] 1.3 생성자에 코드를 넣지 마세요 이 내용은 엘레강트 오브젝트 를 읽으면서 정리한 내용을 포함하고 있습니다. 다음 목차로 진행합니다. 생성자의 역할 생성자의 코드가 없어야 하는 이유 생성자의 역할 생성자는 객체의 초기화를 시작하는 장소 초기화 시 생성자안에는 코드가 없어야 하고 인자를 건드려서는 안된다. 코드가 필요하다면 인자들을 다른 타입의 객체로 감싸거나 가공하지 않은 형식으로 캡슐화한다. 생성자는 코드가 없어야하고 오직 할당문만 포함해야 한다. 생성자의 코드가 없어야 하는 이유 문자열을 정수로 파싱하는 클래스가 있다고 가정하고 예시를 통해 알아보자. 아래 코드는 intValue() 를 호출할 때마다 매번 텍스트를 정수로 파싱한다. class StringAsInteger implements Number { private String .. 2023. 2. 19.
[엘레강트 오브젝트] 1.1 -er로 끝나는 이름을 사용하지 마세요 이 내용은 엘레강트 오브젝트 를 읽으면서 정리한 내용을 포함하고 있습니다. 다음 목차로 진행합니다. 클래스 객체를 바라봐야 하는 입장 접미사 -er 클래스 이름을 짓는 적절한 방법 정리 클래스 객체의 팩토리 객체를 만들고, 추적하고, 적절한 시점에 파괴 객체를 인스턴스화한다. new 연산자가 충분히 강력하지 않는 이유 유사한 객체가 존재하거나 재사용 가능한 지를 확인하지 않는다. 객체를 바라봐야 하는 입장 클래스는 객체를 꺼내거나 반환할 수 있는 위치이기 때문에, 클래스를 저장소 또는 웨어하우스라고 불러야 한다는 점 도메인 주도 설계 의 입장으로 도메인이 비즈니스 로직의 주도권을 가지고 개발하는 것 서비스의 많은 로직이 엔티티로 이동 서비스는 엔티티를 호출하는 정도의 얇은 비즈니스 로직 정리해보면, 객체.. 2023. 2. 19.
반응형