[c++] C++를 사용한 데이터 모델링
C++는 강력하고 유연한 언어로, 데이터 모델링이나 시스템 설계에 매우 유용하다. C++를 사용하여 데이터 모델을 구축하고 관리하는 방법에 대해 알아보겠다.
1. 클래스와 객체
C++에서 데이터 모델링은 주로 클래스와 객체를 사용하여 이루어진다. 클래스는 데이터와 해당 데이터를 처리하는 함수를 함께 묶어 놓은 것이다. 객체는 특정한 클래스의 인스턴스로, 해당 클래스에 정의된 속성과 메서드를 가지고 있다.
class Employee {
private:
string name;
int age;
double salary;
public:
void setInfo(string n, int a, double s) {
name = n;
age = a;
salary = s;
}
void displayInfo() {
cout << "Name: " << name << ", Age: " << age << ", Salary: " << salary << endl;
}
};
Employee emp1;
emp1.setInfo("John", 30, 50000.00);
emp1.displayInfo();
위의 예제에서 Employee 클래스를 정의하고, setInfo 함수를 사용하여 객체의 데이터를 초기화하고 displayInfo 함수를 사용하여 정보를 출력한다.
2. 데이터 구조
C++에서는 배열, 구조체, 포인터 등 다양한 데이터 구조를 활용할 수 있다. 이러한 데이터 구조를 적절히 활용하여 복잡한 데이터를 모델링할 수 있다.
struct Point {
int x;
int y;
};
Point p1 = {3, 4};
cout << "X: " << p1.x << ", Y: " << p1.y << endl;
위의 예제에서는 Point 구조체를 사용하여 좌표를 표현한다.
3. 상속과 다형성
C++는 상속을 통해 기존 클래스를 확장하고, 다형성을 통해 객체의 동작을 다양화할 수 있는 기능을 제공한다. 이를 통해 데이터 모델을 유연하게 구성할 수 있다.
class Shape {
public:
virtual double area() = 0;
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double area() {
return 3.14 * radius * radius;
}
};
class Rectangle : public Shape {
private:
double length;
double breadth;
public:
Rectangle(double l, double b) : length(l), breadth(b) {}
double area() {
return length * breadth;
}
};
위의 예제에서는 Shape 클래스를 상속받아 Circle과 Rectangle 클래스를 정의하고, 다형성을 활용하여 각 도형의 넓이를 계산한다.
C++를 사용하여 데이터 모델링을 할 때, 클래스와 객체, 데이터 구조, 상속과 다형성을 적절히 활용하여 유연하고 효율적인 모델을 구축할 수 있다.