inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

클래스 따로 만들어 선언하는 이유

해결된 질문

104

jjlee021899

작성한 질문수 2

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));
    }
}

섹션3, 기본형과 참조형 문제와 풀이

여기에서 productName, price, quantity를 다른 클래스에 따로 선언하는 이유가 인스턴스를 생성하기 위함인가요? 만약 맞다면, 클래스 ProductOrderMain2의 멤버변수로 선언하고 만들면 비효율적인가요? 아니면 불가능한가요?

java 객체지향

답변 1

0

인프런 AI 인턴

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

jjlee021899님께서 질문하신 부분에 대한 답변을 드리겠습니다. 클래스의 사용과 관련된 유사한 질문이 있어 그에 대한 답변을 통해 이해를 돕고자 합니다.

왜 클래스를 따로 선언하는가?

  1. 재사용성: ProductOrder 클래스를 따로 선언함으로써 코드의 재사용성을 높일 수 있습니다. 다른 곳에서도 동일한 상품 주문 관련 데이터를 사용할 수 있게 됩니다. 만약 데이터 구조를 바꾸거나 확장할 일이 생기면, ProductOrder 클래스만 수정하면 되므로 관리가 쉽습니다.

  2. 캡슐화: 데이터와 메서드를 하나의 클래스에 묶어 줌으로써, 외부에 불필요한 노출을 막고 유지보수성을 향상 시킬 수 있습니다.

  3. 이해도: 코드의 이해도를 높여 줍니다. 메인 클래스에 모든 정보를 담을 경우, 코드가 복잡해지고 이해하기 어려워질 수 있습니다. 클래스를 분리하면 각 클래스가 맡은 역할과 책임이 명확해집니다.

클래스 내부 멤버 변수로 선언하는가?

클래스 내부의 멤버 변수로 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