C++에서 추상 클래스를 사용하여 인터페이스 구현

Migel Hewage Nimesha 2023년10월12일
  1. C++에서 추상 클래스의 개념
  2. C++를 사용하여 프로그램에서 순수 가상 기능 구현
C++에서 추상 클래스를 사용하여 인터페이스 구현

Java에서는 인터페이스를 사용하여 다중 상속을 수행합니다. 인터페이스는 필요한 레이아웃을 포함하지만 추상적이거나 메소드 본문이 없기 때문에 템플릿과 같습니다.

C++의 경우 Java와 달리 C++는 다중 상속을 지원하므로 인터페이스가 필요하지 않습니다. C++에서 인터페이스의 기능은 추상 클래스를 사용하여 달성할 수 있습니다.

C++에서 추상 클래스의 개념

추상 클래스는 최소한 하나의 순수 가상 함수가 있는 클래스입니다. 순수한 가상 함수만 선언할 수 있으며 이에 대한 정의가 없으며 선언에서 0을 할당하여 선언합니다.

추상 클래스는 코드를 재사용 가능하고 확장 가능하게 만드는 데 매우 유용합니다. 부모 클래스에서 상속되지만 고유한 정의를 가진 파생 클래스를 많이 만들 수 있기 때문입니다.

또한 추상 클래스는 인스턴스화할 수 없습니다.

예시:

class A {
 public:
  virtual void b() = 0;  // function "b" in class "A" is an example of a pure
                         // virtual function
};

함수 선언 중에 함수를 정의하는 동안 함수를 순수 가상으로 만들려고 하면 작동하지 않습니다.

C++를 사용하여 프로그램에서 순수 가상 기능 구현

부모 클래스로 shape가 있는 예를 고려하십시오. 모양에 관해서는 여러 가지 유형이 있으며, 예를 들어 면적과 같은 속성을 계산해야 할 때 계산하는 방법은 모양마다 다릅니다.

shape의 상위 클래스에서 상속되는 파생 클래스로서의 rectangletriangle. 그런 다음 고유한 파생 클래스의 각 모양(rectangletriangle)에 필요한 정의와 함께 순수 가상 함수를 제공합니다.

소스 코드:

#include <iostream>

using namespace std;
class Shape {
 protected:
  int length;
  int height;

 public:
  virtual int Area() = 0;

  void getLength() { cin >> length; }

  void getHeight() { cin >> height; }
};

class Rectangle : public Shape {
 public:
  int Area() { return (length * height); }
};

class Triangle : public Shape {
 public:
  int Area() { return (length * height) / 2; }
};

int main() {
  Rectangle rectangle;
  Triangle triangle;

  cout << "Enter the length of the rectangle: ";
  rectangle.getLength();
  cout << "Enter the height of the rectangle: ";
  rectangle.getHeight();
  cout << "Area of the rectangle: " << rectangle.Area() << endl;

  cout << "Enter the length of the triangle: ";
  triangle.getLength();
  cout << "Enter the height of the triangle: ";
  triangle.getHeight();
  cout << "Area of the triangle: " << triangle.Area() << endl;

  return 0;
}

출력:

Enter the length of the rectangle: 2
Enter the height of the rectangle: 4
Area of the rectangle: 8
Enter the length of the triangle: 4
Enter the height of the triangle: 6
Area of the triangle: 12
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.