Operator Overloading, Mehrfachvererbung, Safe Pointer, Observer.

Slides:



Advertisements
Ähnliche Präsentationen
C Sharp (C#) Martin Saternus Senior Student Partner
Advertisements

Abstrakte Klassen Basisklassen sollten in der Regel sehr allgemein sein. Oft ist es nicht notwendig, dass Objekte dieser generellen Basisklassen angelegt.
FH-Hof Einbindung von JavaScript Anweisungen
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Programmieren mit JAVA
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
C++ Vererbung und Polymorphie
DVG Klassen und Objekte
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
1. Verhalten der Objekte: Operationen Werden in den Klassen definiert Werden (i.d.R.) auf einem Objekt aufgerufen Wird das Empfängerobjekt genannt Weitere.
Informatik 1 Letzte Übung.
Tutorium PG Verbesserung Blatt 5 Beim instanziieren eines Fahrrades muss es möglich sein, alle benötigten Attribute dem Konstruktor zu übergeben.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
HG13_ Herzgen, Jung & Lorkowski1 Java Programmierung BlueJ Workshop.
Einführung in die Programmierung mit Java
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Microsoft Student Partner
Neukonzeptionierung des SVNCheckers > Malte Legenhausen > DLR > Folie 1 Observer - Pattern Malte Legenhausen, Robert Werschnitzke Asea Brown.
Vererbung. Klassen - Vererbung  Eine Klasse kann von einer Basisklasse abgeleitet werden  Die abgeleitete Klasse erbt die Eigenschaften und Methoden.
1/23 RWTH AACHEN  UNIVERSITÄTSKLINIKUM INSTITUT FÜR MEDIZINISCHE INFORMATIK Wissensbasierte Systeme Java-Frameworks zur Generierung von Diagrammen Jenny.
Pointer. Precompiled Header  Vorübersetzung eingebundener Dateien häufig genutzt, selten geändert  Projekttyp „Win32 Console Application“
Einführung. Ziel der Veranstaltung  Vermittlung von Grundkenntnissen in C++  Solide Basis für anschließende Weiterentwicklung  Fähigkeit, kleine Programme.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Patrick Richterich Lattwein GmbH Web Services Softwareentwicklung mit SOAP.
C++ FÜR cOMPUTERSPIELENTWICKLER
Tutorium Software-Engineering SS14 Florian Manghofer.
Ein Spiel mit der SDL – Teil 2. Ein Spiel mit der SDL TSingleton CTimerCFramework CGame CPlayer CShot CAsteroids CSprite.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Tutorium Software-Engineering SS14 Florian Manghofer.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Arithmetik in Java Ganzzahl-Division Nulldivision führt zu einer ArithmeticException.
Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.
Singletons, Exceptions und (s)printf. Template Klassen  äquivalent zu Template-Funktionen  beim Erzeugen von Instanzen muss der Typ angegeben werden.
Tutorium Software-Engineering SS14 Florian Manghofer.
Schnittstellen.
Logisches Datenmodell
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
Friends C++ ermöglicht, einzelne Funktionen oder ganze Klassen zu friends zu erklären. Friendfunktionen haben Zugang zu den privaten Daten einer Klasse.
Referenzen In c kennen wir gewöhnliche Variablen und Pointer.
Grundkurs Informatik 11-13
© Christopher Hardt & Philippe Nix
Raphael Fischer Informatik II - Übung 06 Raphael Fischer
Von Cem, Maurice und lars
Objektorientierte Programmierung und Vererbung
Klassenbibliotheken: Einbinden und Benutzen von Klassen
Polymorphie Überladen
1. Die rekursive Datenstruktur Liste 1.3 Rekursive Funktionen
Interfaces Definition von Interfaces Verwendung von Interfaces
«Delegierter» Methoden Schablone Funktionszeiger
1. Die rekursive Datenstruktur Liste 1
Übersicht und Benutzung von Sphinx
9. Vererbung und Polymorphie
Pflichtteil 2016 Aufgabe 6: Gegeben ist die Gerade
Implementieren von Klassen
Statische und Nichtstatische Methoden Properties / Eigenschaften
Informatik Softwareentwicklung – 4.3 Entwurfsmuster
 Präsentation transkript:

Operator Overloading, Mehrfachvererbung, Safe Pointer, Observer

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

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

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 '+='

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 '+='

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

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!

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

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

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

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.

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

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

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

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

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

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

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

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

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

C++ Bibliotheken  OGRE Object-Oriented Graphics Rendering Engine 3D-Engine zur Verwendung hardwarebeschleunigter 3D Grafik unterstützt Direct3D und OpenGL gute Dokumentation

ENDE