ProgrammingTheory
-
DTO , VO - "내 돈 1000원이 달라서 핫식스를 못 먹는다고 ?"ProgrammingTheory/DDD 2023. 10. 27. 13:25
이글은 테크톡의 각종 영상과 각종 블로그를 읽고 작성한다. 최종 수정 : 2023 년 10월 27일 , 최초 작성일 2023.03.27 이 글은 DTO , VO 그리고 lombok 의 @Data 를 다룬다 DTO ,VO 둘다 데이터를 저장하는 객체(Object)이다. DTO는 데이터를 전송하기 위한 객체이며 불변일 수 도 있다. VO 는 값에 관한 객체이며 일반적으로 불변이여야 한다. DTO : Data Transfer Object (데이터. 전송. 객체) 처음 단어를 보았을때 엥 이게 뭐야 라는 생각을 했었다. DTO 를 DDD 의 Layerd 아키택처에서 다음 두가지 경우로 이용 할 수 있다. 1. API Layer 즉 controller 단에서 사용자와 데이터를 특정 형식으로 주고 받는 경우 . 2..
-
DDDProgrammingTheory/DDD 2023. 8. 8. 15:03
DDD ,, DDD ,, DDD 벡엔드 엔지니어의 길을 걷고자 공부한 지난 1년간 정말 많은 블로그에서 보고 들은 단어 이지만 , DDD 가 뭐다 ! 라고 명확하게 이야기를 못한 자신을 보았다. 그러한 이유는 명확한 정의, 이론들을 알지 못한 상황에서 기능을 급급하게 만들었던, 모래성을 쌓는 것 과 같은 일을 하고 있었기 때문이다. 이글을 통하여 나와 같이 DDD에 대하여 가볍게 넘어가거나 추상적으로만 개념이 있던 사람들에게 도움이 되고자 아직 부족하지만 나름의 경험과 공부했던 내용의 일부를 적어본다. DDD 정의 : DDD 는 도메인의 깊은 이해(process and domain rule)를 바탕으로 만들어진 도메인 모델을 중심으로 소프트웨어를 개발 및 설계하는 접근 법이다. DDD 이전에 MDD 라는..
-
설계 품질 TradeOff [오브젝트 chpt 4]ProgrammingTheory/OOP 2023. 4. 7. 22:46
- 이 글은 책 오브젝트 리뷰를 위한 메모 글이며, 공부 목적을 위한 노트 입니다. 객체지향 설계 두 가지 방식 상태 중심 : 구현이 불안정하기 때문에 객체의 상태가 인터페이스에 스며드는 변경에 취약한 코드가 생길 수 있다. 예시 ) 필요한 기능을 만들기 위하여 데이터를 우선적으로 생각하여 클라스를 만든후 접근 제어자를 넣어준후 중앙에서 통재하는 클라스에서 모든 객체의 상태를 호출하여 원하는 결과를 만드는 방식. 책에서는 데이터를 가지는 구현채들이 get ,set 이외의 로직이 없다. 작년 겨울에 짰던 코드: MVC 패턴을 생각 했지만 내부의 BL 이 없다. public class Player { private Exception exception; private List playerNumbers; pub..
-
객체지향이란 ? 객체지향 특징 4가지ProgrammingTheory/OOP 2023. 4. 7. 20:50
수정 : 23년 4월 8일 "객체지향"이란 공통된 로직 ,공통된 데이터를 하나로 묶어서 하나로 관리를 하는 것 이다." 라는 답변은 22년 9월 , 객체지향의 사실과 오해 및 오브젝트 를 읽기전, 우아한 테크 코스 프리코스 참여 전에 생각한 답변이다. OOP : 객체 지향 프로그래밍 이다. 객체라는 말이 오해를 만든다고 포* 선생님은 "개체" 라고 부르신다. 공통된 로직 ,공통된 데이터를 하나로 묶어서 하나로 관리를 하는 것 은 객체지향이 아니라 캡슐화 이다. 객체지향 프로그래밍을 한다라는 것은 , 객체들이 메시지를 통하여 외부의 요청에 대하여 객체간 서로 상호작용을 하여 원하는 목적을 이루게 하는 프로그래밍을 하는 관점을 가지는 프로그래밍을 하자라는 페러다임이라고 이해를 하자. 왜 관점인가 ? 컴퓨터 ..
-
RDD & SOLID 원칙 [오브젝트 chpt 3]ProgrammingTheory/OOP 2023. 3. 31. 21:44
오브젝트 챕터 3의 내용은 책 객체지향의 사실과 오해 내내 했던 이야기이다. 협력(collaboration) ,책임(responsibility),역할(Role) 이라는 단어를 안다면 하단의 Solid 원칙을 다시한번 정리한 부분만 보고 넘어가도 충분하다. Point RDD : Responsibility Driven design 하자 , 상태보단 행위 이며 메시지가 객체를 선택하자 추상 클라스와 인터페이스 잘쓰자 협력 (collaboration) : 객체들끼리 어떠한 기능을 수행하기 위하여 하는 상호작용 책임(responsibility) : 협력에 참여하기 위해 객체가 수행하는 행동 . 역할(Role) : 어떤 특정한 협력 안에서 수행하는 책임의 집합. ~ DIP 한종류의 객체만 협력에 참여를 하는 상황이..
-
객체지향의 사실과 오해 [chpt 5,6]ProgrammingTheory/OOP 2023. 3. 24. 17:35
- 이 글은 객체지향의 사실과 오해 리뷰를 위한 메모 글이며, 공부 목적을 위한 노트 입니다. 글은 4월 초에 완성합니다. chpt 5 책임과 메시지 chpt 5 point : 메시지가 인터페이스를 결정한다. 메시지를 중심으로 생각을 하자. 인터페이스를 통해서만 다른 객체의 메시지를 보내고 , 메시지를 통해서만 다른 객체의 정보를 받을 수 있다. ISP 예시 : 인터페이스를 나누는 케이스 King. → message(증언하라) → Alice King. → message(증언하라= message name ) → Alice 자신의 의지에 따라 증언 할 수 있는자유 왕의 증언하라 라는 메시지 vs 목격했던 장면을 떠올려라 메시지 class A a = new A() ; → a.speakInCoart() →a.s..
-
객체지향의 사실과 오해 [chpt 3,4]ProgrammingTheory/OOP 2023. 3. 24. 17:34
- 이 글은 객체지향의 사실과 오해 리뷰를 위한 메모 글이며, 공부 목적을 위한 노트 입니다. 글은 4월 초에 완성합니다. chpt 3 타입과 추상 리스코프 치환 원칙을 먼저 설명한다. “서브 타입은 언제나 자신의 기반 타입(base type)으로 교체할 수 있어야 한다." 로버트 C. 마틴 조용호 님의 블로그 주소이다 : http://aeternum.egloos.com/ 토비님의 유투브에 나온 인터뷰에서 가져왔다. : https://www.youtube.com/watch?v=8OclN9kZTE4 책은 나오는 것 까지 7년이 걸렷다고 한다, 추상화를 통해 복잡성을 극복한다. 복잡한 런던 지하철의 초기 지도는 실측을 기반으로 사용자에게 정보를 제공하였지만, 복잡했다. 오늘날의 지하철은 역간의 거리와 상관 ..
-
상속은 인터페이스 상속을 위해 사용 되어야 한다.[오브젝트 chpt 2]ProgrammingTheory/OOP 2023. 3. 24. 17:29
합성을 이해 하고 , 상속은 인터페이스 상속을 위해 사용되어야 한다. (마지막 수정일 : 23/03/25) 이글은 오브젝트 2장과 각종 블로그의 정리글 + 인프런 김영한님의 스프링 핵심 원리의 내용을 다루며 글 말에는 어떻게 프로젝트의 적용을 했는지 서술 한다. 오브젝트 2장에서 다룬 개념을 먼저 보자, 전반적인 이해를 위해서는 객체 지향의 사실과 오해의 내용을 읽었으면 한다. [다형성] 메시지와 메서드는 다른 개념이다. 하나의 객체는 동일한 메시지를 전송하지만 실제로 어떤 메서드가 실행될 것인지는 메시지를 수신하는 객체의 클래스가 무엇이냐에 따라 달라지며 이를 다형성이라 한다. [코드의 의존성과 실행 시점의 의존성은 다를 수 있다] - Lazy Binding ,Dynamic Binding public ..