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

꿈나무님의 프로필 이미지
꿈나무

작성한 질문수

김영한의 실전 자바 - 기본편

문제와 풀이

문제 1번 Rectangel

작성

·

8

0

문제만 보고 풀었을 때,

Rectangle

image.png

이렇게 정의하고

RectangleOopMain에서

image.png

이렇게 작성했는데,

이렇게 문제를 풀이해도 객체지향으로 변경한게 맞나요?

실행시켰을 때 값은 동일하게 나와서 정답인 줄 알았는데,

문제 풀고 강의 들어보니 정답과 달라서 궁금합니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

꿈나무님께서 작성하신 코드와 질문에 대한 궁금증을 해결하기 위해 몇 가지 추가적인 설명을 드리고자 합니다.

우선, 객체 지향 프로그래밍(OOP)의 핵심은 “캡슐화”와 “책임 분리”입니다. 객체는 데이터와 데이터를 처리하는 메서드를 담고 있으며, 각각의 객체는 자신의 상태를 관리하고 특정 기능을 제공합니다. 따라서 메서드는 하나의 책임을 갖고, 해당 책임만 수행하는 것이 바람직합니다.

작성하신 코드에서는 Rectangle 클래스 내부 메서드들이 넓이, 둘레, 정사각형 여부 등을 계산하고 출력하는 기능을 포함하고 있습니다. 이 점에서 함수들이 계산과 출력을 동시에 하면서 객체의 책임을 혼용하고 있습니다.

개선 방법:
1. calculateArea(), calculatePerimeter(), isSquare() 메서드를 각각 값을 반환하도록 설계하여, 출력은 main 메서드에서 처리하는 것이 좋습니다.
- calculateArea()는 값을 반환하고, main 메서드에서 출력하도록 합니다.
- calculatePerimeter()도 마찬가지로 값을 반환하게끔 처리합니다.
- isSquare()는 boolean 타입을 반환하여, 결과를 main 메서드에서 출력합니다.

이렇게 함으로써 계산에 대한 책임과 출력을 분리할 수 있습니다.

유사 질문으로는 아래 링크를 참고하실 수 있습니다:

다른 질문들 역시 객체 지향 프로그래밍의 좋은 습관에 대해 다루고 있으므로 강의의 Q&A를 적극 활용하시는 것을 추천드립니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

꿈나무님의 프로필 이미지
꿈나무

작성한 질문수

질문하기