← 학습 코스

두 주문을 객체로 묶어요

C++완성형

같이 움직이는 값과 계산을 찾아요

지금까지는 수량 quantity와 단가 price를 따로 만들고 함수에 전달했어요.

int itemCost(int quantity, int price) {
    return quantity * price;
}

주문 두 개라면 수량도 두 개, 단가도 두 개가 필요해요. 어느 수량이 어느 단가와 한 주문을 이루는지 연결해야 해요. 클래스는 이런 관련된 값과 계산을 하나의 종류로 묶는 방법이에요. 먼저 ‘수량·단가·금액 계산이 한 주문에 속한다’는 관계만 잡아 봐요.

class는 종류를 정하고 객체는 실제 주문이에요

class Order {
public:
    int quantity;
    int unitPrice;
    int cost() { return quantity * unitPrice; }
};

Order는 주문이라는 종류의 이름이에요. 클래스 안의 quantity와 unitPrice를 멤버 변수, cost를 멤버 함수라고 불러요. public: 뒤의 멤버는 밖에서 읽거나 쓸 수 있어요. class의 마지막 ;까지 포함해 정의해요.

Order order;는 이 종류로 실제 주문 하나를 만들어요. Order는 새 자료형이기도 해요. 정수 변수 선언 int number;에서 int 자리에 Order를 넣은 Order order;로 읽으면 돼요. 이렇게 만든 order를 객체라고 불러요. 종류를 정의하는 것과 실제 객체를 만드는 것은 다른 일이에요.

점으로 그 객체의 값을 쓰고 함수를 불러요

Order order;
order.quantity = 3;
order.unitPrice = 4;
int total = order.cost();

점 .은 order에 속한 멤버를 가리켜요. quantity에 3, unitPrice에 4를 넣은 다음 cost()를 호출하면 이 객체의 값으로 계산해 12를 반환해요. 값은 넣은 뒤에 사용해요. 여기서 만들어 둔 정수 멤버는 값을 넣기 전 읽지 않아요.

order.quantity만 5로 바꾼 뒤 cost()를 다시 호출하면? 단가 4는 그대로라 20이에요. 다음 과제에서는 주문 두 개를 각각 만들고 합쳐요.

직접 풀어봐요

제공된 Order 클래스로 주문 A와 B를 각각 만들어요. A에는 quantityA·priceA, B에는 quantityB·priceB를 담고, 두 객체의 cost()가 반환한 금액 합을 반환해요. 각 주문의 값은 해당 객체에 담아 호출해요.

네 매개변수는 모두 0~100이에요. 실행용 입력은 quantityA priceA quantityB priceB, 출력은 반환값이에요. 하네스가 입출력을 처리하고 Order 정의는 제공돼요.

예시 1: (2,5,3,4) → 22. A는 10원, B는 12원이에요. 예시 2: (0,7,4,2) → 8. A의 수량은 0이라 금액이 없고 B는 8원이에요.

예시 입력

2 5 3 4

예상 결과

22

예시 입력

0 7 4 2

예상 결과

8
핵심 개념
  • oop-inheritance-poly: 일반 변수와 함수에서 클래스·객체·멤버 접근으로 연결해요.

코드 작성과 채점은 로그인 후 이용해요

로그인하고 풀기