c ++ Interface (ระดับนามธรรม)
มันอธิบายลักษณะการทำงานของอินเตอร์เฟซและระดับการทำงานโดยไม่จำเป็นต้องให้เสร็จสมบูรณ์ระดับการดำเนินงานโดยเฉพาะอย่างยิ่ง
c ++อินเตอร์เฟซที่จะดำเนินการใช้ระดับนามธรรมระดับนามธรรมและไม่สับสนกับสิ่งที่เป็นนามธรรมข้อมูลนามธรรมข้อมูลที่เป็นแนวคิดของรายละเอียดการปฏิบัติที่เกี่ยวข้องกับข้อมูลที่แยก
ถ้าชั้นฟังก์ชั่นอย่างน้อยหนึ่งถูกประกาศเป็นฟังก์ชั่นเสมือนบริสุทธิ์แล้วระดับนี้เป็นระดับนามธรรม ฟังก์ชั่นเสมือนบริสุทธิ์โดยใช้ "= 0" ในงบที่ระบุไว้ดังต่อไปนี้:
class Box { public: // 纯虚函数 virtual double getVolume() = 0; private: double length; // 长度 double breadth; // 宽度 double height; // 高度 };
การออกแบบระดับนามธรรม (ปกติจะเรียกว่า ABC) มีวัตถุประสงค์เพื่อให้ผู้อื่นสามารถสืบทอดระดับชั้นฐานที่เหมาะสมระดับนามธรรมไม่สามารถใช้ในการยกตัวอย่างวัตถุก็สามารถนำมาใช้เป็นอินเตอร์เฟซ ถ้าคุณพยายามที่จะยกตัวอย่างวัตถุของระดับนามธรรมก็จะส่งผลในการรวบรวมข้อผิดพลาด
ดังนั้นถ้าเอบีซีเป็น subclass เป็น instantiated คุณต้องใช้แต่ละฟังก์ชันเสมือนก็หมายความว่า c ++ สนับสนุนการใช้อินเตอร์เฟซที่คำสั่งเอบีซี ถ้าไม่มีการบรรทุกเกินพิกัดฟังก์ชันเสมือนบริสุทธิ์ในชั้นเรียนมาพยายามที่จะยกตัวอย่างวัตถุของคลาสนี้จะทำให้เกิดการรวบรวมข้อผิดพลาด
ระดับสามารถใช้ในการยกตัวอย่างวัตถุที่เรียกว่าชั้นคอนกรีต
ตัวอย่างของระดับนามธรรม
พิจารณาตัวอย่างต่อไปนี้รูปร่างชั้นฐานให้getArea Interface ()สองชั้นเรียนมาสี่เหลี่ยมผืนผ้าและสามเหลี่ยมได้ตระหนักถึงใน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 Interface () สองชั้นเรียนมาคือวิธีการคำนวณพื้นที่ของขั้นตอนวิธีที่แตกต่างกันเพื่อให้บรรลุฟังก์ชันเดียวกัน
กลยุทธ์การออกแบบ
ระบบเชิงวัตถุอาจใช้ชั้นฐานนามธรรมให้เหมาะสมทั่วไปอินเตอร์เฟซที่เป็นมาตรฐานสำหรับการใช้งานภายนอกทั้งหมด จากนั้นเรียนมาโดยสืบทอดมาจากชั้นฐานนามธรรมใส่การดำเนินงานดังกล่าวทั้งหมดได้รับมา
ฟังก์ชั่น (เช่นฟังก์ชั่นของประชาชน) การใช้งานภายนอกให้ในรูปแบบของการเรียนฐานนามธรรมหน้าที่เสมือนบริสุทธิ์มีอยู่ ฟังก์ชั่นเหล่านี้เสมือนบริสุทธิ์จะดำเนินการในชั้นเรียนมาที่สอดคล้องกัน
สถาปัตยกรรมนี้ยังช่วยให้การใช้งานใหม่ได้อย่างง่ายดายสามารถเพิ่มเข้าไปในระบบแม้หลังจากที่ระบบจะยังคงสามารถกำหนดดังนั้น