Latest web development tutorials

C ++ 인터페이스 (추상 클래스)

이 특정 구현 클래스를 완료하지 않고, 인터페이스와 기능 클래스의 동작을 설명한다.

C ++ 인터페이스추상 클래스 추상 클래스를 이용하여 구현되며, 데이터 추상화와 혼동하지 않는 데이터 추상화는 분리 된 데이터와 관련된 상세한 구현하는 개념이다.

적어도 하나의 기능 클래스 순수 가상 함수로 선언 된 경우,이 클래스는 추상 클래스이다. 다음과 같이 지정된 문에서 "= 0"을 사용하여 순수 가상 함수 :

class Box
{
   public:
      // 纯虚函数
      virtual double getVolume() = 0;
   private:
      double length;      // 长度
      double breadth;     // 宽度
      double height;      // 高度
};

목적은 다른 클래스가 해당 기본 클래스를 상속 제공하는 것이다 (일반적으로 ABC 라 칭함)추상 클래스 디자인.추상 클래스 오브젝트를 인스턴스화하는데 사용될 수없고, 그것은 단지인터페이스로서 사용될 수있다.당신이 추상 클래스의 객체를 인스턴스화하려고하면 컴파일 오류가 발생합니다.

ABC 방송의 서브 클래스가 인스턴스화 따라서, 각 가상 함수를 구현해야합니다, 또한 C ++은 ABC 문 인터페이스의 사용을 지원하는 것을 의미한다. 파생 클래스에는 오버로드 순수 가상 함수가없는 경우, 컴파일러 오류가 발생합니다이 클래스의 개체를 인스턴스화하려고합니다.

클래스는구상 클래스 호출되는 객체를 인스턴스화하는 데 사용할 수 있습니다.

추상 클래스의 인스턴스

다음 예를 고려, 기본 클래스의 모양은인터페이스의 getArea ()를, 두 개의 파생 클래스 사각형과 삼각형이의 getArea ()에서실현되었다 제공합니다:

#include <iostream>
 
using namespace std;
 
// 基类
class Shape 
{
public:
   // 提供接口框架的纯虚函数
   virtual int getArea() = 0;
   void setWidth(int w)
   {
      width = w;
   }
   void setHeight(int h)
   {
      height = h;
   }
protected:
   int width;
   int height;
};
 
// 派生类
class Rectangle: public Shape
{
public:
   int getArea()
   { 
      return (width * height); 
   }
};
class Triangle: public Shape
{
public:
   int getArea()
   { 
      return (width * height)/2; 
   }
};
 
int main(void)
{
   Rectangle Rect;
   Triangle  Tri;
 
   Rect.setWidth(5);
   Rect.setHeight(7);
   // 输出对象的面积
   cout << "Total Rectangle area: " << Rect.getArea() << endl;

   Tri.setWidth(5);
   Tri.setHeight(7);
   // 输出对象的面积
   cout << "Total Triangle area: " << Tri.getArea() << endl; 

   return 0;
}

상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를

Total Rectangle area: 35
Total Triangle area: 17

상기 예에서, 우리는 추상 클래스가 인터페이스의 getArea ()를 정의하는 방법을 볼 수있는 두 가지 파생 클래스는 동일한 기능을 달성하기 위해 다른 알고리즘의 면적을 계산하는 방법이다.

디자인 전략

객체 지향 시스템은 추상 기본 클래스는 모든 외부 애플리케이션에 적합한 일반, 표준화 된 인터페이스를 제공합니다 사용할 수 있습니다. 그런 다음, 추상 기본 클래스에서 상속에 의해 파생 된 클래스는 이러한 모든 작업을 상속했습니다.

기능 (즉, 공공 기능) 순수 가상 함수가 존재 추상 기본 클래스의 형태로 제공 외부 응용 프로그램. 이 순수 가상 함수는 해당 파생 클래스에서 구현됩니다.

이 아키텍처는 또한 새로운 어플리케이션이 쉽게 시스템이 여전히 정의 될 수 후에도 시스템에 추가 될 수 있습니다.