강의 자료 관련 질문입니다! (2-4. 절차에서 객체로)
영호님 안녕하세요 😊
이번에는 2-4강을 듣던 도중 강의 자료와 관련된 질문을 드려요
Q. DiscountCondition을 책임지는 로직을 DiscountPolicy로 이동할 때,
DiscountPolicy 클래스에 있는
findDiscountCondition()메서드의 접근 제어자가 private으로 되어있는 부분은 public으로 변경하고ReservationService 클래스의
reserveScreening()메서드에서policy.findDiscountCondition(screening, conditions);
으로 생각하면 될까요?!
2-4 강의자료 page 10 (강의 02:29)

2-4 강의자료 page 11 (강의 02:42)
Câu trả lời 2
1
테디베어님 안녕하세요.
강의 자료를 보니 말씀하신 것처럼 findDiscountCondition 메서드의 가시성은 public으로 수정하는게 맞습니다.
장표를 만들면서 실수로 그 부분까지는 확인을 못하고 넘어간 것 같네요.
혹시 코드가 이상하다면 github에 올라가 있는 코드와 비교해 보시면 좋아요. 🙂
https://github.com/eternity-oop/object-basic-02-04/blob/main/src/main/java/org/eternity/reservation/domain/DiscountPolicy.java
동영상 부분이 수정하기 어려워서 고민인데 이렇게 질문 남겨 주시면 나중에라도 한번 모아서 오류 있는 부분을 수정하도록 하겠습니다.
꼼꼼하게 봐주셔서 감사합니다!
0
안녕하세요, 인프런 AI 인턴입니다.
테디베어님께서 2-4 강의 자료 중 DiscountCondition 로직의 이동과 관련하여 질문 주셨네요. 질문에 대한 답변과 관련된 내용을 함께 설명드릴게요.
로직 이동의 이해
책임의 이동:
- 강의에서 설명하듯, DiscountCondition을 판단하는 책임을 ReservationService에서 DiscountPolicy로 이동시키는 것은 객체지향 원칙 중 하나인 책임 할당을 명확하게 하기 위함입니다.
findDiscountCondition()메서드를 이동함으로써, 할인 조건에 대한 판단은 DiscountPolicy 내에서 처리되므로, 보다 응집도 높은 설계를 이룰 수 있습니다.
- 강의에서 설명하듯, DiscountCondition을 판단하는 책임을 ReservationService에서 DiscountPolicy로 이동시키는 것은 객체지향 원칙 중 하나인 책임 할당을 명확하게 하기 위함입니다.
접근 제어자:
findDiscountCondition()메서드의 접근 제어자를 public으로 변경하라는 부분은, 이 메서드가 외부에서 사용될 수 있도록 하기 위함입니다. 그러나, 만약 이 메서드가 내부적으로만 사용되어야 한다면 protected로 설정하여 하위 클래스에서만 접근하도록 할 수 있습니다.
- 여기서는 강의의 의도에 맞추어
public으로 설정하여,ReservationService에서 직접 호출하기 쉽게 하는 것이었습니다.
로직 흐름:
- 강의자료의 예시처럼
policy.findDiscountCondition(screening, conditions)로 호출하여, Screening 객체의 컨디션을 검사하게 됩니다.
- 강의자료의 예시처럼
관련 설명
캡슐화와 책임 할당은 객체지향 설계에서 굉장히 중요한 부분입니다. DiscountPolicy 클래스가 행동(할인 조건 판단)과 데이터를 모두 가지고 있게 되어, 응집도가 높은 클래스를 설계하게 됩니다. 이 구조는 변경에 의한 영향을 국한시키며, 외부에서 내부 구현을 변경하지 않고 기능을 사용할 수 있게 합니다.
유사한 질문 및 답변 참고
이와 관련되어 기존에 논의된 내용들은 아래 링크에서도 확인할 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드린 것입니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
자료 한번에 다운로드 받을 수 있게 좀 해주세요.
1
59
2
이 강의만 자료가 ppt네요.
1
94
1
DiscountPolicy의 구현체에 관련 질문 드려요!
1
61
2
도메인 관련 질문이 있습니다!
1
113
2
영화, 상영, 예매 도메인 관계에 대한 질문
1
88
2
[오타제보] 6-4. 캡슐화
2
48
2
리스코프 치환원칙에 대해 질문드립니다!
2
72
2
책임주도 설계 적용에 대한 간단한 질문 남겨드립니다.
1
111
2
객체지향 설계에서 메서드를 설계할 때 궁금한 점이 있습니다.
2
72
2
도메인 모델을 잘 정의하기 위해서 어떻게 해야할까요?
1
111
2
getter 사용에 대한 질문입니다.
1
55
2
6-1. 변경과 설계 마지막 추상화 관련 질문 입니다.
1
59
3
객체 지향 설계 원칙에 대한 질문입니다
1
52
2
[5-1] Screening과 Movie의 의존관계에 대한 궁금증 질문입니다.
1
60
2
2-2. 변경과 의존성 / 데이터 내부 변경 시 setter가 변경의 여파를 흡수하는 방식은 어떤가요?
2
72
2
[5-1] DiscountPolicy의 getDiscountAmount 추상 메서드 관련 질문입니다,
1
59
2
2-4. 절차에서 객체로 / 도메인 구조를 따라 클래스 구조 변경 부분
1
82
2
질문 있습니다!
1
64
2
[강의 자료 오타 제보]
1
66
2
간접 참조에 대한 질문
1
135
2
3-1 강의 질문입니다.
1
106
2
책 두권 다 읽어봐야 할까요?
1
194
2
(질문 글) Movie와 Customer의 위치
1
91
2
(오타 제보) 2-3 문서 내 문구 수정 제안
1
78
2

