Pods und Objects (Klassen)

Größe: px
Ab Seite anzeigen:

Download "Pods und Objects (Klassen)"

Transkript

1 Pods und Objects (Klassen) Grundbegriffe: Pods = Plain Old Data: Es handelt sich dabei hauptsächlich um die schon in C eingebauten Datentypen wie Ganzzahltypen: char, short, int, long, long long (auch unsigned) Gleitkommatypen: float, double, long double alle Pointer Arrays von solchen Typen bool Definiert man Variablen von diesem Typ, erfolgt kein automatischer Aufruf einer Funktion. Lokale pod-variablen werden nicht implizit initialisiert (d.h. sie haben nach einer Definition einen zufälligen Wert) : int x; int y = 1; // x hat hier einen undefinierten Startwert // y wird hier explizit auf 1 initialisiert Werden pods gelöscht (z.b. lokale Variablen beim Verlassen dieser Funktion), erfolgt ebenfalls kein automatischer Aufruf einer Funktion. Objekte = Mittels class oder struct definierte Datentypen, die sowohl Datenbestandteile als auch Funktionen (= Methoden) haben können. Definiert man Variablen von diesem Typ (man "instanziert" die Objekte), werden IMMER spezielle Funktionen aufgerufen (die Konstruktoren, constructors, oft kurz ctor genannt). Werden solche Variablen vernichtet, werden ebenfalls IMMER Funktionen aufgerufen (Destruktoren, destructor of kurz dtor genannt). Klasse und Struktur (class and struct) Implementiert man in C++ einen etwas komplexeren Datentyp, wählt man dafür zumeist eine Klasse (class), seltener eine Struktur (struct). Beide Varianten unterscheiden sich nur in der Voreinstellung der Zugriffsrechte (class private:, struct public:) class MyClass { // die Bestandteile der Klasse, default private: }; // der Strichpunkt ist Wichtig!!!!

2 struct MyStruct { // die Bestandteile der Struktur, default public: }; // der Strichpunkt ist Wichtig!!!! Bestandteile der Klasse(Struktur) können sein (nicht vollständig): Datenobjekte, sog. Attribute: z.b. int x, y; Es spielt keine Rolle, wie komplex diese Objekte sind. Auch Instanzen anderer Klassen oder Arrays sind selbstverständlich möglich. Funktionsdeklarationen (= Klassenfunktionen, Memberfunktionen): z.b. int func1(int a); // mit ; am Ende inline-funktionsdefinitionen: z.b. int func2(int a) { return a+1; } // kein ; am Ende nach } friend-funktionsdeklarationen: z.b. friend double f(double x); friend-klassen: z.b. friend class AnotherClass; (macht alle Memberfunktionen von AnotherClass zu friend-funktionen). Typdeklarationen (diese gelten dann nur innerhalb dieser Klasse) Auf die Bestandteile der Klasse wird wie bei C-Strukturen zugegriffen: MyClass c, *p = &c; // Eine Klassen-Instanz und ein Pointer darauf c.x = 1; // das Objekt c hat das Attribut x c.func1(5); // das Objekt c hat die Funktion func1(), wird mit // Argument 5 aufgerufen p->y = 5; // das referenzierte Objekt hat das Attribut y p->func2(9); // das referenzierte Objekt hat die Funktion func2(), // diese wird mit Argument 9 aufgerufen MyClass& r = c; // eine Referenz auf c r.y = 1; // dasselbe wie c.y = 1; Zusätzlich kann man noch den Zugriffsschutz explizit definieren. Alles nach public: ist public (d.h. darf im gesamten Programm verwendet werden), alles nach private: ist privat (d.h. darf nur in den Klassenmethoden und in befreundeten Funktionen verwendet werden) und alles nach protected: ist protected (darf nur von dem Methoden der Klasse selbst, von Methoden der direkt abgeleiteten Klassen und von Freunden verwendet werden). Diese 3 Labels können in beliebiger Reihenfolge und Anzahl in der Klassendefinition

3 aufscheinen. Normalerweise verwendet man aber jedes Label nur einmal. Die übliche Reihenfolge ist public vor protected und private (das ist kein Muss). Der Konstruktor, constructor, ctor: Konstruktoren sind Memberfunktionen, die gleich wie die Klasse heißen. Eine Klasse kann beliebig viele Konstruktoren besitzen, wenn diese sich in der Parameterliste unterscheiden (Überladen von Funktionen). Konstruktoren haben KEINEN Rückgabetyp (kein void!!!). Ein Konstruktor, der ohne Argumente aufrufbar ist, heißt "Standardkonstruktor" oder "default constructor". class Complex { // komplexe Zahlen double re, im; // private Attribute Realteil, Imaginärteil public: Complex() { re = im = 0; } // Standard-Konstruktor Complex(double r) { re = r; im = 0; } // 2. Konstruktor Complex(double r, double i) { re = r; im = i; } // 3. }; Konstruktoren werden fast NIE explizit aufgerufen, ihr Aufruf erfolgt bei jeder Definition von Objekten dieses Typs (= Instanzen). Bei jeder Definition einer Klasseninstanz wird ein Konstruktor aufgerufen, es handelt sich daher IMMER um ausführbaren Code. Es gibt mehrere zulässige Definitionsarten. Um den ersten Konstruktor (Standardkonstruktor) aufzurufen, verwendet man: Complex z1; // ruft den Konstruktor z1.complex() auf. Complex z2{}; // ruft den Konstruktor z2.complex() auf. Seit C++11 Complex z3(); // ACHTUNG: das definiert keine Instanz von Complex, sondern definiert eine Funktion z3() ohne Argumente, die ein Complex zurückgibt. Um den 2. Konstruktor aufzurufen, verwendet man: Complex z1(1); // ruft den Konstruktor z1.complex(1) auf. Complex z2{1}; // ruft den Konstruktor z2.complex(1) auf. Seit C++11 Complex z3 = 1; // ruft den Konstruktor z3.complex(1) auf Complex z4 = {1}; // ruft den Konstruktor z4.complex(1) auf. Seit C++11 Um den 3. Konstruktor aufzurufen, verwendet man: Complex z1(1, 2); // ruft den Konstruktor z1.complex(1, 2) auf. Complex z2{1, 2}; // ruft den Konstruktor z2.complex(1, 2) auf. Seit C++11 Complex z3 = {1, 2};// ruft den Konstruktor z3.complex(1, 2) auf. Seit C++11

4 1) Auch Konstruktoren können public oder auch private oder protected sein. 2) Besitzt eine Klasse keinen Konstruktor (und es wird ein default constructor benötigt), fügt C++ zur Klasse einen trivialen public: default constructor hinzu, der nur aus {} besteht. 3) Die von C++ empfohlene Aufrufart ist seit C++11 jene mit {}, die aber inkompatibel zu älteren Compilern ist. Bei STL-Containern ist der Aufruf mittels ( ) verschieden vom Aufruf mit { }. 4) Bei allen Konstruktoren (aber nur bei diesen) sind Initialisierungslisten für die Objektattribute zulässig und empfohlen. Mit diesen kann man Konstruktor-Aufrufe für die Attribute festlegen. Die Reihenfolge muss der Objektdefinition entsprechen. Ein hier fehlendes Attribut wird mit dem default constructor initialisiert. Complex(double r, double i) : re(r), im(i) {} // Prä-C++11 Complex(double r, double i) : re{r}, im{i} {} // C++11 Complex(double r, double i) : re{r} {} // im default initialisiert Complex(double r, double i) : im(i), re(r) {} // falsche Reihenfolge Der Kopier-Konstruktor (copy constructor) Der Kopierkonstruktor ist ein Konstruktor, der ein Objekt als Kopie eines anderen Objekts vom gleichen Typ initialisiert. Es gibt im Wesentlichen nur folgende erlaubte Signaturen: Complex(const Complex& original) Complex(Complex& original) // Übergabe per konstanter Referenz // Übergabe per Referenz Besitzt eine Klasse keinen Kopierkonstruktor und es wird einer benötigt, fügt C++ einen einfachen public: Kopierkonstruktor hinzu, der alle Teile des Originals kopiert (d.h. deren Kopierkonstruktoren aufruft) Aufrufe des Kopierkonstruktors: Complex original{1, 2}; Complex z1(original); Complex z2{original}; Complex z3 = original; Complex z3 = {original}; // prä-c++11 // C++11 // C++11

5 Der Zuweisungsoperator, assignment operator (operator=) Der Zuweisungsoperator wird verwendet, um einer Instanz den Inhalt einer anderen zuzuweisen. Ein =-Zeichen in einer Definition ist KEINE Zuweisung sondern eine alternative Schreibweise für einen Konstruktor. Es gibt 2 erlaubte Signaturen (rhs steht für "right hand side"): operator=(const Complex& rhs) // Übergabe von rhs per konstanter Referenz operator=(complex rhs) // Übergabe von rhs per Wert Da die Zuweisung bei Pods in C/C++ immer den zugewiesenen Wert als Ergebnis hat, wird empfohlen, das auch beim Zuweisungsoperator beizubehalten, d.h. der Rückgabewert ist zumeist eine Referenz (oft auch konstant) auf das Referenzobjekt. Damit wäre eine sinnvolle vollständige Implementierung: Complex& operator=(const Complex& rhs) { re = rhs.re; im = rhs.im; // kopiere die Attibute return *this; // gib Referenz zurück } Complex a, b, c; a = b = c = Complex{0, 1}; // setze alle 3 auf i Falls man einen Zuweisungsoperator schreibt, MUSS dieser auch bei Zuweisungen an sich selbst funktionieren, d.h. ein Statement wie z = z; darf nicht zu einem Fehler führen. Complex z1 = 5, z2 = z1; // entspricht z1{5}, z2{z1} KEINE Zuweisung z1 = z2; // Zuweisungsoperator Besitzt eine Klasse keinen Zuweisungsoperator und es wird einer benötigt, fügt C++ einen einfachen public: Zuweisungsoperator hinzu, der alle Teile des Originals an jene des Ziels zuweist. Seit C++11 heißt dieser Zuweisungsoperator übrigens copy assignment operator, da es ab dann auch einen move assignment operator gibt/geben kann.

6 Der Destruktor, destructor, dtor Er hat immer den Namen ~Klassenname(), es darf nirgends void stehen. Deshalb kann es auch nur einen einzigen Destruktor pro Klasse geben. Er wird fast NIE explizit aufgerufen sondern wird von C++ vollautomatisch aufgerufen, falls eine Instanz vernichtet wird (lokale Objekte beim Ende der Funktion, globale Objekte am Programmende nach main()). Sehr häufig macht man sich diese Automatik-Funktion zunutze, um automagisch Funktionen ohne expliziten Aufruf einzusetzen. Besitzt eine Klasse keinen Destruktor und es wird einer benötigt, fügt C++ einen einfachen public: Destruktor hinzu, der nur aus {} besteht. Der move constructor (C++11) Seit C++11 kann eine Klasse auch einen solchen Konstruktor besitzen, der eine Instanz als Kopie eines temporären Originals erstellt und dabei dessen Ressourcen "klaut", wann immer das möglich ist. Alle STL-Containerklassen besitzen einen solchen Konstruktor, ebenso die std::string Klasse. Dieser Konstruktor ist nur dann sinnvoll, wenn die Klassen über dynamische Inhalte verfügen, die vom Original zum Ziel verschoben werden können (deshalb: move). Obwohl das bei der Klasse Complex nicht zutrifft, könnte man ihn trotzdem definieren: Complex(Complex&& temp) // Übergabe per rvalue-referenz : re{temp.re}, im{temp.im} {} Complex z1{1, 2}; Complex z2{sin(z1)}; // sin(z1) ist eine temporäre Complex-Instanz Besitzt eine Klasse keinen move-constructor und es könnte einer eingesetzt werden, so fügt C++ unter bestimmten Voraussetzungen einen einfachen public: move constructor hinzu. Der move assignment operator (C++11) Dieser Zuweisungsoperator wird verwendet, um einer Instanz den Inhalt einer temporären anderen zuzuweisen und dabei deren Ressourcen zu "klauen". Obwohl er für die Klasse Complex keine Vorteile bietet, könnte man ihn wie folgt programmieren:

7 Complex& operator=(complex&& temp) { re = temp.re; im = temp.im; // kopiere die Attibute return *this; // gib Referenz zurück } Complex z1{1,2}, z2; z2 = sin(z1); // die rechte Seite ist ein temporary (R-value) Besitzt eine Klasse keinen move assignment operator und es könnte einer eingesetzt werden, so fügt C++ unter bestimmten Voraussetzungen einen einfachen public: move assignment operator hinzu. Die Übergabe des Referenzobjekts Bei jedem expliziten oder impliziten Methodenaufruf gibt es ein Referenzobjekt: Complex z{1}; // implizit: Aufruf von z.complex(1), z ist das Referenzobjekt z.abs(); // explizit: z ist Referenzobjekt Dieses Objekt taucht nie in der Parameterliste auf und wird auch NIE deklariert. Innerhalb jeder nichtstatischen Klassenmethode (nicht aber in friend-funktionen) gibt es den Pointer this,der auf das Referenzobjekt zeigt. In den meisten Fällen darf man das eigentlich nötige this-> weglassen. Bei den komplexen Zahlen steht z.b. im Konstruktor einfach Complex(double r = 0, double i = 0) { re = r; im = i; } statt: Complex(double r = 0, double i = 0) { this->re = r; this->im = i; } const, aber richtig Es ist guter Stil in C++ (und manchmal auch Pflicht), alle Parameter, die per Pointer oder Referenz übergeben werden und die innerhalb einer Funktion nicht verändert werden (auch nicht auf dem Umweg über weitere Funktionen!) mit dem Zusatz const zu versehen. Wird das Referenz-Objekt einer Methode nicht verändert, so nennt man diese eine konstante Methode und man schreibt das const nach die schließende Klammer ) vor dem ; oder {

8 void print() const; // gib die komplexe Zahl (Referenzelement) aus, diese bleibt dabei unverändert. C++ beachtet diese Zusätze genauestens. Unterscheidet sich die Funktionsdefinition auch nur in einem const-zusatz, ist es eine andere Funktion: void print() {} // eine andere Print-Funktion oder Methode Destruktoren, Konstruktoren und Initialisierungslisten, Typ-Umwandlung Jeder Konstruktor und Destruktor (auch der völlig leere) führen vollautomatisch weitere Dinge aus: Konstruktor: VOR dem eigenen Code (also vor den Statements zwischen { und }) ruft der Konstruktor für alle Attribute der Klasse (und für alle Basis-Klassen, wenn die Klasse von anderen abgeleitet ist) deren Standardkonstruktor auf, falls keine Initialisierungsliste vorhanden ist. Falls diese Teile selbst wieder Klassenobjekte sind, werden auch deren Teile konstruiert usw. Destruktor: Nach dem eigenen Code ruft der Destruktor auch die Destruktoren aller Attribute (und der Basis-Klassen) auf. Initialisierungsliste: Diese steht optional zwischen den Funktionsklammern ( ) und dem Code { }. Nach einem Doppelpunkt folgen die Konstruktoraufrufe von einigen oder allen Attributen und Basisklassen. So kann man selbst festlegen, mit welchem Konstruktor die Attribute erzeugt werden. Nicht angeführte Attribute werden nach wie vor per Standardkonstruktor erzeugt. Eine Initialisierungsliste ist Pflicht, falls wenigstens ein Attribut keinen Standardkonstruktor besitzt. Darüber hinaus ist es oft effizienter, den Konstruktor selbst auszuwählen. Die Reihenfolge der Konstruktoraufrufe sollte der Reihenfolge der Definitionen entsprechen, sonst gibt es Compiler-Warnungen! Complex(double r = 0, double i = 0): re(r), im(i) { } falsche Reihenfolge: Complex(double r = 0, double i = 0): im(i), re(r) { } Seit C++11 darf eine Initialisierungsliste auch einen anderen Konstruktor derselben Klasse aufrufen (constructor delegation). Eine nicht sehr elegante Version hier:

9 Complex (double r, double i) : Complex{r} // verwendet diesen ctor { im = i; } // und setzt nur noch den Imaginärteil Typ-Umwandling: Konstruktoren, die mit genau einem Argument eines anderen Typs aufgerufen werden können, werden auch als Typumwandlungs-Funktionen verwendet. Im obigen Fall würde der Konstruktor Complex(double r) auch als Umwandlungsfunktion von double in Complex verwendet werden, was mathematisch sogar Sinn macht. Also wird man diese Zusatzfunktion wohl beibehalten. Will man einen Konstruktor NICHT als Umwandlungsfunktion einsetzen, schreibt man vor ihn das Schlüsselwort explicit. Complex(double r = 0, double i = 0) ist auch eine Typumwandlung explicit Complex(double r = 0, double i = 0) ist keine Typumwandlung, sondern nur Konstruktor. Vererbung ohne viele Details Manchmal möchte man kleine Variationen einer Klasse programmieren. Anstatt nun alles neu zu kodieren, kann man die neue Klasse auch als Erweiterung von schon existierenden Klassen erstellen. Sie erbt dann von der (den) existierenden Klasse(n) (= Basisklasse(n)) alles und wird zur abgeleiteten Klasse. Das sprachliche Äquivalent ist "ist eine (Art)": Ein Säugetier ist ein Tier, also macht es Sinn, die Klasse Säugetiere von der Klasse Tier abzuleiten. In der neuen Klasse werden dann nur die zusätzlich benötigten Attribute oder Methoden definiert oder aber die geänderten Methoden überladen. Die neue Klasse kann auch auf jene Teile der Basisklasse(n) zugreifen, die public: oder protected: sind (nicht aber auf die private: Teile).

Pods und Objects (class und struct)

Pods und Objects (class und struct) Grundbegriffe: Pods und Objects (class und struct) Pod = Plain Old Data: Es handelt sich dabei hauptsächlich um die schon in C eingebauten Datentypen wie z.b. Ganzzahltypen: char, short, int, long, long

Mehr

Pods und Objects (class und struct)

Pods und Objects (class und struct) Grundbegriffe: Pods und Objects (class und struct) Pod = Plain Old Data: Es handelt sich dabei hauptsächlich um die schon in C eingebauten Datentypen wie z.b. Ganzzahltypen: char, short, int, long, long

Mehr

Vorlesungsprüfung Programmiersprache 1

Vorlesungsprüfung Programmiersprache 1 Vorlesungsprüfung Programmiersprache 1 Termin der Prüfung: 1) Di 20.03.2018 16:15 17:00 HSB 3 2) Di 15.05.2018 16:15 17:00 HSB 3 3) Di 12.06.2018 16:15 17:00 HSB 3 Stoffgebiete: 1) Ganzzahltypen: char,

Mehr

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue

Mehr

1 KLASSENKOMPONENTEN. Leitideen: Klassen sind aus Datenkomponenten und Komponentenfunktionen

1 KLASSENKOMPONENTEN. Leitideen: Klassen sind aus Datenkomponenten und Komponentenfunktionen 1 KLASSENKOMPONENTEN Leitideen: Klassen sind aus Datenkomponenten und Komponentenfunktionen zusammengesetzt. Die Komponentenfunktionen haben über eine Zeigervariable direkten Zugriff auf das Objekt. Die

Mehr

Funktionen: Rückgabewert

Funktionen: Rückgabewert Funktionen: Rückgabewert Jede Funktion in C++ (außer Konstruktoren und Destruktoren siehe später) MUSS einen Rückgabewert-Typ vereinbaren. Gibt sie nichts zurück, muss der Rückgabetyp void sein. Jede return-anweisung

Mehr

10.4 Konstante Objekte

10.4 Konstante Objekte 10.4 Konstante Objekte Genau wie bei einfachen Datentypen (int,double,...) kann man auch Objekte als const deklarieren. Eine solche Deklaration bedeutet, daß alle Attribute so behandelt werden, als wären

Mehr

Einführung in die Programmierung mit C++

Einführung in die Programmierung mit C++ 1 Seite 1 Einführung in die Programmierung mit C++ Teil III - Objektorientierte Programmierung 9. Klassen und Methoden Was sind Klassen? Seite 2 sprachliches Mittel von C++ um objektorientierte Programmierung

Mehr

Objekte wie Hund und Katz

Objekte wie Hund und Katz Objekte wie Hund und Katz Wir wollen den Titel wörtlich nehmen und Hunde sowie Katzen als neue C++ Objekte (= eigener Datentyp) definieren. Dazu gibt es in C die Struktur (struct), in C++ zusätzlich die

Mehr

7. Übung Informatik II - Objektorientierte Programmierung

7. Übung Informatik II - Objektorientierte Programmierung 7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber

Mehr

Prof. W. Henrich Seite 1

Prof. W. Henrich Seite 1 Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse

Mehr

Programmieren in C++ Überladen von Methoden und Operatoren

Programmieren in C++ Überladen von Methoden und Operatoren Programmieren in C++ Überladen von Methoden und Operatoren Inhalt Überladen von Methoden Überladen von Operatoren Implizite und explizite Konvertierungsoperatoren 7-2 Überladen von Methoden Signatur einer

Mehr

Programmierkurs C/C++

Programmierkurs C/C++ Blockkurs: "Einführung in C/C++" Programmierkurs C/C++ Freitag Sandro Andreotti andreott@inf.fu-berlin.de WS 2008/09 1 Blockkurs: "Einführung in C/C++" 2 Vererbung Klassen erben die Member von Basisklassen:

Mehr

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

C++ Notnagel. Ziel, Inhalt. Programmieren in C++ C++ Notnagel Ziel, Inhalt Ich versuche in diesem Dokument noch einmal die Dinge zu erwähnen, die mir als absolut notwendig für den C++ Unterricht und die Prüfungen erscheinen. C++ Notnagel 1 Ziel, Inhalt

Mehr

C++ Klassen weitere Funktionen

C++ Klassen weitere Funktionen C++ Klassen weitere Funktionen Übersicht static Elemente const Elemente Zusätzliches zu Konstruktoren Kopier-Konstruktor Konvertierung-Konstruktor Initialisierungslisten Friend Funktionen 2 Statische Klassenkomponenten

Mehr

Klassen. Kapitel Klassendeklaration

Klassen. Kapitel Klassendeklaration Kapitel 4 Klassen Wir kommen nun zu einem sehr wichtigen Aspekt der OOT: zu den Klassen. Eine Klasse ist eine vom Benutzer definierte Datenstruktur, eine Sammlung von Variablen (unterschiedlichen Typs)

Mehr

C++ - Objektorientierte Programmierung Konstante und statische Elemente

C++ - Objektorientierte Programmierung Konstante und statische Elemente C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja

Mehr

Programmieren in C++ Klassen

Programmieren in C++ Klassen Programmieren in C++ Klassen Inhalt Klassen (vertieft) Destruktor Konstruktoren Move-Semantik und Rechtswert-Referenzen (C++11) C++11 Features Prof. Dr. C. Stamm Programmieren in C++, FS 13 4-2 Implementierung

Mehr

Mapra: C++ Teil 6. Felix Gruber, Sven Groß. IGPM, RWTH Aachen. 13. Juni 2017

Mapra: C++ Teil 6. Felix Gruber, Sven Groß. IGPM, RWTH Aachen. 13. Juni 2017 Mapra: C++ Teil 6 Felix Gruber, Sven Groß IGPM, RWTH Aachen 13. Juni 2017 Felix Gruber, Sven Groß (IGPM, RWTH Aachen) Mapra: C++ Teil 6 13. Juni 2017 1 / 22 Was bisher geschah Klassen I Attribute und Methoden

Mehr

Themen. Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren

Themen. Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren Themen Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren Statische Methoden Klassenmethoden Merkmal der Klasse nicht eines einzelnen Objekts

Mehr

Lambda-Funktionen. Lambda-Funktionen. Lambda-Funktionen sollen

Lambda-Funktionen. Lambda-Funktionen. Lambda-Funktionen sollen Lambda-Funktionen Lambda-Funktionen sind Funktionen ohne Namen. definieren ihre Funktionalität an Ort und Stelle. können wie Daten kopiert werden. können ihren Aufrufkontext speichern. Lambda-Funktionen

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

Vorkurs Informatik: Erste Schritte der Programmierung mit C++

Vorkurs Informatik: Erste Schritte der Programmierung mit C++ Vorkurs Informatik WS 14/15 Vorkurs Informatik: Erste Schritte der Programmierung mit C++ Tag 3: Objektorientiere Programmierung 8. Oktober 2014 Vorkurs Informatik WS 14/15 > Einführung Agenda 1 Einführung

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung

Mehr

DAP2-Programmierpraktikum Einführung in C++ (Teil 2)

DAP2-Programmierpraktikum Einführung in C++ (Teil 2) DAP2-Programmierpraktikum Einführung in C++ (Teil 2) Carsten Gutwenger 18. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Dynamischer Speicher Klassen und

Mehr

Polymorphismus 179. Function.h. #include <string>

Polymorphismus 179. Function.h. #include <string> Polymorphismus 179 #include Function.h class Function { public: virtual ~Function() {}; virtual std::string get_name() const = 0; virtual double execute(double x) const = 0; }; // class Function

Mehr

Praxisorientierte Einführung in C++ Lektion: "Vererbung"

Praxisorientierte Einführung in C++ Lektion: Vererbung Praxisorientierte Einführung in C++ Lektion: "Vererbung" Christof Elbrechter Neuroinformatics Group, CITEC April 24, 2014 Christof Elbrechter Praxisorientierte Einführung in C++ April 24, 2014 1 / 23 Table

Mehr

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11 C++ Teil 12 Sven Groß 18. Jan 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 12 18. Jan 2016 1 / 11 Themen der letzten Vorlesung Wiederholung aller bisherigen Themen: Datentypen und Variablen Operatoren Kontrollstrukturen

Mehr

C++ Teil 9. Sven Groß. 17. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil Juni / 17

C++ Teil 9. Sven Groß. 17. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil Juni / 17 C++ Teil 9 Sven Groß 17. Juni 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 9 17. Juni 2016 1 / 17 Themen der letzten Vorlesung Objektorientierung und Klassen Attribute / Datenelemente Methoden / Elementfunktionen

Mehr

Polymorphismus 44. Function.hpp. #include <string>

Polymorphismus 44. Function.hpp. #include <string> Polymorphismus 44 #include Function.hpp class Function { public: virtual ~Function() {}; virtual const std::string& get_name() const = 0; virtual double execute(double x) const = 0; }; // class

Mehr

Objektorientierte Programmierung III

Objektorientierte Programmierung III Objektorientierte Programmierung III OOP Kapselung: Gruppierung von Daten und Funktionen als Objekte. Definieren eine Schnittstelle zu diesen Objekten. Vererbung: Erlaubt Code zwischen verwandten Typen

Mehr

Objektorientierte Programmierung mit C++ SS 2007

Objektorientierte Programmierung mit C++ SS 2007 Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 5. Juni 2007 Polymorphismus #include Function.h class Function { public: virtual ~Function() {}; virtual std::string

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

Programmierkurs C/C++

Programmierkurs C/C++ Blockkurs: "Einführung in C/C++" Programmierkurs C/C++ Donnerstag Sandro Andreotti andreott@inf.fu-berlin.de WS 2008/09 1 Structs Blockkurs: "Einführung in C/C++" 2 Structs sind Bündel von Variablen (unter

Mehr

Mikrorechentechnik II. Klassen in C++

Mikrorechentechnik II. Klassen in C++ Mikrorechentechnik II Klassen in C++ class class cfilter { float K; float T; float Ta; public: // Filterverstärkung // Filterzeitkonstante // Tastzeit Zugriffskontrolle: public, protected, private void

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 12

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf  Seite 1 von 12 Kapitel 18 Konstruktor / Destruktor einer Klasse Seite 1 von 12 Konstruktoren - Zur Initialisierung der Eigenschaften einer Klasse werden Konstruktoren verwendet. - Der Konstruktor wird bei der Definition

Mehr

7.2 Dynamischer Speicher in Objekten/Kopierkonstruktor

7.2 Dynamischer Speicher in Objekten/Kopierkonstruktor 7.2 Dynamischer Speicher in Objekten/Kopierkonstruktor Das Programmbeispiel aus dem letzten Abschnitt läßt sich bisher nicht zufriedenstellend zu Ende bringen. Unerklärliche Abstürze und Fehlverhalten

Mehr

Informatik 1 ( ) D-MAVT F2011. Klassen, Funktionen. Yves Brise Übungsstunde 9

Informatik 1 ( ) D-MAVT F2011. Klassen, Funktionen. Yves Brise Übungsstunde 9 Informatik 1 (251-0832-00) D-MAVT F2011 Klassen, Funktionen Nachbesprechung Blatt 7, Aufgabe 1 Wenn Funktion void als Rückgabetyp hat, dann ist return nicht notwendig. void swap3(int* a, int* b) { int

Mehr

Überblick. R.Grossmann / P. Sobe 1

Überblick. R.Grossmann / P. Sobe 1 Überblick 1. Einführung C++ / Entwicklung/ Sprachfamilie 2. Nicht objektorientierte Erweiterungen von C 3. Grundlagen des Typkonzepts von C++ 4. Ziele der Objektorientierung 5. Objekt und Klasse, Elementfunktionen

Mehr

11 Vererbung und Klassenhierarchie

11 Vererbung und Klassenhierarchie 11 Vererbung und Klassenhierarchie Bestandteile objektorientierter Programmierung: Bestehende Klassen können durch Spezialisierung und Erweiterung weiterentwickelt werden, ohne den Programmcode der alten

Mehr

C++ Teil 10. Sven Groß. 17. Dez IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Dez / 14

C++ Teil 10. Sven Groß. 17. Dez IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Dez / 14 C++ Teil 10 Sven Groß IGPM, RWTH Aachen 17. Dez 2014 Sven Groß (IGPM, RWTH Aachen) C++ Teil 10 17. Dez 2014 1 / 14 Themen der letzten Vorlesung Objektorientierung und Klassen Attribute / Datenelemente

Mehr

Programmierung und Angewandte Mathematik

Programmierung und Angewandte Mathematik Programmierung und Angewandte Mathematik C++ /Scilab Programmierung und Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens SS 2012 Ablauf Was sind Funktionen/Methoden

Mehr

Polymorphie. Überladen. Definition Methodennamen überladen Konstruktoren überladen Operatoren überladen Beispiele. Dr.

Polymorphie. Überladen. Definition Methodennamen überladen Konstruktoren überladen Operatoren überladen Beispiele. Dr. Polymorphie Überladen Definition Methodennamen überladen Konstruktoren überladen Operatoren überladen Beispiele Dr. Beatrice Amrhein Definition 2 Definition: Überladen (von Namen) Überladen bedeutet, dass

Mehr

Abend 4 Übung : Erweitern von Klassen durch Vererbung

Abend 4 Übung : Erweitern von Klassen durch Vererbung Abend 4 Übung : Erweitern von Klassen durch Vererbung Ziel, Inhalt Wir erweitern die Klassen, die wir zum Zeichnen mit TsuZeichnen verwenden. Dabei wenden wir die Vererbung an um die Klassen zu spezialisieren

Mehr

Objektorientierung (OO)

Objektorientierung (OO) Objektorientierung (OO) Objekte haben Zustände (oder Eigenschaften, Attribute) und Verhalten Zustände: Objektvariablen (in Java auch fields) Verhalten (oder Aktionen): Methoden (methods, Funktionen) members

Mehr

C++ - Objektorientierte Programmierung Polymorphie

C++ - Objektorientierte Programmierung Polymorphie C++ - Objektorientierte Programmierung Polymorphie hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen C++ - Objektorientierte Programmierung 21.06.16 Seite 1 Polymorphie

Mehr

Strukturierte Programmierung und Funktionen

Strukturierte Programmierung und Funktionen Strukturierte Programmierung und Funktionen Um ein Programm übersichtlicher zu gestalten, zerlegt man seine Funktionalität meist in mehrere (oder auch ganz viele) Teile. Dadurch lässt sich das Programm

Mehr

Vererbung und Polymorphie

Vererbung und Polymorphie Vererbung und Polymorphie Marc Satkowski, Sascha Peukert 29. September 2016 C# Kurs Gliederung 1. Methodenüberladung 2. Vererbung Polymorphie Methoden- & Eigenschaftsüberschreibung Weitere Schlüsselwörter

Mehr

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder

Mehr

Implementieren von Klassen

Implementieren von Klassen Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und

Mehr

HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2

HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2 HSR Rapperswil 2001 Markus Rigling Programmieren: Vererbung 1 Variante 2 Inhaltsverzeichnis: 1. Was ist Vererbung...3 2. Anwendung...3 3. Realisierung...3 4. Vorgehensweise zur Erstellung einer Kind-Klasse...3

Mehr

SimpleStat mit Methoden

SimpleStat mit Methoden SimpleStat mit Methoden Als Ausgangspunkt nehmen wir folgende Definition (Version 1) von SimpleStat: double sum2; -Quadrate Dieser Objekttyp verfügt über keine Methoden und alle Datenattribute sind public.

Mehr

C++ - Objektorientierte Programmierung Vererbung

C++ - Objektorientierte Programmierung Vererbung C++ - Objektorientierte Programmierung Vererbung Personen Kunden Mitarbeiter Verwaltung Verkäufer Leibniz Universität IT Services Anja Aue Vererbung Definition von Klassen auf Basis von bestehenden Klassen.

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

Überblick. Überblick. Abstrakte Klassen - rein virtuelle Funktionen Beispiele

Überblick. Überblick. Abstrakte Klassen - rein virtuelle Funktionen Beispiele Überblick 1. Einführung C++ / Entwicklung/ Sprachfamilie 2. Nicht objektorientierte Erweiterungen von C 2.1 Das Ein-/Ausgabekonzept von C++ 2.2 Referenzen in C++ 2.3 Heap-Allokatoren in C++ 3. Grundlagen

Mehr

Überblick. 5. Objekt und Klasse, Elementfunktionen

Überblick. 5. Objekt und Klasse, Elementfunktionen Überblick 1. Einführung C++ / Entwicklung/ Sprachfamilie 2. Nicht objektorientierte Erweiterungen von C 2.1 Das Ein-/Ausgabekonzept von C++ 2.2 Referenzen in C++ 2.3 Heap-Allokatoren in C++ 3. Grundlagen

Mehr

Methoden und Wrapperklassen

Methoden und Wrapperklassen Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)

Mehr

HSR Rapperswil 2001 Markus Rigling. Programmieren: Templates Auflage

HSR Rapperswil 2001 Markus Rigling. Programmieren: Templates Auflage HSR Rapperswil 2001 Markus Rigling Programmieren: Templates 1 1. Auflage Inhaltsverzeichnis: Templates.1 1. Verwendung 3 2. Erstellen einer Templateklasse. 3 3. Faustregel zum Erstellen eines Klassentemplates..

Mehr

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren

Mehr

4. Objektorientierte Programmierung mit C++

4. Objektorientierte Programmierung mit C++ 4. Objektorientierte Programmierung mit C++ Einführung C++ / Entwicklung der Sprachfamilie Erweiterungen der Sprache C: Ein- und Ausgabe, Referenzen, Speicherallokation und Freigabe Grundlagen des Typkonzepts

Mehr

11.3 Virtuelle Methoden

11.3 Virtuelle Methoden 11.3 Virtuelle Methoden Überdeckte Methoden: Betrachten wir noch einmal unsere Klassen Employee und Manager. class Employee void print() const cout

Mehr

1.2. Datentypen (Konstantentypen)

1.2. Datentypen (Konstantentypen) 1.2. Datentypen (Konstantentypen) Referenzen (selbst) sind implizit const, es gibt jedoch Referenzen auf Konstantentypen Wichtigste Anwendung: call by reference in-parameter T t; void foo(t& pt) { pt.change();

Mehr

Container/ Collection: Klasse die (Pointer auf ) andere Klassen oder Typen int,char,bool etc. aufnimmt.

Container/ Collection: Klasse die (Pointer auf ) andere Klassen oder Typen int,char,bool etc. aufnimmt. Templates Container/ Collection: Klasse die (Pointer auf ) andere Klassen oder Typen int,char,bool etc. aufnimmt. Bsp.: einfach verkettete Liste Data Data Data Data Jeder Datenknoten nimmt ein Datenobjekt

Mehr

Überblick. 6. Konstruktor und Destruktor - obligatorische Elementfunktionen einer Klasse

Überblick. 6. Konstruktor und Destruktor - obligatorische Elementfunktionen einer Klasse Überblick 1. Einführung C++ / Entwicklung/ Sprachfamilie 2. Nicht objektorientierte Erweiterungen von C 2.1 Das Ein-/Ausgabekonzept von C++ 2.2 Referenzen in C++ 2.3 Heap-Allokatoren in C++ 3. Grundlagen

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 9. Dezember 2015 Wiederholung Referenzdatentypen reference [0] M datatype

Mehr

Informatik - Übungsstunde

Informatik - Übungsstunde Informatik - Übungsstunde Jonas Lauener (jlauener@student.ethz.ch) ETH Zürich Woche 12-23.05.2018 Lernziele Klassen Dynamic Memory Jonas Lauener (ETH Zürich) Informatik - Übung Woche 12 2 / 20 Structs

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Objektorientierung in C++ (2) Beziehungen zwischen Klassen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 530 Beziehungen zwischen Klassen Assoziation

Mehr

Repetitorium Programmieren I + II

Repetitorium Programmieren I + II Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 24. September 2012 Agenda 1 Funktionen Aufbau und Anwendung Call by Value Call by Reference Überladen von Funktionen Default

Mehr

Repetitorium Programmieren I + II

Repetitorium Programmieren I + II Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatoren 2 Datentypen Gleitpunkt Zahl Typkonvertierung 3 Strommanipulatoren 4 Bedingungen if-else switch-case

Mehr

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen 1 Thema heute: Vererbung und Klassenhierarchien Abgeleitete Klassen Vererbung von Daten und Funktionen Virtuelle Funktionen 2 Vererbung oft besitzen verschiedene Datentypen einen gemeinsamen Kern Beispiel:

Mehr

Dynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren

Dynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren Dynamische Datentypen Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren Probleme mit Feldern (variabler Länge) man kann sie nicht direkt kopieren und zuweisen Probleme mit

Mehr

Methoden. (Softwareentwicklung II (IB)) Prof. Dr. Oliver Braun. Letzte Änderung: :40. Methoden 1/44

Methoden. (Softwareentwicklung II (IB)) Prof. Dr. Oliver Braun. Letzte Änderung: :40. Methoden 1/44 Methoden (Softwareentwicklung II (IB)) Prof. Dr. Oliver Braun Letzte Änderung: 02.03.2018 12:40 Methoden 1/44 Was Sie bereits wissen müssen: Siehe Softwareentwicklung I (IB) Methoden 2/44 Überladen Methoden

Mehr

OOP und Angewandte Mathematik (Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

OOP und Angewandte Mathematik (Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik (Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Friend Klassen In einigen Fällen kann es notwendig werden, dass andere Klassen oder Funktionen

Mehr

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) Wintersemester 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl

Mehr

Was Mathematiker schon vor Jahrhunderten erfunden haben, gibt es jetzt endlich in ihrer Programmiersprache:

Was Mathematiker schon vor Jahrhunderten erfunden haben, gibt es jetzt endlich in ihrer Programmiersprache: Kapitel 8 Operatoren Was Mathematiker schon vor Jahrhunderten erfunden haben, gibt es jetzt endlich in ihrer Programmiersprache: Operatoren definieren Es ist in C++ möglich, Operatoren wie +, oder für

Mehr

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer

Mehr

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes Verschlüsseln eines Bildes Visuelle Kryptographie Anwendung von Zufallszahlen Wir wollen ein Bild an Alice und Bob schicken, so dass Alice allein keine Information über das Bild bekommt Bob allein keine

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

Dynamische Datenstrukturen in C++ 150

Dynamische Datenstrukturen in C++ 150 Dynamische Datenstrukturen in C++ 150 In allen bisherigen Beispielen belegten die Objekte entweder statischen Speicherplatz oder sie lebten auf dem Stack. Dies vermied bislang völlig den Aufwand einer

Mehr

Grundkurs C++ IDE Klassenhierarchien

Grundkurs C++ IDE Klassenhierarchien Grundkurs C++ IDE Klassenhierarchien Martin Knopp 03.05.2017 Folie 1/34 GK C++: IDE, Klassenhierarchien Martin Knopp 03.05.2017 IDE Integrated Development Environment Wir empfehlen: Qt Creator (Bestandteil

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen

Mehr

C-Pointer (Zeiger, Adressen) vs. C++ Referenzen

C-Pointer (Zeiger, Adressen) vs. C++ Referenzen C-Pointer (Zeiger, Adressen) vs. C++ Referenzen Der Pointer (C/C++): In C/C++ ist der Pointer ein eigener Datentyp, der auf Variablen/Objekte zeigen kann. Indem man den Pointer dereferenziert, gewinnt

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Objektorientierung in C++ (3) Aspekte der Vererbung (1) Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 546 Zuweisung bei Vererbung Dr. Frank Seifert Vorlesung

Mehr

Programmierparadigmen

Programmierparadigmen Programmierparadigmen DEKLARATIV Funktional Logisch IMPERATIV Prozedural Objektorientiert Einsatz der Programmierparadigmen Systemkomplexität von der Komplexität der Algorithmen dominiert deklarativ oder

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

Systemnahe Programmierung in C/C++

Systemnahe Programmierung in C/C++ Systemnahe Programmierung in C/C++ Peter Piehler peter.piehler@symetrion.com Lehrstuhl für Datenbanken und Informationssysteme Fakultät für Mathematik und Informatik 2006 12 13 Peter Piehler (DBIS) C/C++

Mehr

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5. Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1

Mehr

Grundkurs C++ IDE Klassenhierarchien

Grundkurs C++ IDE Klassenhierarchien Grundkurs C++ IDE Klassenhierarchien Martin Knopp & Johannes Feldmaier 20.04.2016 Folie 1/35 GK C++: IDE, Klassenhierarchien Martin Knopp & Johannes Feldmaier 20.04.2016 IDE Integrated Development Environment

Mehr

Algorithmen und Datenstrukturen I. Blatt 2. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Algorithmen und Datenstrukturen I. Blatt 2. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München Algorithmen und Datenstrukturen I Blatt 2 Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 20:05 Aufgabe 1 struct, Parameterübergabe und const Das Repository für diese

Mehr

Einführung in die Programmierung Blockkurs Java

Einführung in die Programmierung Blockkurs Java Michael Bader 8. 12. April 2002 Dienstag Inhaltsübersicht Variablen: Membervariablen und lokale Variablen Referenzvariablen: Arrays und Objekte anlegen Definition von Funktionen: Methoden Konstruktoren

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen

Mehr

Programmierpraktikum 3D Computer Grafik

Programmierpraktikum 3D Computer Grafik Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Einführung in C++ Teil II: Klassen, Objekte, Funktionen und Vererbung. Funktionen [Rückgabetyp] [Name] ([Parameter]) { } Wichtig: Funktionen

Mehr

6 ZEIGER UND REFERENZEN - ALLGEMEINES

6 ZEIGER UND REFERENZEN - ALLGEMEINES 6 ZEIGER UND REFERENZEN - ALLGEMEINES Leitideen: Zeiger sind Adressen mit zusätzlicher Typinformation über das dort gespeicherte Objekt. Die Vereinbarungssyntax soll der Ausdruckssyntax entsprechen und

Mehr

2. Unterprogramme und Methoden

2. Unterprogramme und Methoden 2. Unterprogramme und Methoden Durch Methoden wird ausführbarer Code unter einem Namen zusammengefasst. Dieser Code kann unter Verwendung von sogenannten Parametern formuliert sein, denen später beim Aufruf

Mehr

Objektorientierte Programmierung mit C++

Objektorientierte Programmierung mit C++ Ziel: maximales Code-Sharing -- Weg: gemeinsame (aber ggf. in Ableitungen variierende) Funktionalität in Basisklassen festlegen Problem: die so entstehenden Basisklassen sind oft so rudimentär, dass Objekterzeugung

Mehr

Softwareentwicklung II (IB) Methoden. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Softwareentwicklung II (IB) Methoden. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München Softwareentwicklung II (IB) Methoden Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 05.04.2018 17:44 Inhaltsverzeichnis Was Sie bereits wissen müssen: Siehe Softwareentwicklung

Mehr