Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

C++ Interfaces: Abstrakte Klassen & Pure Virtual Functions

Interface beschreibt Verhalten/Fähigkeiten einer C++-Klasse, ohne sich auf Implementierung festzulegen.

C++-Interfaces werden via abstrakte Klassen realisiert – nicht zu verwechseln mit Datenabstraktion (Trennung Implementierung/Daten).

Klasse wird abstrakt, indem mind. eine Funktion als rein virtuell (pure virtual) deklariert wird: = 0 in Deklaration.

class Box {
public:
    virtual double getVolume() = 0;  // Pure virtual
private:
    double length, breadth, height;
};

Zweck abstrakter Klassen (ABC)

Unterklasse eines ABC muss alle virtuellen Funktionen implementieren → unterstützt das Interface. Fehlende Implementierung + Instanziierungsversuch → Kompilierfehler.

Klassen, die instanziiert werden können = konkrete Klassen.

Beispiel: Shape-Hierarchie

#include <iostream>
using namespace std;
class Shape {
public:
    virtual int getArea() = 0;  // Interface
    void setWidth(int w) { width = w; }
    void setHeight(int h) { height = h; }
protected:
    int width, height;
};
class Rectangle: public Shape {
public:
    int getArea() { return width * height; }
};
class Triangle: public Shape {
public:
    int getArea() { return width * height / 2; }
};
int main() {
    Rectangle Rect; Triangle Tri;
    Rect.setWidth(5); Rect.setHeight(7);
    cout << "Rectangle area: " << Rect.getArea() << endl;  // 35
    Tri.setWidth(5); Tri.setHeight(7);
    cout << "Triangle area: " << Tri.getArea() << endl;  // 17
    return 0;
}

Abstrakte Klasse definiert Interface getArea(), zwei Klassen implementieren formelspezifisch.

Designstrategie

Objektorientiertes System nutzt abstrakte Basisklasse für gemeinsamen, standardisierten Interface für externe Anwendungen. Durch Vererbung entstehen abgeleitete Klassen mit ähnlicher Operation.

Architektur erlaubt einfache Erweiterung um neue Anwendungen, auch nach Systemdefinition.

C Sprache

  1. C# Abstrakte Klassen & Methoden meistern: Praktischer Leitfaden
  2. C++-Operatoren meistern: Ein vollständiger Leitfaden mit praktischen Beispielen
  3. C++ Klassen & Objekte: Praktischer Leitfaden zur objektorientierten Programmierung
  4. C++ Friend-Funktionen und Friend-Klassen: Zugriffskontrolle meistern
  5. C++ Klassentemplates meistern: Ein praktischer Leitfaden
  6. Java abstrakte Klassen und Methoden: Ein umfassender Leitfaden
  7. C++ Structures vs. Classes: Praktischer Leitfaden für Embedded-Entwickler
  8. C# Abstrakte Klassen: Praktisches Tutorial mit Code-Beispielen
  9. Java meistern: Objekte, Klassen und Kern-OOP-Konzepte verstehen
  10. Java Abstraktion erklärt: Code vereinfachen & Lesbarkeit steigern