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 اجهة ()، واثنين من الفئات المشتقة هي كيفية حساب مساحة خوارزمية مختلفة لتحقيق نفس الوظيفة.

استراتيجية التصميم

وقد تستخدم الأنظمة وجوه المنحى فئة قاعدة مجردة يوفر و، عامة، واجهة موحدة مناسبة لجميع التطبيقات الخارجية. ثم، في فئة مشتقة من وراثة من فئة قاعدة مجردة، وطرح موروثة عن هذه العمليات.

وظيفة (أي وظيفة عامة) التطبيقات الخارجية المقدمة في شكل قاعدة مجردة الفئة توجد وظائف افتراضية خالصة. وتنفذ هذه الدالات الظاهرية خالصة في فئة مشتقة المقابلة.

تمكن هذه العمارة كما يمكن بسهولة تطبيقات جديدة تضاف إلى النظام، حتى بعد ما زال يمكن تعريف النظام بذلك.