inflearn logo
강의

講義

知識共有

オブジェクト指向プログラミング入門

カプセル化の例

캡슐화 질문

322

wnsqud70

投稿した質問数 58

0

안녕하세요 강의 정말 흥미롭게 잘 보고 있습니다.

다름이 아니라 정답을 보기전 강의를 멈추고 제가 생각했던 캡슐화랑 비교해가면서 보고 있는데요

질문1

연습문제 1번에서 저는 두번째 if문만이 아닌 if 문 3개를 한꺼번에 메서드로 만들어서 캡슐화를 진행하려 했었는데 이렇게 해도 괜찮은가요??

질문2

연습문제 3번 같은 경우에도 elapasedTime 메서드에 start() 와 stop() 메서들 넣어 아예 하나의 메서드로 캡슐화 시켜버리고 호출시 elapasedTime메서드만 호출하도록 캡슐화 하는 방법을 생각 했었는데 이방식도 괜찮은건가요??

 

oop

回答 1

1

madvirus0123

질문1

연습문제 1번에서 저는 두번째 if문만이 아닌 if 문 3개를 한꺼번에 메서드로 만들어서 캡슐화를 진행하려 했었는데 이렇게 해도 괜찮은가요??

답변1: 

if가 세 개 있는데요

  1. 해당 Member가 존재하는지 확인
  2. Member가 이메일 인증을 했는지 확인
  3. Member 암호와 사용자가 입력한 암호가 일치하는지 확인

이 중에 2번과 3번 if를 Member 객체에 하나의 메서드로 만들어도 됩니다. 첫 번째는 Member 자체가 있는지 없는지 검사하는 것이므로 Member에 넣을 순 없을 거구요.

2번과 3번을 합쳐서 하나의 메서드로 만들면 이제 Member가 제공하는 암호검사 기능은 '이메일 검증 여부'에 따라 다르게 동작하게 되겠죠. 만약 실제로 암호가 일치하는지 여부만 확인하는 기능이 필요한 상황이 발생하면 이때는 '이메일 검증 여부에 상관없이' 암호가 일치하는지 여부를 확인하는 기능을 추가하면 되구요.

 

질문2

연습문제 3번 같은 경우에도 elapasedTime 메서드에 start() 와 stop() 메서들 넣어 아예 하나의 메서드로 캡슐화 시켜버리고 호출시 elapasedTime메서드만 호출하도록 캡슐화 하는 방법을 생각 했었는데 이방식도 괜찮은건가요??

답변2: 

elapsedTime 메서드 1개만 존재하면 코드가 다음과 같아진다는 걸까요?

t.elapsedTime(..);
... (코드 실행)
long time = t.elapsedTime(...);

타이머의 핵심 기능이 시작과 중지라는 점을 감안하면 위 코드는 기능의 의미를 제대로 표현하지 못하게 되니까 좋은 코드가 되지 못 합니다. 게다가 동작 방식도 매우 암묵적입니다(elapsedTime()을 처음 부르면 타이머를 시작하고, 두 번째 부르면 타이머를 종료하면서 시간을 구한다라는 식으로요)

0

wnsqud70

감사합니다!

추상화 예제의 추상화하지 않은 구현 부분에서 질문있습니다.

0

446

1

캡슐화 하는 이유에 대해서

2

757

1

캡슐화 연습 2번

0

370

1

추상화 예제에서 추상 클래스를 사용하지 않고 인터페이스를 사용하신 이유가 궁금합니다.

0

269

2

캡슐화 예제 4 질문입니다.

0

272

1

범균님 안녕하세요 강의 수강중 궁금한점이 있어 질문 남겨 봅니다.

0

366

1

DIP 관련해서 궁금한게 있습니다.

0

260

1

기능 분리 기준에 대한 질문이 있습니다.

1

361

2

서로 다른 구현 추상화에 대해서 질문이 있습니다.

2

369

2

의존 주입 예제 관련 질문입니다.

1

257

1

상속 재활용 단점 중 상위 클래스 변경 어려움에 대해서 질문이 있습니다.

1

316

2

캡슐화 연습4 질문 있습니다.

0

294

2

의존하는 대상이 많을 때 질문 드립니다.

0

265

1

추상화를 따라서 코딩해볼 수 있는 예제가 있을까요?

0

451

1

콘크리트 클래스를 직접 사용하는 경우 & NotifierFactory 관련 질문드립니다

1

277

1

Demeter's Law 설명이 잘 이해가 안갔습니다 ㅠㅠ

1

287

1

혹시 강의를 듣고 필기한 내용을 정리해서 블로그에 올려도 될까요?

0

359

2

캡슐화 예제 질문드립니다

0

546

4

DIP

1

375

3

예제코드는 따로 없나요?

1

231

0

NotifierFactory 를 또 추상화 한 이유가 궁금합니다

0

198

1

특정 클라우드에서 예외적으로 특정기능을 제공하지 않는 경우

6

214

1

상속과 조합 문의드립니다

1

267

1

강의자료를 받아볼수 있나요?

1

282

2