해결된 질문
작성
·
46
0
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));
}
}
여기에서 productName, price, quantity를 다른 클래스에 따로 선언하는 이유가 인스턴스를 생성하기 위함인가요? 만약 맞다면, 클래스 ProductOrderMain2의 멤버변수로 선언하고 만들면 비효율적인가요? 아니면 불가능한가요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
jjlee021899님께서 질문하신 부분에 대한 답변을 드리겠습니다. 클래스의 사용과 관련된 유사한 질문이 있어 그에 대한 답변을 통해 이해를 돕고자 합니다.
왜 클래스를 따로 선언하는가?
재사용성: ProductOrder
클래스를 따로 선언함으로써 코드의 재사용성을 높일 수 있습니다. 다른 곳에서도 동일한 상품 주문 관련 데이터를 사용할 수 있게 됩니다. 만약 데이터 구조를 바꾸거나 확장할 일이 생기면, ProductOrder
클래스만 수정하면 되므로 관리가 쉽습니다.
캡슐화: 데이터와 메서드를 하나의 클래스에 묶어 줌으로써, 외부에 불필요한 노출을 막고 유지보수성을 향상 시킬 수 있습니다.
이해도: 코드의 이해도를 높여 줍니다. 메인 클래스에 모든 정보를 담을 경우, 코드가 복잡해지고 이해하기 어려워질 수 있습니다. 클래스를 분리하면 각 클래스가 맡은 역할과 책임이 명확해집니다.
클래스 내부 멤버 변수로 선언하는가?
클래스 내부의 멤버 변수로 productName
, price
, quantity
를 선언할 수도 있습니다. 하지만 이는 각 주문이 공통적으로 사용할 데이터를 멤버 변수로 두는 반면, 개별 인스턴스에서 다르게 사용할 수 없는 구조가 됩니다. 각 주문(상품)은 별개의 데이터를 가져야 하므로 객체(인스턴스)의 멤버로 존재하는 것이 맞습니다.
아래 링크에서 유사한 문제와 답변을 찾아 보실 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.