Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Operator Overloading, Mehrfachvererbung, Safe Pointer, Observer.

Ähnliche Präsentationen


Präsentation zum Thema: "Operator Overloading, Mehrfachvererbung, Safe Pointer, Observer."—  Präsentation transkript:

1 Operator Overloading, Mehrfachvererbung, Safe Pointer, Observer

2 Operator Overloading  Ziel: Verwendung der gängigen Operatoren (+, =, ==,... ) für benutzerdefinierte Typen  Funktionsweise von Operatoren Funktionen spezieller Syntax unäre, binäre Operationen Definition beim Typ des (ersten) Operators

3 Operator overloading  Deklaration von Operatoren äquivalent zu Methodendeklaration statt Methodenname Schlüsselwort operator gewünschter Operator es gelten alle Regeln für overloading, overriding, virtual wie bei Methoden  Deklaration abhängig von gewünschter Funktionalität des Operators Rückgabewert als neues Objekt oder Referenz leere Parameterliste bei unärem, ein Parameter bei binärem Operator

4 Operator overloading retType [&]operator symb ([param]) [const]  retType Ergebnis der Operation z.B. bool bei '==' oder Ausgangstyp bei '+'  & wenn der zurückgegebene Wert keine neue (temporäre) Variable ist z.B. bei '+='

5 Operator overloading retType [&]operator symb ([param]) [const]  symb zu definierendes Operatorsymbol  param leer bei unären Operatoren rechter Operand bei binären Operatoren  const Basisoperand wird nicht geändert nicht bei '+='

6 Operator overloading  Unäres Minus '-' (Beispiel) classType operator – () const;  Addition mit Zuweisung '+=' (Beispiel) classType &operator += (const classType &var);

7 Mehrfachvererbung  Eine Klasse kann von mehreren Basisklassen abgeleitet werden  Auflistung des Basisklassen durch Komma separiert class derived : public base1, public base2  Eigenschaften und Methoden aus beiden Basisklassen stehen zur Verfügung  Vorsicht bei Ambiguitäten!

8 Mehrfachvererbung  Problem Ambiguität Beide (oder mehrere) Basisklassen verwenden die gleiche Methoden- / Eigenschaftsbezeichnung Methode / Eigenschaft muss in abgeleiteter Klasse überschrieben werden (overriding) überschriebene Methode muss sich um Aufruf der Basisklassen kümmern Auflösung über ScopeOperator

9 Safepointer  Ziel: ein Pointer zeigt entweder auf ein gültiges Objekt, oder auf NULL Vermeidung von Speicherfehlern  Weitere Eigenschaften Objekt löschen, wenn keine Referenzen mehr darauf zeigen Sicheres Umgehen mit zirkulären Referenzen

10 Safepointer  Kapselung von nativen Pointern in eine Templateklasse  Funktionalitäten Automatisches Initialisieren des Pointers bei Definition Funktion zum Erstellen eines Objektes Löschen von nicht mehr verwendeten Objekten Referenzzähler zwei Arten von Safepointern zur Vermeidung zirkulärer Referenzen

11 Safepointer  Variablen der eigentliche Zeiger Referenzzähler ○ starke Referenzen ○ gesamte Referenzen  2 unterschiedliche Klassen starke und schwache Pointer schwache Pointer erhöhen nur die gesamten Referenzen Schwache Zeiger liefern NULL, wenn die Anzahl der starken Referenzen 0 ist.

12 Safepointer  zusätzliche Eigenschaften threadsicheres Inkrementieren und Dekrementieren der Referenzzähler Überladung der Pointeroperationen *, ->, Zuweisung Überladung der Vergleichsoperationen unabhängig ob schwacher oder starker Pointer Funktion zum wrappen nativer (normaler) Pointer cast Operationen

13 Observer - Pattern  1:n Abhängigkeit  Benachrichtigung an abhängige Objekte, wenn das beobachtete Objekt seinen Zustand geändert hat  Publish-Subscribe  zur Erhaltung der Konsistenz lose gekoppelter Objekte

14 Observer - Pattern observer 1 tabelle observer 2 balken- diagramm observer 3 onlineupdate subject a=20 s="C++" f=23.45 Änderungsmitteilung Änderung, Anfrage

15 Observer – Pattern (Anwendung)  Kapselung verschiedener Aspekte einer Abstraktion, bei der ein Aspekt vom anderen abhängig ist  Eine Änderung eines Objektes erfordert die Änderung einer unbekannten Anzahl anderer Objekte  Ein Objekt soll andere Objekte benachrichtigen können, ohne nähere Informationen zu diesen Objekten zu besitzen

16 Observer - Pattern Quelle: Gamma et al.: Design Patterns

17 Observer - Pattern  Subject kennt seine Observer eine beliebige Anzahl Observer Objekte kann das Subject beobachten definiert ein Interface zum Hinzufügen und Entfernen von Observern  Observer definiert ein Update-Interface, welches von Änderungen im Subject benachrichtigt werden soll

18 Observer - Pattern  ConcreteSubject von Subject abgeleitet hält für ConcreteObserver interessante Zustände sendet eine Mitteilung an seine Observer, wenn sich sein Zustand geändert hat  ConcreteObserver von Observer abgeleitet hält eine Referenz auf ConcreteSubject hält Zustände, die konsistent mit Zuständen von ConcreteSubject sein sollen implementiert das Update-Interface zur Sicherstellung der Konsistenz

19 C++ Bibliotheken  Boost C++ Libraries freie, von Experten geprüfte, plattformunabhängige C++ Quellenbibliothek zielen auf Standardisierung Teile bereits im ersten Technischen Report des C++ Standards Committee low-level Funktionalitäten www.boost.org

20 C++ Bibliotheken  Qt plattformübergreifende Klassenbibliothek nicht C++ exclusiv zur Entwicklung grafischer Benutzeroberflächen bis Version 4.4 GPL, ab 4.5 LGPL Entwickler: QT Software http://www.qtsoftware.com/

21 C++ Bibliotheken  OGRE Object-Oriented Graphics Rendering Engine 3D-Engine zur Verwendung hardwarebeschleunigter 3D Grafik unterstützt Direct3D und OpenGL gute Dokumentation http://www.ogre3d.org/

22 ENDE


Herunterladen ppt "Operator Overloading, Mehrfachvererbung, Safe Pointer, Observer."

Ähnliche Präsentationen


Google-Anzeigen