[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++를 사용하여 데이터 모델링을 할 때, 클래스와 객체, 데이터 구조, 상속과 다형성을 적절히 활용하여 유연하고 효율적인 모델을 구축할 수 있다.

참고 자료