Programmieren in C++ Klassen

Größe: px
Ab Seite anzeigen:

Download "Programmieren in C++ Klassen"

Transkript

1 Programmieren in C++ Klassen

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

3 Implementierung der Klasse Punkt // Datei: Punkt.h typedef int Color; class Punkt { // instance variables double m_x, m_y, m_z; Color m_color; public: // instance methods void print() const { cout << "Punkt (" << m_x << "," << m_y << "," << m_z << ") hat Farbe " << m_color << endl; ; Prof. Dr. C. Stamm Programmieren in C++, FS

4 Verwendung der Klasse Punkt #include "Punkt.h" int main() { { Punkt p; p.print(); // statisches Punktobjekt auf dem Stack anlegen // Punktobjekt auf Konsole ausgeben // Punktobjekt p wird hier automatisch zerstört // p.print(); würde hier zu einem Fehler führen Punkt *pp = nullptr; { pp = new Punkt(); pp->print(); pp->print(); delete pp; pp = nullptr; return 0; // statische Zeigervariable // dynamisches Punktobjekt auf dem Heap anlegen // Punktobjekt auf Konsole ausgeben // erlaubt // dynamisches Punktobjekt zerstören Prof. Dr. C. Stamm Programmieren in C++, FS

5 Schlüsselwort: const bei Methodenparametern void Gerade::setEndPoints(const Punkt2& p1, const Punkt2& p2) { bei Objekten const Gerade g(1, 2, 3, 10, 2, 3); g.setendpoints(punkt2(), Punkt2()); // g darf nicht modifiziert werden // ist nicht erlaubt bei Methoden void Gerade::getEndPoints(Punkt2& p1, Punkt2& p2) const { Punkt2 p1, p2; g.getendpoints(p1, p2); // ist erlaubt, da getendpoints nur lesend // auf das Objekt g zugreift Prof. Dr. C. Stamm Programmieren in C++, FS

6 Erzeugen einer statischen Instanz Klassenname Variable Beispiel: Punkt p; Was passiert im Hintergrund? Compiler hat aus der Definition der Klasse Punkt berechnet, wie viel Speicher eine Instanz der Klasse Punkt benötigt in unserem Beispiel sind drei Attribute vom Typ double und ein Attribut vom Typ Color bzw. int vorhanden Speicherbedarf pro Punktinstanz: 3*sizeof double + 1*sizeof int auf dem Stack wird entsprechend Platz reserviert, so dass alle vier Attribute des Punktes abgespeichert werden können die Variable p repräsentiert die Punktinstanz auf dem Stack Prof. Dr. C. Stamm Programmieren in C++, FS

7 Erzeugen einer dynamischen Instanz Klassenname var = new Klassenname(); Beispiel: Punkt *p; p = new Punkt(); Was passiert dabei? ein neues Objekt (eine Instanz der Klasse Punkt) wird erzeugt und auf dem Heap angelegt ein Zeiger auf das neue Objekt wird zurückgegeben und in der Zeigervariablen p abgespeichert statische und dynamische Variablen p ist eine statische Variable vom Typ Zeiger auf Punkt p verweist zu einem anonymen, dynamischen Objekt der Klasse Punkt Lebensdauer von anonymen Objekten hängt nur indirekt von der Lebensdauer seiner Referenzen ab mit delete wird das dynamische Objekt auf dem Heap abgeräumt (bevor dies geschieht, wird noch der Destruktor des Objekts aufgerufen) Prof. Dr. C. Stamm Programmieren in C++, FS

8 Destruktor wird automatisch aufgerufen, kurz bevor ein Objekt seine Gültigkeit verliert (unmittelbar vor der Zerstörung) wird üblicherweise dann gebraucht, wenn dynamisch reservierter Speicher freigegeben werden soll Dateien geschlossen werden sollen Datei-Handles freigegeben werden sollen trägt den gleichen Namen wie die Klasse, mit ~ (Tilde) davor wenn Sie keinen eigenen Destruktor definieren, dann stellt der Compiler einen vordefinierten Standard-Destruktor bereit Beispiel class Punkt { Punkt(double x, double y, double z, int color) : m_x(x), m_y(y), m_z(z), m_color(color) { ~Punkt() { cout << "Objekt ist nicht länger gültig" << endl; Prof. Dr. C. Stamm Programmieren in C++, FS

9 Vorgabeparameter (Default-Parameter) Parameter in Methoden dürfen mit Standardwerten belegt werden Default-Parameter für Default-Parameter müssen beim Methodenaufruf keine Werte angegeben werden (es dürfen aber) in der Parameterliste einer Methode müssen zuerst alle Parameter ohne Default-Wert dann alle Parameter mit Default-Wert aufgelistet werden alle Methoden und Konstruktoren dürfen Default-Parameter verwenden Beispiel Punkt(double x, double y, double z, Color color = 0) : m_x(x), m_y(y), m_z(z), m_color(color) { Anwendung Punkt *pp = new Punkt(3, 4, 5); // Farbe ist standardmässig auf 0 gesetzt Prof. Dr. C. Stamm Programmieren in C++, FS

10 this-zeiger wird in Instanzmethoden verwendet und zeigt auf die Instanz selber Beispiel Punkt& move(double d[3]) { m_x += d[0]; m_y += d[1]; m_z += d[2]; return *this; Anwendung double delta[] = { 1, 2, 3 ; Punkt p(0, 0, 0, 7); p.move(delta).move(delta); p.print(); // ergibt (2, 4, 6) mit Farbe 7 Prof. Dr. C. Stamm Programmieren in C++, FS

11 Klassenvariablen und -methoden Klassenvariablen werden pro Klasse und nicht pro Instanz angelegt alle Instanzen einer Klasse haben Zugriff auf die gemeinsamen Klassenvariablen dieser Klasse Modifikator static vor dem Typ der Variable Einsatzmöglichkeiten zählen der erzeugten Instanzen einer Klasse Registrierung des zuletzt erzeugten Objektes Konstanten Klassenmethoden können ohne Instanz einer Klasse aufgerufen werden werden über den Klassennamen aufgerufen dürfen nur auf Klassenvariablen zugreifen Modifikator static vor der Methoden-Deklaration Prof. Dr. C. Stamm Programmieren in C++, FS

12 Beispiel zu Klassenvariablen h-file class Punkt { // instance variables double m_x, m_y, m_z; // class variable declaration static int s_nrofinstances; static const int s_version = 111; public: // constructor Punkt(); ; // destructor ~Punkt(); // class method static int getnrofinstances(); cpp-file // class variable definition int Punkt::s_nrOfInstances = 0; // constructor Punkt::Punkt() : m_x(0), m_y(0), m_z(0) { s_nrofinstances++; // destructor Punkt::~Punkt() { s_nrofinstances--; // methods int Punkt::getNrOfInstances() { return s_nrofinstances; Prof. Dr. C. Stamm Programmieren in C++, FS

13 Default-Methoden Klassen haben eine Reihe von Methoden, die der Compiler automatisch bei Bedarf erzeugt, falls Sie diese Methoden nicht selber deklarieren. Standard-Konstruktor C::C() nur wenn der Benutzer keinen eigenen Konstruktor deklariert Destruktor C::~C() nur wenn der Benutzer keinen eigenen Destruktor deklariert Kopieroperationen (flache Kopie) nur wenn der Benutzer keine Verschiebeoperationen deklariert Kopierkonstruktor C::C(const C&) Zuweisungsoperator C& operator=(const C&) Verschiebeoperationen (C++11) nur wenn der Benutzer keine Kopieroperationen deklariert Verschiebekonstruktor C::C(C&&) Verschiebeoperator C& operator=(c&&) Prof. Dr. C. Stamm Programmieren in C++, FS

14 Konstruktoren (1) Primitive Datentypen besitzen keine Konstruktoren Konstruktoren heissen gleich wie die Klasse und initialisieren die Attribute eines Objekts aggregierte Objekte werden durch zugehörige Konstruktoren initialisiert primitive Attribute müssen initialisiert werden (keine automatische Initialisierung) können nur bei der Erzeugung von Objekten mit gleichzeitiger Initialisierung aufgerufen werden Beispiel class Punkt { Punkt(double x, double y, double z, int color) { m_x = x; m_y = y; m_z = z; m_color = color; Anwendung Punkt p2(1, 2, 3, 5); Punkt *p1 = new Punkt(4, 5, 6, 8); Prof. Dr. C. Stamm Programmieren in C++, FS

15 Konstruktoren (2) Verwendung von Initialisierungslisten class Punkt { Punkt(double x, double y, double z, int color) : m_x(x), m_y(y), m_z(z), m_color(color) { // weiterer Code Standard-Konstruktor keine Übergabeparameter wenn Sie keinen eigenen Konstruktor definieren, dann stellt der Compiler einen vordefinierten Standard-Konstruktor bereit Prof. Dr. C. Stamm Programmieren in C++, FS

16 Typkonvertierungs-Konstruktor wird zur impliziten Konvertierung herangezogen enthält üblicherweise nur ein Argument (wird mit nur einem Argument aufgerufen) soll ein Konstruktor mit einem Argument nicht als impliziter Typkonvertierungs- Konstruktor missbraucht werden können, so muss vor dem Konstruktor das Schlüsselwort explicit geschrieben werden Beispiel Punkt(double d[4]) : m_x(d[0]), m_y(d[1]), m_z(d[2]), m_color(static_cast<int>(d[3])) { Anwendung double array[4] = { 4.4, 3.3, 2.2, 5.0 ; Punkt p = array; Prof. Dr. C. Stamm Programmieren in C++, FS

17 Kopierkonstruktor wird zum Kopieren eines Objektes verwendet (flache oder tiefe Kopie) verwendet einen Parameter: Referenz auf konstantes Objekt wenn Sie keinen eigenen Kopierkonstruktor und keine Verschiebeoperation definieren, dann stellt der Compiler einen vordefinierten Kopierkonstruktor für eine flache Kopie bereit wird ein eigener Kopierkonstruktor angeboten, so sollte auch der Zuweisungsoperator angeboten werden Beispiel Punkt(const Punkt& p) : m_x(p.m_x), m_y(p.m_y), m_z(p.m_z), m_color(p.m_color) { // flache Kopie: hier wäre der automatisch generierte Kopierkonstruktor ausreichend Anwendungen Punkt p(1, 2, 3, 4); Punkt p1 = Punkt(1, 2, 3, 4); // gleichwertig zu Punkt p(1, 2, 3, 4) Punkt p2(p); // expliziter Aufruf des Kopierkonstruktors Punkt p3 = p; Punkt p4; p4 = Punkt(2, 3, 4, 5); // impliziter Aufruf des Kopierkonstruktors // schlecht: Standardkonstruktor, Konstruktor und Zuweisungsoperator Prof. Dr. C. Stamm Programmieren in C++, FS

18 RAII: Resource Allocation is Initialization Grundsätze beim Erzeugen eines Objekts (einer Ressource) muss das Objekt initialisiert werden Aufgabe des Konstruktors beim ordentlichen Verlassen des Konstruktors immer ein gültiges Objekt zurücklassen im Fehlerfall sollte der Konstruktor mit einer Exception beendet werden, das bedeutet, dass bereits angeforderte Ressourcen wieder freigegeben werden müssen problematisches Beispiel: kann zu memory leak führen struct StereoImage { ; Image *left, *right; StereoImage() : left(new Image), right(new Image) { ~StereoImage() { delete left; delete right; Prof. Dr. C. Stamm Programmieren in C++, FS

19 RAII: Einfacher Lösungsansatz Idee wird ein Objekt infolge einer Exception nicht vollständig initialisiert, so müssen die einzelnen Teile des Objektes sich selbständig abbauen Beispiel #include <memory> // unique_ptr in C++11 struct StereoImage { std::unique_ptr<image> left, right; StereoImage() : left(new Image), right(new Image) { ~StereoImage() { delete left; delete right; ; Was passiert bei einer Exception in right(new Image)? StereoImage gilt als nicht erzeugt, daher wird der Destruktor nicht aufgerufen bereits angelegter Speicher (left) wird zurückgebaut, indem allfällige Destruktoren der bereits angelegten Attribute aufgerufen werden Speicher für das linke Bild wird freigegeben Prof. Dr. C. Stamm Programmieren in C++, FS

20 Performance-Verbesserungen Beispiel: Fabrik mit temporären Objekten innerhalb einer (statischen) Methode werden Objekte erzeugt und über den Rückgabewert zurückgegeben (in der Fabrik werden die Objekte selber nicht benötigt) Java: in der Fabrik können nur Objekte auf dem Heap erstellt werden und die Fabrik gibt die Referenz auf das Objekt auf dem Heap zurück C++: in der Fabrik können auch Objekte auf dem Stack erstellt werden; wird ein solches Objekt zurückgegeben, so muss es per value (also durch Kopieren) zurückgegeben werden string Factory() { string tmp("text"); return tmp; // das String-Objekt liegt auf dem Stack, // die eigentliche Zeichenkette aber auf dem Heap string s = Factory(); C++11: neuerdings kann das Objekt mittels move-semantik zurückgegeben werden, d.h. der Inhalt des temporären Objektes wird von der Fabrik nach aussen verschoben und ist danach in der Fabrik nicht länger verfügbar Prof. Dr. C. Stamm Programmieren in C++, FS

21 Verschiebeoperationen (C++11) werden zum Verschieben eines Objektes verwendet (Move-Semantik) verwenden einen Parameter: Rechtswert-Referenz auf Objekt wenn Sie keinen eigenen Verschiebekonstruktor und keine Kopieroperation definieren, dann stellt der Compiler einen vordefinierten Verschiebekonstruktor bereit wird ein eigener Verschiebekonstruktor angeboten, so sollte auch der Verschiebeoperator angeboten werden Beispiel class Vector { Punkt *m_array; int m_size; public: // benötigt eigenen Standardkonstruktor und Destruktor Vector(Vector&& v) : m_array(v.m_array), m_size(v.m_size) { v.m_array = nullptr; v.m_size = 0; Vector& operator=(vector&& v) { m_size = v.m_size; v.m_size = 0; delete[] m_array; m_array = v.m_array; v.m_array = nullptr; return *this; ; Prof. Dr. C. Stamm Programmieren in C++, FS

22 Move-Semantik Beispiel (C++11) Vector createvector() { Vector v; v.add(punkt(1,2,3)); v.add(punkt(4,5,6)); Vector v2; v2 = move(v); // ruft den Verschiebeoperator auf, falls vorhanden // v enthält keine Punkt-Objekte mehr return move(v2); // übergibt den Vektor mittels Verschiebeoperation, // wenn Verschiebeoperation vorhanden ist int main() { Vector v1(createvector()); // ruft den Verschiebekonstruktor auf, falls vorhanden Vector v2 = createvector(); // dito Vector v3; // ruft Standardkonstruktor auf v3 = createvector(); // ruft den Verschiebeoperator auf, falls vorhanden Prof. Dr. C. Stamm Programmieren in C++, FS

23 Anonyme (temporäre) Objekte Objekte haben keinen Namen werden nur kurzfristig (temporär) benutzt nach dem Aufruf verschwinden statische, anonyme Objekte wieder kurze Lebensdauer Beispiele Punkt(1, 2, 3, 4).print(); (new Punkt(2, 3, 4, 5))->print(); // anonymes Objekt // schlecht: verwaistes, anonymes dyn. Objekt Complex c1(1, 2); Complex c2 = c1*complex(1, -2); // welche Konstruktoren werden hier aufgerufen? Prof. Dr. C. Stamm Programmieren in C++, FS

24 Neue C++11-Features Einheitliche Initialisierungssyntax Punkt p{1, 2, 3, 4; im Konstruktor: Punkt::Punkt() : m_x{0, m_y{0, m_z{0 { Instanzvariablen-Initialisierung (wie in Java) class Punkt { double m_x = 1, m_y(1), m_z{1; Konstruktor-Delegation besitzt eine Klasse mehrere Konstruktoren, so darf der eine Konstruktor den anderen in seiner Initialisierungsliste aufrufen Punkt::Punkt(double x, double y, double z, Color c) : m_x{x, { Punkt::Punkt() : Punkt(1, 1, 1, 0) { Automatisch generierte Konstruktoren/Zuweisungsoperatoren löschen möchte man beispielsweise die Verwendung des Kopierkonstruktors und des Zuweisungsoperators verunmöglichen, weil nur die Move-Semantik verwendet werden soll, so kann dem Compiler die Löschung dieser automatisch generierten Methoden beauftragt werden Punkt::Punkt(const Punkt&) = delete; Prof. Dr. C. Stamm Programmieren in C++, FS

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

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

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

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

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

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

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

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

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

Konstruktor/Destruktor

Konstruktor/Destruktor 1/23 Konstruktor/Destruktor Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/23 Outline 1 2 3/23 Inhaltsverzeichnis 1 2

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

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

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

Objektorientierte Programmierung und Klassen

Objektorientierte Programmierung und Klassen Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16.5.07 G. Bohlender (IANM UNI Karlsruhe) OOP

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

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

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition

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

Visuelle Kryptographie. Anwendung von Zufallszahlen

Visuelle Kryptographie. Anwendung von Zufallszahlen Visuelle Kryptographie Anwendung von Zufallszahlen Verschlüsseln eines Bildes Wir wollen ein Bild an Alice und Bob schicken, so dass Verschlüsseln eines Bildes Wir wollen ein Bild an Alice und Bob schicken,

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

Geschachtelte Klassen

Geschachtelte Klassen Geschachtelte Klassen Christian Schamott 1 / 26 Übersicht Gemeinsamkeiten 4 Arten geschachtelte Klassen Elementklasse Lokale Klassen Anonyme Klassen Statisch geschachtelte Klassen Christian Schamott 2

Mehr

Kurzeinführung in C/C++ Elementare Datentypen in C++

Kurzeinführung in C/C++ Elementare Datentypen in C++ Elementare Datentypen in C++ Anders als in Java sind in C++ die Größen der Elementaren Datentypen maschinenabhängig Die Größe der Datentypen lässt sich mit sizeof ermitteln: int n=sizeof(int) In C++ gilt

Mehr

Klassen als Datenstrukturen

Klassen als Datenstrukturen Einstieg in die Informatik mit Java, Vorlesung vom 27.11.07 Übersicht 1 Klassen als Datenstruktur 2 Vereinbarung von Klassen 3 Erzeugen von Objekten - Instanzen einer Klasse 4 Zugriff auf Attribute 5 Initialisierung

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 39 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 39 1 Überblick:

Mehr

Pods und Objects (Klassen)

Pods und Objects (Klassen) 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

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Felder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich.

Felder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich. Felder Felder - Arrays Variable gleichen Types können in Feldern (array) zusammengefasst werden. Typ[] feldname; oder Typ feldname[]; dabei kann unter Benutzung des new-operators gleich die Dimension zugewiesen

Mehr

Einstieg in die Informatik mit Java

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

Mehr

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen Klassenvariablen Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit aller Studentenobjekte.

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Klassen Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Einführung Konstruktoren / Destruktoren

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

C++ Klassen, Vererbung. Philipp Lucas. Sebastian Hack. Wintersemester 2008/09. saarland.

C++ Klassen, Vererbung. Philipp Lucas. Sebastian Hack. Wintersemester 2008/09. saarland. C++ Klassen, Vererbung Philipp Lucas phlucas@cs.uni-sb.de Sebastian Hack hack@cs.uni-sb.de Wintersemester 2008/09 saarland university computer science 1 Inhalt Klassen in C++ Sichtbarkeit Erzeugen von

Mehr

3 Klassen, Attribute, Methoden

3 Klassen, Attribute, Methoden 3 Klassen, Attribute, Methoden Jörn Loviscach Versionsstand: 10. April 2011, 10:25 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.j3l7h.de/videos.html

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

3. Exkurs in weitere Arten der Programmierung

3. Exkurs in weitere Arten der Programmierung 3. Exkurs in weitere Arten der Programmierung Inhalt: Objektorientierte Programmierung in C++ Logische Programmierung in Prolog Peter Sobe Objektorientierte Programmierung in C++ C++ ist eine objektorientierte

Mehr

Crashkurs C++ Wiederholung

Crashkurs C++ Wiederholung Crashkurs C++ Wiederholung #include int main(void) { int i, j; bool is_prime; for (j = 1; j < 1000; j += 2) { is_prime = true; for (i = 3; i

Mehr

Dynamische Datentypen

Dynamische Datentypen Dynamische Datentypen Tupel und Folgen o Wertebereich eines Structs / einer Klasse: T1 T2... Tk Werte sind k-tupel Tupel und Folgen o Wertebereich eines Structs / einer Klasse: T1 T2... Tk Werte sind k-tupel

Mehr

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen

Mehr

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode: Klassenvariablen Klassenmethoden Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

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

Java Einführung Klassendefinitionen

Java Einführung Klassendefinitionen Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse

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

Programmierkurs C++ Konstruktor, Statische Methoden Namespaces

Programmierkurs C++ Konstruktor, Statische Methoden Namespaces Programmierkurs C++ Konstruktor, Statische Methoden Namespaces Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

Mehr

Einführung zu den Klassen in C++ 107

Einführung zu den Klassen in C++ 107 Einführung zu den Klassen in C++ 107 class Counter { public: // constructors Counter() : counter{0 { Counter(int counter) : counter{counter { // accessors int get() const { return counter; // mutators

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine

Mehr

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18 C++ Teil 5 Sven Groß 13. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 13. Mai 2016 1 / 18 Themen der letzten Vorlesung Funktionen Funktionsüberladung, Signatur Rekursion const-deklaration Referenzen

Mehr

Programmieren in C++ Templates

Programmieren in C++ Templates Programmieren in C++ Templates Inhalt Templates Funktions- und Klassen-Templates Spezialisierung von Templates Generische Klassen Einbinden von Templates Instantiierung (implizit und explizit) Templates

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

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

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

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg Klassen und Objekte Einführung in Java Folie 1 von 28 12. Mai 2011 Ivo Kronenberg Inhalt Objekte Klassendefinitionen Datenelemente (Klassenattribute) Instanzieren von Objekten Konstruktoren Vergleich primitive

Mehr

Aufbau von Klassen. class punkt {...

Aufbau von Klassen. class punkt {... Einführung in C++ Aufbau von Klassen Eine wird mit dem Schlüsselwort class eingeleitet, und endet mit einem Semikolon. Der Inhalt wird zwischen geschweiften Klammern geschrieben. class punkt {... ; Im

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Generics Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4

Mehr

Informatik 1 MaVt FS Übung 10

Informatik 1 MaVt FS Übung 10 Informatik 1 MaVt FS 2010 Übung 10 Claudia Kuster ckuster@inf.ethz.ch Mittwoch 13-15h HG E 27 http://graphics.ethz.ch/~ckuster/teaching/mavt_info1_2010.html Vorlesung Objektorientierte Programmierung Konstruktoren

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

3 Klassen, Attribute, Methoden

3 Klassen, Attribute, Methoden 3 Klassen, Attribute, Methoden Jörn Loviscach Versionsstand: 21. März 2014, 22:58 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This

Mehr

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18

Mehr

Einführung in die Programmiersprache Java II

Einführung in die Programmiersprache Java II Einführung in die Programmiersprache Java II ??????????? UML OOP "Object oriented programming is bad" - professional retard 90s... UML Entwicklungsziele verschiedenen existierenden objektorienten Modellierungsmethoden

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

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

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

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

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

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Fragen zur OOP in Java

Fragen zur OOP in Java - 1 - Inhalt Was bedeutet OOP?... 2 Was versteht man unter einer Klasse?... 2 Wie nennt man die Mitglieder einer Klasse?... 2 Wie erzeugt man Objekte?... 2 Wie greife ich auf Member einer Klasse zu?...

Mehr

Klassenvariablen, Klassenmethoden

Klassenvariablen, Klassenmethoden Einstieg in die Informatik mit Java, Vorlesung vom 11.12.07 Übersicht 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden 3 Aufruf einer Klassenmethode 4 Hauptprogrammparameter 5 Rekursion Klassenmethoden

Mehr

Umsetzung einer Klassenkarte in einer Programmiersprache

Umsetzung einer Klassenkarte in einer Programmiersprache Klassen in Java Umsetzung einer Klassenkarte in einer Programmiersprache Objektorientierte Programme bestehen (nur) aus Klassendefinitionen In Klassendefinitionen wird die Struktur der Objekte festgelegt,

Mehr

Programmieren I. Kapitel 10. Spezielle Features

Programmieren I. Kapitel 10. Spezielle Features Programmieren I Kapitel 10. Spezielle Features Kapitel 10: Spezielle Features Ziel: Besonderheiten von Java bei OO Konzepten statische Attribute und Methoden innere, verschachtelte und lokale Klassen anonyme

Mehr

Java Einführung Methoden. Kapitel 6

Java Einführung Methoden. Kapitel 6 Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden

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

Grundlagen der Informatik 11. Zeiger

Grundlagen der Informatik 11. Zeiger 11. Zeiger Motivation Zeiger und Adressen Zeiger und Funktionen Zeiger und Arrays Dynamische Objekte Grundlagen der Informatik (Alex Rempel) 1 Motivation Dynamische Speicherverwaltung Oft müssen große

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

Informatik I (D-MAVT)

Informatik I (D-MAVT) Informatik I (D-MAVT) Übungsstunde 9 simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich Ablauf Nachbesprechung Übung 7 Besprechung/Vertiefung der Vorlesung Vorbesprechung Übung 9 Aufgabe 1:

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

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

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

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11

Mehr

Vererbung, Polymorphie

Vererbung, Polymorphie Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

3.3 Konstruktoren und Destruktoren

3.3 Konstruktoren und Destruktoren Konstruktoren eine spezielle Form von Methoden gleicher Name wie Klasse kein Rückgabewert Aufgabe: Instanzen einrichten (konstruieren), Anfangswerte setzen, Werte übernehmen, an Instanzvariablen übergeben

Mehr

C++ Teil 5. Sven Groß. 8. Mai IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai / 16

C++ Teil 5. Sven Groß. 8. Mai IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai / 16 C++ Teil 5 Sven Groß IGPM, RWTH Aachen 8. Mai 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai 2015 1 / 16 Themen der letzten Vorlesung Live Programming zu A2 Gleitkommazahlen Rundungsfehler Auswirkung

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

Arrays. Einleitung. Deklarieren einer Array Variablen

Arrays. Einleitung. Deklarieren einer Array Variablen Arrays Einleitung bisher jede Variable einzeln deklariert: 12 3 14 12 32 32 3 32 5 3 double sum; int count; ÿ Sie können Zweck und Aufbau von Array-Datentypen erklären ÿ Sie können einen Array korrekt

Mehr

Programmieren in C++

Programmieren in C++ Programmieren in C++ SS 2016 Vorlesung 5, Dienstag 24. Mai 2016 (Klassen und Objekte) Prof. Dr. Hannah Bast Lehrstuhl für Algorithmen und Datenstrukturen Institut für Informatik Universität Freiburg Blick

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 18 Einstieg in die Informatik mit Java Klassenvariablen, Klassenmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 18 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces

14 Abstrakte Klassen, finale Klassen, Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt. Für eine abstrakte Klasse

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung C++ Objektorientierte Programmierung Erweiterung von selbstdefinierten Datentypen (struct) zu Klasse. Eine Klasse besteht dann aus - Attributen (Untertypen wie struct) und zusätzlich - aus Methoden (Funktionen

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen Auswertung von Ausdrücken Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt.

Mehr

Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 8. Blatt Für den 16. und

Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 8. Blatt Für den 16. und Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 8. Blatt Für den 16. und 17.6.2008 Organisatorisches Um auf die Mailingliste aufgenommen zu werden schicke einfach eine

Mehr

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen Objektorientierte Programmierung mit Grundlagen 27.10.2008 1 Übersicht 27.10.2008 2 1 Übersicht Klassen und Objekte in - Klassen - Objekte - Klassen - Objekte 27.10.2008 3 Übersicht 27.10.2008 4 2 Einführung

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen

Mehr

Geschachtelte Klassen

Geschachtelte Klassen Geschachtelte Klassen Die Programmiersprache Java bietet nicht nur die Möglichkeit innerhalb von Klassen Datenfelder und Methoden zu definieren, sondern auch Klassen. Solche Klassen heißen en geschachtelte

Mehr

Vokabeln. 4.1 Benutzer definierte Datentypen. Kapitel 4. Prof. Dr. Gerhard Berendt C++ oop? SS 2002 Arbeitsblatt 4

Vokabeln. 4.1 Benutzer definierte Datentypen. Kapitel 4. Prof. Dr. Gerhard Berendt C++ oop? SS 2002 Arbeitsblatt 4 4.1 Benutzer definierte Datentypen C++ unterstützt die Einführung benutzer definierter Datentypen (auch Abstrakte Datentypen (ADT) genannt). ADTs bieten einen guten Einstieg in das Paradigma der objekt

Mehr

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches

Mehr

Java Datentypen und Variablen

Java Datentypen und Variablen Informatik 1 für Nebenfachstudierende Grundmodul Java Datentypen und Variablen Kai-Steffen Hielscher Folienversion: 24. Januar 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht

Mehr

12. Java Klassen. Klassen - Technisch. Beispiel: Erdbebendaten. Klassen - Konzeptuell

12. Java Klassen. Klassen - Technisch. Beispiel: Erdbebendaten. Klassen - Konzeptuell Klassen - Technisch Eine Klasse ist eine Einheit mit einem Namen, die Daten und Funktionalität beinhaltet 12. Java Klassen Klassen, Typen, Objekte, Deklaration, Instanzierung, Konstruktoren, Kapselung,

Mehr