본문 바로가기

object6

DDD - Value Object - 출처: 도메인 주도 설계 - 에릭 에반스 - Value-Object (VO) VO는 개념적인 식별성이 없고 사물의 어떤 특징을 묘사하는 객체이다. 예를 들어 어떤 아이가 펜으로 그림을 그리려고 하고 있다고 가정해보자. 만약 똑같은 색과 굵기와 모양의 펜이 2개가 있다면 아이는 어떤 펜을 사용해도 도 크게 개의치 않을것이다. VO는 설계요소가 어느것인지가 아닌 무엇인지에 관심이 있다고 할 수 있다. - "주소"는 VO인가? VO와 Entity에 관련된 글이나 자료를 보다 보면 자주 떠오르는 유형의 의문점이 있다. VO와 Entity의 차이 혹은 "주소"는 VO일까? 와 같은 유형의 질문이다. 이 질문에 해답역시 앞의 Entity 장에서 살펴본것과 같이 도메인에서 해결하고자 하는 문제에 따라 다르다. 전.. 2022. 7. 19.
객체지향의 사실과 오해 - 타입과 추상화 - 이 글은 조영호의 객체지향의 사실과 오해를 기반으로 작성되었습니다. (가능하면 꼭 읽어보는것을 추천드립니다.) - Javascript 프로토타입 상속: https://developer.mozilla.org/ko/docs/Web/JavaScript/Inheritance_and_the_prototype_chain - 추상화와 복잡성 초기의 지하철 노선도는 실제 지형을 참조한 곡선의 경로와 역간의 위치 거리 등의 정보를 충실하게 반영했었다. 하지만 현재 노선도는 직선 형태이며 역간의 거리도 실제 거리와는 무관하다. 그럼에도 목적지까지 이동하는데 불편함이 없다. 추상화의 본질은 사용자의 목적을 달성할 수만 있다면 복잡한 정보를 제거함으로써 본질을 드러내게 하는것이다. 복잡성을 다루기 위해 추상화는 두 가지 .. 2021. 8. 12.
객체지향의 사실과 오해 - 객체란 무엇인가 - 이 글은 조영호의 객체지향의 사실과 오해를 기반으로 작성되었습니다. (가능하면 꼭 읽어보는것을 추천드립니다.) - 엘리스와 객체지향의 공통점 저자는 객체지향을 설명하기 위해 이상한 나라의 앨리스 이야기를 예시로 들고 있다. 사실 나는 이상한 나라의 앨리스를 읽어보진 않았지만 그래도 이해하는데 전혀 무리가 없도록 자세히 설명해주고 있다. 엘리스는 아름다운 정원으로 들어가기 위해 많은 노력을 한다. 그 과정에서 음식을 먹거나 부채질을 하면 키가 변하는 이상현상을 겪게 된다. 그리고 이를 이용해 키를 변화시키면서 목표했던 아름다운 정원에 들어가게 된다. 엘리스의 키나 현재위치는 상태라고 볼 수 있다. 엘리스의 상태가 변하는것은 케이크를 먹거나 부채질을 하는 등의 행동을 했기 때문이다. 또한 현재 상태에 따.. 2021. 8. 9.
객체지향의 사실과 오해 - 협력하는 객체들 - 이 글은 조영호의 객체지향의 사실과 오해를 기반으로 작성되었습니다. (가능하면 꼭 읽어보는것을 추천드립니다.) - God Object: https://en.wikipedia.org/wiki/God_object - 개요 개발자나 설계자는 실세계의 사물이나 상황을 소프트웨어로 구현하고 사물의 속성과 행동을 클래스의 속성과 메소드로 구현하는것이 "객체지향적"이라고 생각하지만 실상은 소프트웨어와 실세계 사물간의 거리가 먼 것이 일반적이다. 그렇다면 컴퓨터공학을 전공하면서 지겹도록 듣던 붕어빵틀과 붕어빵은 도대체 뭘까? 엄청나게 똑똑해서 박사과정을 수료 하고 전공서적을 쓴 사람들은 헛소리를 한 것일까? 그것은 실세계의 모방이라는 관점으로 설명하는것이 객체 지향의 첫 발을 들여놓는 입문자들에게 객체 지향의 개념.. 2021. 8. 8.
UML - 클래스 다이어그램 고급 - 참조 객체, 값 객체 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - 참조 객체와 값 객체 보통 객체는 고유성을 가지고 있다. 이는 참조 객체에 대한 이야기이며, 값 객체에서는 해당사항이 없는 이야기이다. 참조 객체는 무엇이고 값 객체는 무엇인가? - 참조 객체(Reference Object) 참조 객체는 고객과 같은 객체이다. 만약 프로그램에서 고객을 참조한다면, 해당 고객의 참조는 유일하길 원할 것이다. 그래야만 해당 고객에 대한 정보가 변경될 때, 해당 고객을 사용(참조)하고 있던 여러 사용자들(여기서는 사람을 말하는것이 아니라 참조를 하는 다른 코드를 말한다.)에게 해당 정보가 반영될것이다. 만약 어떤 고객에 대한 참조가 여러개 있고 이런 참조들이 같은 고객을 참조하고있는지 확인하.. 2021. 2. 10.
UML - 시퀀스 다이어그램 - 참가자 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - 참가자의 생성과 삭제 시퀀스 다이어그램에는 참가자를 생성하고 삭제하는 표기법이 있다. 위 다이어그램 2번 화살표에서 a Handler는 a Query Command 참가자를 생성하였다. 흔히 new 라고 많이 표기하며, StarUML 에서는 화살표의 Action Kind를 Create를 선택하면 로 표기한다. 참가자의 삭제는 X 로 표시한다. 7번 화살표에서 a Query Command가 a Database Statement 에 메세지를 보냄으로써 참가자를 삭제하고 있다. 반면 자기자신이 삭제되는 표현도 가능한데 8번 화살표에서는 재귀 화살표로 자기자신에 메시지를 보낸다. 가비지 컬렉션을 지원하는 언어의 경우 직접 객체.. 2021. 2. 10.