객체 지향 프로그래밍의 기본 개념을 익히는 가장 좋은 방법 중 하나는 간단한 실습 예제를 직접 구현해 보는 것입니다. 이번 글에서는 C++의 클래스(class)를 활용하여 두 개의 사각형 정보를 입력받고, 각각의 면적을 계산하는 프로그램을 만들어 보겠습니다.
문제 정의
두 사각형의 가로(길이)와 세로(너비)가 주어졌을 때, 클래스를 사용하여 각 사각형의 면적을 구하는 것이 목표입니다.
예를 들어 입력값이 (10, 9)와 (8, 6)이라면 다음과 같이 계산됩니다.
- 첫 번째 사각형: 가로 10, 세로 9 → 면적 = 10 × 9 = 90
- 두 번째 사각형: 가로 8, 세로 6 → 면적 = 8 × 6 = 48
해결 접근 방법
이 문제는 객체 지향적으로 다음과 같은 단계로 해결할 수 있습니다.
Rectangle클래스를 정의하고, 가로와 세로를 저장할 멤버 변수l,b를 선언합니다.- 가로와 세로 값을 설정하는
input()함수를 정의합니다. - 면적(
l * b)을 반환하는area()함수를 정의합니다.
여기서 l과 b는 외부에서 직접 접근하지 못하도록 private으로 선언하여 캡슐화(encapsulation) 원칙을 지키는 것이 좋은 설계입니다.
C++ 구현 예제
아래 코드를 통해 실제 구현 방법을 확인해 보겠습니다.
#include <iostream>
using namespace std;
class Rectangle {
private:
int l, b; // 가로(l), 세로(b)
public:
void input(int len, int bre) {
l = len;
b = bre;
}
int area() {
return l * b; // 면적 = 가로 × 세로
}
};
int main() {
Rectangle r1, r2;
r1.input(10, 9);
r2.input(8, 6);
cout << "Area of r1: " << r1.area() << endl;
cout << "Area of r2: " << r2.area() << endl;
return 0;
}입력
(10, 9), (8, 6)
출력 결과
Area of r1: 90 Area of r2: 48
코드 설명
- 클래스 정의:
Rectangle클래스 내부에private영역에 멤버 변수l(가로)과b(세로)를 선언했습니다. - input() 함수: 매개변수로 전달받은 값들을 멤버 변수에 저장합니다.
- area() 함수: 저장된 가로와 세로를 곱한 값을 반환하여 면적을 계산합니다.
- main() 함수: 두 개의
Rectangle객체r1,r2를 생성하고, 각각 크기를 입력한 뒤 면적을 출력합니다.
마무리
이처럼 클래스를 사용하면 데이터(가로, 세로)와 그 데이터를 처리하는 함수(면적 계산)를 하나의 단위로 묶을 수 있습니다. 이는 코드의 재사용성과 유지보수성을 높여주며, 더 복잡한 도형 계산 프로그램으로 확장할 때도 동일한 구조를 활용할 수 있다는 장점이 있습니다.