강의

멘토링

커뮤니티

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

테디베어님의 프로필 이미지
테디베어

작성한 질문수

오브젝트 - 기초편

2-4. 절차에서 객체로

강의 자료 관련 질문입니다! (2-4. 절차에서 객체로)

해결된 질문

작성

·

22

1

영호님 안녕하세요 😊

 

이번에는 2-4강을 듣던 도중 강의 자료와 관련된 질문을 드려요

 

Q. DiscountCondition을 책임지는 로직을 DiscountPolicy로 이동할 때,

  • DiscountPolicy 클래스에 있는 findDiscountCondition()메서드의 접근 제어자가 private으로 되어있는 부분은 public으로 변경하고

  • ReservationService 클래스의 reserveScreening() 메서드에서 policy.findDiscountCondition(screening, conditions);

으로 생각하면 될까요?!

 

2-4 강의자료 page 10 (강의 02:29)

image.png

 

2-4 강의자료 page 11 (강의 02:42)

image.png

답변 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 로직의 이동과 관련하여 질문 주셨네요. 질문에 대한 답변과 관련된 내용을 함께 설명드릴게요.

로직 이동의 이해

  1. 책임의 이동:

    • 강의에서 설명하듯, DiscountCondition을 판단하는 책임을 ReservationService에서 DiscountPolicy로 이동시키는 것은 객체지향 원칙 중 하나인 책임 할당을 명확하게 하기 위함입니다.
    • findDiscountCondition() 메서드를 이동함으로써, 할인 조건에 대한 판단은 DiscountPolicy 내에서 처리되므로, 보다 응집도 높은 설계를 이룰 수 있습니다.
  2. 접근 제어자:

    • findDiscountCondition() 메서드의 접근 제어자를 public으로 변경하라는 부분은, 이 메서드가 외부에서 사용될 수 있도록 하기 위함입니다. 그러나, 만약 이 메서드가 내부적으로만 사용되어야 한다면 protected로 설정하여 하위 클래스에서만 접근하도록 할 수 있습니다.
    • 여기서는 강의의 의도에 맞추어 public으로 설정하여, ReservationService에서 직접 호출하기 쉽게 하는 것이었습니다.
  3. 로직 흐름:

    • 강의자료의 예시처럼 policy.findDiscountCondition(screening, conditions)로 호출하여, Screening 객체의 컨디션을 검사하게 됩니다.

관련 설명

캡슐화와 책임 할당은 객체지향 설계에서 굉장히 중요한 부분입니다. DiscountPolicy 클래스가 행동(할인 조건 판단)과 데이터를 모두 가지고 있게 되어, 응집도가 높은 클래스를 설계하게 됩니다. 이 구조는 변경에 의한 영향을 국한시키며, 외부에서 내부 구현을 변경하지 않고 기능을 사용할 수 있게 합니다.

유사한 질문 및 답변 참고

이와 관련되어 기존에 논의된 내용들은 아래 링크에서도 확인할 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드린 것입니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

테디베어님의 프로필 이미지
테디베어

작성한 질문수

질문하기