정보처리기사 실기소프트웨어 설계결합도와 응집도난이도 5DESCRIPTIVE

정보처리기사 실기 결합도와 응집도 기출문제 #358

문제

객체지향 설계에서 Law of Demeter(데메테르 법칙)와 Tell, Don't Ask 원칙이 결합도와 응집도에 미치는 영향을 설명하고, 이들 원칙을 위반했을 때 나타나는 구체적인 코드 냄새(Code Smell)와 이를 해결하기 위한 설계 패턴을 서술하시오.

정답

Law of Demeter는 객체가 직접적으로 관련된 객체들과만 상호작용해야 한다는 원칙으로, 메소드 체이닝을 제한하여 결합도를 낮춘다. Tell, Don't Ask는 객체의 상태를 묻지 말고 행동을 요청하라는 원칙으로 캡슐화를 강화하여 응집도를 높인다. 위반 시 나타나는 코드 냄새로는 Feature Envy, Inappropriate Intimacy, Train Wreck 등이 있으며, 해결을 위해 Facade 패턴, Command 패턴, Strategy 패턴 등을 적용할 수 있다. 이를 통해 정보 은닉과 책임 분산이 이루어져 모듈 독립성이 향상된다.

Law of DemeterTell Don't Ask데메테르 법칙메소드 체이닝캡슐화Feature EnvyTrain WreckFacade 패턴Command 패턴정보 은닉

해설

Law of Demeter는 'principle of least knowledge'로도 불리며, 객체 A가 객체 B의 메소드를 호출할 때 B가 반환한 객체 C의 메소드를 다시 호출하는 것을 금지한다. Tell, Don't Ask는 getter 남용을 방지하고 객체의 책임을 명확히 한다. Feature Envy는 한 클래스가 다른 클래스의 기능에 과도하게 관심을 보이는 냄새이고, Train Wreck은 a.getB().getC().doSomething() 같은 연쇄 호출 패턴이다. 설계 패턴 적용을 통해 이러한 문제를 해결할 수 있다.

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.