3. 객체 지향 프로그래밍 질문
992
1 asked
package oop1.ex;
public class Ex1Rectangle {
int height;
int width;
int area;
int perimeter;
void calculateArea() {
area = width * height;
System.out.println("넓이: " + area);
}
void calculatePerimeter() {
perimeter = 2 * (width + height);
System.out.println("둘레: " + perimeter);
}
void isSquare() {
boolean isSquare = width == height;
System.out.println("정사각형 여부: "+ isSquare);
}
}package oop1.ex;
public class Ex1RectangleObjectMain {
public static void main(String[] args) {
Ex1Rectangle rectangle = new Ex1Rectangle();
rectangle.height = 8;
rectangle.width = 5;
rectangle.calculateArea();
rectangle.calculatePerimeter();
rectangle.isSquare();
}
}
[질문 내용]
3. 객체지향 프로그래밍 문제 1번의 제공된 정답에서는
System.out.println으로 출력하는 부분을 main메서드 안에 남겨두었고,
제가 문제를 푸는 과정에서는
객체 클래스에 int area와 int perimeter를 선언한 후, 각 메서드를 int와 boolean값을 반환하지 않는 void메서드로 변경하고, 계산된 값을 출력하는 부분을 각 메서드 안에 넣어놓고,
main메서드에서는 int width와 int height의 값을 지정하고 객체 클래스의 메서드들을 호출만 했고 같은 결과가 나오는데,
둘 중 어느 것이 효율적이고 여러 방면에서 좋은 코드인가요??
Answer 2
7
안녕하세요. 김윤상 / @yoonsnag님, 공식 서포터즈 David입니다.
질문자 분께서 작성하신 메서드들은 계산과 출력을 모두 포함하고 있습니다.
예를 들어, calculateArea 메서드는 넓이를 계산하기 위한 메서드이지 계산된 넓이를 출력하는 메서드는 아닙니다. 만약 계산과 출력에 대한 책임을 모두 가지고 있었다면 calculateAndPrintArea로 메서드가 명명되었어야 할 것입니다.
즉, Rectangle의 경우 넓이는 계산하는 메서드를 갖고 있고 이 메서드가 제대로 결과를 내는지 확인하기 위해 메인 메서드에서 출력(print)을 한 것입니다.
그리고 모든 메서드의 반환 값을 void 처리하게 된다면 다른 객체와 협력하기 힘들다는 점이 있습니다.
Rectangle의 넓이를 전달받아 무언가를 처리해야 하는 로직이 있는데 void로 처리함으로써 아무런 값을 반환 받지 못한다면 넓이와 관련된 다른 작업을 할 수 없게 됩니다.
감사합니다.
질문있습니다
0
25
1
1번 문제 질문입니다.
0
31
1
음악플레이어 문제 중 코드질문
0
26
1
9장 상속 문제와 풀이 질문
0
38
1
강의 자료에 사소한 오타가 있습니다.
0
48
2
매서드 참조값 반환??
0
66
1
접근제어자 - 쇼핑카트 문제에서 상품출력 부분 메서드
0
69
1
자바 기본편 - .(dot)에 관한 질문입니다!
0
85
1
공부방법
0
74
2
상속관계에서 멤버 변수는 오버라이딩 되는 개념이 아닌가요?
0
82
1
static method 질문
0
66
1
캡슐화 문제풀이 ShoppingCart 요구사항에 문제가 있어보입니다. 피드백 주세요
0
95
1
Method1에서 Student 객체
0
73
1
3강 18. null 질문
0
67
1
this 와 super의 호출 순서는 부모-자식관계 떄문만인가요?
0
75
1
팩토리 메서드 패턴과 일반 생성자 사용의 장단점
0
97
1
문의
0
104
1
9장 상속 문제와 풀이 부분 궁금한게 있어서 질문드립니다
0
89
1
상속과 그에 따른 메모리 구조 질문
0
62
1
call메소드에서 멤버에 접근하는 방식을 이해 못 했습니다
0
74
1
수강기한
0
135
1
기본편 객체지향 프로그래밍에 대한 정의
0
86
1
섹션10 상속 메모리 구조 및 문제 관련 질문
0
87
1
추가 지식 학습
0
152
2

