Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

Antarmuka dalam C++ (Kelas Abstrak)

Antarmuka menggambarkan perilaku atau kemampuan kelas C++ tanpa melakukan implementasi tertentu dari kelas tersebut.

Antarmuka C++ diimplementasikan menggunakan kelas abstrak dan kelas abstrak ini tidak boleh disamakan dengan abstraksi data yang merupakan konsep menjaga detail implementasi terpisah dari data terkait.

Sebuah kelas dibuat abstrak dengan mendeklarasikan setidaknya satu dari fungsinya sebagai virtual murni fungsi. Fungsi virtual murni ditentukan dengan menempatkan "=0" dalam deklarasinya sebagai berikut

class Box {
   public:
      // pure virtual function
      virtual double getVolume() = 0;
      
   private:
      double length;      // Length of a box
      double breadth;     // Breadth of a box
      double height;      // Height of a box
};

Tujuan dari kelas abstrak (sering disebut sebagai ABC) adalah untuk menyediakan kelas dasar yang sesuai dari mana kelas lain dapat mewarisi. Kelas abstrak tidak dapat digunakan untuk membuat instance objek dan hanya berfungsi sebagai antarmuka . Mencoba membuat instance objek dari kelas abstrak menyebabkan kesalahan kompilasi.

Jadi, jika subclass dari ABC perlu dipakai, ia harus mengimplementasikan setiap fungsi virtual, yang berarti mendukung antarmuka yang dideklarasikan oleh ABC. Kegagalan untuk menimpa fungsi virtual murni di kelas turunan, lalu mencoba membuat instance objek kelas itu, adalah kesalahan kompilasi.

Kelas yang dapat digunakan untuk membuat instance objek disebut kelas beton .

Contoh Kelas Abstrak

Perhatikan contoh berikut di mana kelas induk menyediakan antarmuka ke kelas dasar untuk mengimplementasikan fungsi yang disebut getArea()

Demo Langsung
#include <iostream>
 
using namespace std;
 
// Base class
class Shape {
   public:
      // pure virtual function providing interface framework.
      virtual int getArea() = 0;
      void setWidth(int w) {
         width = w;
      }
   
      void setHeight(int h) {
         height = h;
      }
   
   protected:
      int width;
      int height;
};
 
// Derived classes
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);
   
   // Print the area of the object.
   cout << "Total Rectangle area: " << Rect.getArea() << endl;

   Tri.setWidth(5);
   Tri.setHeight(7);
   
   // Print the area of the object.
   cout << "Total Triangle area: " << Tri.getArea() << endl; 

   return 0;
}

Ketika kode di atas dikompilasi dan dieksekusi, menghasilkan hasil sebagai berikut

Total Rectangle area: 35
Total Triangle area: 17

Anda dapat melihat bagaimana kelas abstrak mendefinisikan antarmuka dalam istilah getArea() dan dua kelas lainnya mengimplementasikan fungsi yang sama tetapi dengan algoritme yang berbeda untuk menghitung area khusus untuk bentuk.

Merancang Strategi

Sistem berorientasi objek mungkin menggunakan kelas dasar abstrak untuk menyediakan antarmuka umum dan standar yang sesuai untuk semua aplikasi eksternal. Kemudian, melalui pewarisan dari kelas dasar abstrak itu, kelas turunan terbentuk yang beroperasi serupa.

Kemampuan (yaitu, fungsi publik) yang ditawarkan oleh aplikasi eksternal disediakan sebagai fungsi virtual murni di kelas dasar abstrak. Implementasi fungsi virtual murni ini disediakan di kelas turunan yang sesuai dengan jenis aplikasi tertentu.

Arsitektur ini juga memungkinkan aplikasi baru ditambahkan ke sistem dengan mudah, bahkan setelah sistem didefinisikan.


Bahasa C

  1. C# kelas abstrak dan metode
  2. Operator C++
  3. Kelas dan Objek C++
  4. Fungsi teman C++ dan Kelas teman
  5. Template Kelas C++
  6. Kelas Abstrak Java dan Metode Abstrak
  7. Struktur dan kelas dalam C++
  8. Tutorial Kelas Abstrak C# dengan Contoh:Apa itu Abstraksi?
  9. Java - Objek dan Kelas
  10. Java - Abstraksi