클래스 따로 만들어 선언하는 이유
package ref.ex;
public class ProductOrder {
String productName;
int price;
int quantity;
}package ref.ex;
public class ProductOrderMain2 {
static ProductOrder createOrder(String productName, int price, int quantity) {
ProductOrder order = new ProductOrder();
order.productName = productName;
order.price = price;
order.quantity = quantity;
return order;
}
static void printOrders(ProductOrder[] orders) {
for (ProductOrder order : orders) {
System.out.println("상품명: " + order.productName + ", 가격: " + order.price + ", 수량: " + order.quantity);
}
}
static int getTotalAmount(ProductOrder[] orders) {
int amount = 0;
for (ProductOrder order : orders) {
amount += order.price * order.quantity;
}
return amount;
}
public static void main(String[] args) {
ProductOrder[] orders = new ProductOrder[3];
orders[0] = createOrder("두부", 2000, 2);
orders[1] = createOrder("김치", 5000, 1);
orders[2] = createOrder("콜라", 1500, 2);
printOrders(orders);
System.out.println("총 결제 금액: " + getTotalAmount(orders));
}
}섹션3, 기본형과 참조형 문제와 풀이
여기에서 productName, price, quantity를 다른 클래스에 따로 선언하는 이유가 인스턴스를 생성하기 위함인가요? 만약 맞다면, 클래스 ProductOrderMain2의 멤버변수로 선언하고 만들면 비효율적인가요? 아니면 불가능한가요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
jjlee021899님께서 질문하신 부분에 대한 답변을 드리겠습니다. 클래스의 사용과 관련된 유사한 질문이 있어 그에 대한 답변을 통해 이해를 돕고자 합니다.
왜 클래스를 따로 선언하는가?
재사용성:
ProductOrder클래스를 따로 선언함으로써 코드의 재사용성을 높일 수 있습니다. 다른 곳에서도 동일한 상품 주문 관련 데이터를 사용할 수 있게 됩니다. 만약 데이터 구조를 바꾸거나 확장할 일이 생기면,ProductOrder클래스만 수정하면 되므로 관리가 쉽습니다.캡슐화: 데이터와 메서드를 하나의 클래스에 묶어 줌으로써, 외부에 불필요한 노출을 막고 유지보수성을 향상 시킬 수 있습니다.
이해도: 코드의 이해도를 높여 줍니다. 메인 클래스에 모든 정보를 담을 경우, 코드가 복잡해지고 이해하기 어려워질 수 있습니다. 클래스를 분리하면 각 클래스가 맡은 역할과 책임이 명확해집니다.
클래스 내부 멤버 변수로 선언하는가?
클래스 내부의 멤버 변수로 productName, price, quantity를 선언할 수도 있습니다. 하지만 이는 각 주문이 공통적으로 사용할 데이터를 멤버 변수로 두는 반면, 개별 인스턴스에서 다르게 사용할 수 없는 구조가 됩니다. 각 주문(상품)은 별개의 데이터를 가져야 하므로 객체(인스턴스)의 멤버로 존재하는 것이 맞습니다.
아래 링크에서 유사한 문제와 답변을 찾아 보실 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
질문있습니다
0
27
1
1번 문제 질문입니다.
0
32
1
음악플레이어 문제 중 코드질문
0
26
1
9장 상속 문제와 풀이 질문
0
38
1
강의 자료에 사소한 오타가 있습니다.
0
49
2
매서드 참조값 반환??
0
66
1
접근제어자 - 쇼핑카트 문제에서 상품출력 부분 메서드
0
70
1
자바 기본편 - .(dot)에 관한 질문입니다!
0
85
1
공부방법
0
74
2
상속관계에서 멤버 변수는 오버라이딩 되는 개념이 아닌가요?
0
82
1
static method 질문
0
66
1
캡슐화 문제풀이 ShoppingCart 요구사항에 문제가 있어보입니다. 피드백 주세요
0
96
1
Method1에서 Student 객체
0
73
1
3강 18. null 질문
0
68
1
this 와 super의 호출 순서는 부모-자식관계 떄문만인가요?
0
75
1
팩토리 메서드 패턴과 일반 생성자 사용의 장단점
0
97
1
문의
0
104
1
9장 상속 문제와 풀이 부분 궁금한게 있어서 질문드립니다
0
90
1
상속과 그에 따른 메모리 구조 질문
0
62
1
call메소드에서 멤버에 접근하는 방식을 이해 못 했습니다
0
74
1
수강기한
0
135
1
기본편 객체지향 프로그래밍에 대한 정의
0
86
1
섹션10 상속 메모리 구조 및 문제 관련 질문
0
87
1
추가 지식 학습
0
152
2





