- Inkapsulation und Erweiterungsfaehigkeit der Typen
- Vererbung
- Polymorphismus
- Überladen
- Virtuelle Funktionen
- Statische Klassenmitglieder
- Funktionstemplates
- Klassentemplates
- Abstrakte Klassen
Inkapsulation und Erweiterungsfaehigkeit der Typen
OOP ist balancierter Zugang zum Schreiben von Software. Daten und Verhalten sind zusammen verpackt. Diese Inkapsulation erzeugt die vom Benutzer bestimmten Datentypen, die eigene Sprachdatentypen und mit ihnen zusammenwirkende Typen erweitern. Erweiterungsfaehigkeit der typen ist die Moeglichkeit, die vom Benutzer bestimmten Datentypen der Sprache zuzusetzen, die so einfach verwendet werden können, wie Grundtypen.
Abstrakter Datentyp, zB. die Zeile ist die Beschreibung des idealen, allgemeinbekannten Verhaltens des Typs. Benutzer der Zeile weiss, dass Operationen, wie Konkatenanz oder Drucken bestimmtes Verhalten hat. Operationen on Konkatenanz und Drucken heissen Methoden.
Bestimmte ADT Realisierung kann Beschraenkungen haben; die Laenge von Zeilen kann ZB. begrenzt werden. Diese Beschraenkungen beeinflussen Verhalten, offen für alle. Zu gleicher Zeit beeinflussen interne oder geschlossene Realisierungsdetails das nicht, wie der Benutzer das Objekt sieht. ZB. die Zeile wird oft als Feld realisiert; dabei ist interne Grundadresse der Elemente dieses Feldes und sein Name für Benutzer nicht bedeutend sind.
Inkapsulation ist die Faehigkeit, interne Details zu verhuellen Versorgung mit dem offenen Interface zu dem vom Benutzer bestimmten Typ. In MQL5 werden wie in C++, Definitionen der Klasse und der Struktur (class und struct) mit den Schluesselwoertern des Zuganges private (geschlossen), protected (geschuetzt) und public (offen) verwendet.
Schluesselwort public zeigt, dass Zugang zu Gliedern, die ihm folgen, ist offen ohne Begrenzungen. Ohne dieses Schluesselwort sind Klassenglieder als Standardeinstellung geschlossen. Geschlossene Glieder sind erst den Funktionen-Gliedern der eigenen Klasse.
Geschuetzte Klassenglieder sind nicht nur für die Funktionen-Glieder der eigener Klasse, sondern auch für die Klassen-Nachfolger zugaenglich. Offene Glieder sind für jede Funktion innerhalb des Sichtbereiches der Klassenerklärung zugaenglich. Geschlossenheit ermöglicht Teil der Klassenrealisierung zu verhuellen, und verhindert damit nicht vorausgesehene Änderungen der Datenstruktur. Zugangsbegrezung oder Datenverhuellung ist eine Eigenschaft des objektorientiertes Programmieren.
Gewoehnlich versucht man, Klassenglieder zu schuetzen und sie mit dem Modifikator protected zu erklären, Einstellung und Lesen der Werte dieser Glieder ist durch sogenannte set- und get-Methoden durchgeführt, die vom Zugangsmodifikator , public bestimmt werden
Beispiel:
class CPerson
|
Solcher Zugang hat eine Reihe der Vorteile. Erstens kann nach dem Namen der Funktion verstanden werden, was sie macht - ob sie den Wert des Klassenglieders einstellt oder erhaelt. Zweitens können wir in der Zukunft Typ der Variable m_name in der Klasse CPerson oder in einer seiner sekundaeren Klasse verändert werden, wenn erforderlich.
In diesem Fall ist es genug, Realisierung der Funktionen SetName() und GetName() zu verändern, die Objekte der Klasse CPerson können im Programm ohne Änderungen im Kode verwende werden, denn der Benutzer wird nicht wissen, dass sich Datentyp m_name verändert hat.
Beispiel:
struct Name
|
Sehen Sie auch