인프런 커뮤니티 질문&답변

gusdn85554님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

주문 서비스 개발

객체지향에 대해 궁금한 점

21.10.10 05:25 작성

·

319

0

안녕하십니까 강사님 

객체지향에 대해 궁금한 점이 생겨 질문드립니다.

17:05에서 order라는 메서드 안에 createOrderItem, createOrder 메서드들이 있습니다.

이 두 메서드는 OrderService 입장에서 OrderItem과 Order한테 "니네가 무슨 일은 하는지는 모르겠지만, 나는 이 두 개를 받아서 주문을 생성한다"라는 말이잖아요?

OrderService가 하는 일은 OrderItem과 Order에서 받은 것들을 이용하여 주문 생성

OrderItem이 하는 일은 주문 상품 생성

Order가 하는 일은 주문 생성

그렇다면 이게 객체지향성을 나타내는 것일까요? 

 

감사합니다

답변 2

4

codesweaver님의 프로필 이미지

2021. 10. 10. 09:47

안녕하세요, gusdn85554 님. 공식 서포터즈 codesweaver 입니다.
.
'OrderService 입장에서 Order와 OrderItem 니네가 뭐하는 녀석들인지 모르겠지만,,,' 이부분을 조금만 바꾸어 생각하시면 됩니다.

 

OrderService는 자신에게 주어진 '주문을 생성하라'는 메시지를 받고 이 요청을 책임지고 해결하려고 합니다. 그러나 자기 스스로 이 책임을 모두 해결할 수 없다는 것을 알고 있는 OrderService는 이 책임을 Order와 OrderItem 에게 위임합니다.

 

즉 OrderService는 자신에게 주어진 메시지를 처리하기 위해선 Order, OrderItem을 이용해야 한다는 사실은 알고 있습니다. Order에게는 '오더 하나 만들어줘', OrderItem에게는 '이 오더에 상품 넣어줘' 라고 메시지를 전달하는 것입니다.

.

OrderService가 알지 못하는 부분은 Order가 어떤 방법으로 주문을 생성하는지 입니다. Order라는 객체가 DB까지 갔다와서 주문을 만들어왔는지 아니면 Map 을 이용해서 메모리에 주문을 하나 만들어왔는지, OrderService는 그 부분을 알 수 없고 알려고 하지도 않습니다. 어쨋든 Order가 자신의 요청(오더 하나 만들어줘)를 처리해주면 됩니다.

.

어떤 객체의 인터페이스로 요청을 보낼 수 있지만 어떻게 처리하는지는 온전히 그 객체의 마음입니다. 이것을 객체의 자율성 이라고도 하고, 추상화, 캡슐화 라고 합니다. 객체지향 프로그래밍은 이런 자율적이고 협조적인 객체들의 관계로 작동합니다.

.
감사합니다.

2

gusdn85554님의 프로필 이미지
gusdn85554
질문자

2021. 10. 10. 11:39

답변 감사합니다 이해가 쏙쏙 됐습니다!