객체 지도 길을 찾을 때 지도를 참고하는 것이 아닌 사람에게 길을 묻고 찾을 경우, 현재의 요구만을 만족시킬 수 있다. 하지만 지도를 참고하여 길을 찾을 때는 현재의 목적 뿐만 아니라 다양한 목적을 위해 재사용될 수 있다. 객체적인 관점에서 살펴볼 때 사람에게 묻고 길을 찾는 경우는 기능 에 관련된 부분이고, 지도를 참고하여 길을 찾는 경우는 구조에 관련된 부분이다. 지도 은유의 핵심은 기능이 아니라 구조를 기반으로 모델을 구축하는 편이 좀 더 범용적이고 이해하기 쉬우며 변경에 안정적이라는 것이다. 객체지향 개발 방법은 안정적인 구조(지도)에서 변경이 빈번하게 발생하는 기능(사람이 원하는 위치)을 종속시키는 지도의 방법과 유사하다. 일반적으로 사람은 지도를 보고 자신이 가고 싶어하는 위치를 찾되, 가고 ..
책임과 메시지 그리고 캡슐화 객체지향 세계는 명확하게 정의된 역할과 책임을 지닌 객체들이 상호 협력하는 세계이다. 역할과 책임이 흐릿할수록 객체를 도와줄 어떤 협력자도 찾지 못할 것이다. Ex. 많은 사람들에게 질문을 던졌을 때는 답변이 없는 경우가 많다. 하지만 한 사람을 콕 집어서 질문을 던졌을 때는 오답이든 정답이든 답변은 하게 되어있다. 즉, 여러 사람에게 질문 했을 때는 그 사람들의 역할과 책임이 분산되어 협력하고자 하는 사람을 못찾게 되지만 한 사람을 선택하게 되면 역할과 책임이 명확해져 협력자를 쉽게 찾을 수 있는 것이다. 자율적인 책임 적절한 책임을 적절한 객체(자율적인 객체)에게 할당한다. 자율적인 객체는 스스로의 의지와 판단에 따라 각자 맡은 책임을 수행하는 객체를 의미한다. 즉, 적절..
타입에 관련된 중요한 사실 타입은 데이터가 어떻게 사용되느냐에 관한 것이다. 숫자는 연산, 문자열은 문자 관련 연산 타입에 속한 데이터를 메모리에 어떻게 표현하는지는 외부로부터 철저하게 감춰진다. 개발자는 해당 데이터 타입의 표현방식을 몰라도 데이터를 사용하는데 지장이 없다. 객체와 타입 객체의 오해 객체를 타입에 따라 분류하고 그 타입에 이름을 붙이는 것은 결국 프로그램에서 사용할 새로운 데이터 타입을 선언하는 것과 같다. 이 말로 봤을 때, 객체가 데이터라는 오해를 불러일으킬 수 있다. 전에도 봤듯이 객체에서 중요한 것은 객체의 행동이다. 객체를 창조할 때 객체가 이웃하는 객체와 협력하기 위해 어떤 행동을 해야할 지 결정하는 것이다. 즉, 객체는 데이터가 아니라는 것이다. 객체의 타입에 중요한 원칙 ..
역할, 책임, 협력(2) 역할, 책임, 협력은 객체 지향 시스템을 만드는 데 필요한 가장 중요한 재료이다. 들어가기에 앞서.. 객체지향 시스템의 목적을 살펴보고 들어가자. ▶ 역할과 책임 속에서 사용자의 요구를 만족시킬 수 있는 기능을 제공하는 동시에 이해하기 쉽고, 단순하며, 유연한 상호작용을 제공하는 객체들의 공동체를 구축한 것이다. 협력 협력은 다수의 연쇄적인 요청과 응답의 흐름으로 구성된다. 책임 어떤 객체가 어떤 요청에 대해 대답해 줄 수 있거나, 적절한 행동을 할 의무가 있는 경우 해당 객체가 책임을 가진다고 말한다. 즉, 어떤 대상에 대한 요청은 그 대상이 요청을 처리할 책임이 있음을 암시한다. 객체의 책임은 객체가 무엇을 알고 있는가와 무엇을 할 수 있는가로 구성된다. 객체의 책임은 일반적..
객체란, 상태, 행동, 식별자 객체의 행동의 결과는 상태에 영향을 받고, 객체는 유일하게 식별이 가능하다. 한 객체에서 상태가 다르면 같은 행동이라도 행동의 결과는 달라지지만 여전히 식별 가능한 객체이다. Ex. 앨리스의 키는 현재 상태에 따라 매우 커질수도 있고, 매우 작아질수도 있으나, 앨리스는 여전히 앨리스이다. 상태 상태를 알면 행동의 결과를 쉽게 예측할 수 있다. 객체의 상태는 정적인 프로퍼티(변하지 않는 상태), 동적인 프로퍼티(시간에 따라 변하는 상태)로 구성된다. 객체의 프로퍼티 객체를 구성하는 단순한 값인 속성과 객체와 객체를 연결하는 링크의 조합을 말한다. 객체는 스스로의 행동에 의해서만 상태가 변경된다. 즉, 외부의 객체 메시지를 통해 객체 스스로가 메시지를 참고하여 상태를 변경하는 ..
실세계와 객체지향 목표 객체지향의 목표는 실세계를 모방한 것이 아니다. 새로운 세계를 창조한 것이다. 가장 큰 차이는 바로 객체 스스로가 행동을 할 수 있다는 것이다. 자동차가 스스로 시동을 걸고, 통장이 스스로 금액을 인출하는 세상. 객체지향의 세상 역할, 책임, 협력 객체 지향에서 가장 중요한 개념 세가지 협력 하나의 복잡한 문제를 해결할 수 있는 공동체를 형성할 수 있게 만든 것이다. 역할과 책임 문제를 해결하기 위해 협력하는 과정 속에서는 각각 특정한 역할을 부여받는다. 손님, 바리스타, 캐시어 역할을 부여받은 역할자는 자신의 역할을 수행하기 위한 책임을 다 해야 한다. 선생님은 학생들을 가르칠 책임이 있다. 역할과 책임은 협력이 원활하게 진행되는데 필요한 핵심적인 구성요소이다. 역할은 책임의 집..
- Total
- Today
- Yesterday
- ifPresent
- Spring
- 스프링부트
- 생성자
- 인프런
- try catch finally
- 점층적 생성 패턴
- junit
- flatMap
- 이펙티브자바
- 김영한
- 빈 순환 참조
- 복사 팩토리
- try with resources
- effectivejava
- 연관관계
- Effective Java
- jdk버전
- @Lazy
- 이펙티브 자바
- package-private
- springboot
- java8
- mustache
- 정적팩터리메서드
- 빌더 패턴
- java
- JPA
- 자바8
- 팩토리 메소드 패턴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |