? Objektorientierte Programmiersprachen wie C + + ( "C Plus Plus " oder CPP) folgen einem Paradigma der Programmierung auf die Wiederverwendung von Code und den Aufbau strukturelle Hierarchien in diesem Code ausgerichtet. Entwickler erstellen Klassen , um Daten in der Funktionalität in logische Teile zu kapseln. Sie tun dies, weil auch bestimmte Techniken in OOP , wie Vererbung , ermöglichen den Bau von komplexeren Klassen aus einfacheren . Entwickler können auch steuern, wie Klassen mit Klassen -Design-Vorlage als " Schnittstellen " oder " abstrakte Klassen " , wie andere Programmierer diese Klassen verwenden, fest implementiert sind. Objekte und Vererbung
Beim Erstellen von Klassen und Objekten für ein Programm in C + +, der Programmierer oft entdeckt, dass verschiedene Klassen überlappen oder teilen Sie ähnliche Funktionalität . Sie hat dann zwei Möglichkeiten : Schreiben Sie den funktionalen Code für beide Klassen , oder erstellen Sie ein "Basis" -Klasse mit all den gemeinsamen Merkmalen und Eigenschaften dieser Klassen . Dann können die beiden Klassen " inhärente " jene Züge , während es ihre eigenen. Zum Beispiel, wenn der Programmierer schreibt " Mitarbeiterin " und "Manager" -Klassen für ein Business- App , könnte sie eine einzelne "Employee " -Klasse, die gemeinsame Funktionalität und zwischen Mitarbeitern und Managern enthält .
< br > Virtual Functions
Basisklasse für jede andere Klasse kann Definitionen darüber, welche Klassen tun können. und welche Informationen sie enthalten. So könnte der Employee-Klasse aus dem Beispiel enthält eine Funktion zum Gehalt, das eine spezielle Formel enthält berechnen. Der Manager und Mitarbeiter , dass Klassen inhärente Funktion und damit die Formel . Allerdings könnten Führungskräfte und Mitarbeiter erfordern unterschiedliche Formel Gehalt berechnen. In diesem Fall würde die Basisklasse enthalten eine "virtuelle" Funktion . Die Basisklasse definieren würde ein Standard-Verhalten , aber die untergeordneten Klassen könnten dann ihre eigenen Formeln und Funktionen , wenn es sein muss .
Abstrakte Klassen
Neben virtuellen Funktionen , gibt es " rein" virtuelle Funktionen . Rein virtuelle Funktionen enthalten keine Definition einer Funktion . Vielmehr sie einfach eine Funktion definieren Namen. So, zum Beispiel, würde das Gehalt Berechnung Funktion in der Basisklasse als virtuelle Mitarbeiter ohne eine Definition deklariert werden. Dann würden die Manager- und Associate- Klassen definieren ihre eigenen Funktionen Gehalt berechnen. Wenn eine Klasse eine oder mehrere rein virtuelle Funktionen enthält , wird sie als eine abstrakte Klasse. Dies liegt daran, Klassen mit rein virtuellen Funktionen können nicht Objekte werden .
C + + Schnittstellen
Seit abstrakten Klassen können keine Objekte geworden , sie werden als " Schnittstellen ". Schnittstellen sind abstrakte Klassen , oft mit nur rein virtuelle Funktionen , die als Vorlage für andere gemeinsame Klassen dienen . Also, wenn der Mitarbeiter beispielsweise enthält nur rein virtuelle Funktionen , dann der Programmierer entwirft das Manager- und Associate- Klassen, aus denen Mitarbeiter als Schnittstelle erben , das heißt, sie müssen die rein virtuelle Funktionen des Employee-Klasse implementieren. Während die ISO C + +-Standard enthält keine spezifischen " Schnittstelle " Stichwort , Microsoft -Implementierung von C + + hat (Quelle 3). Hier ist ein Beispiel , um dieses relationship.class Mitarbeiter veranschaulichen {
public: virtual int calcSalary () = 0; //rein virtuelle Funktion
private: int ID ; };
< p > class Mitarbeiterin : public Angestellter {
public: int calcSalary () { //* muss * Mitarbeiterin implementieren calcSalary oder erhalte eine Fehlermeldung /* Code * /} };