Programmierung III. Pointer für Fortgeschrittene Marc Ruberg. Arrays von Pointern ( Zeigervektoren ): Pointer auf Pointer:

Größe: px
Ab Seite anzeigen:

Download "Programmierung III. Pointer für Fortgeschrittene Marc Ruberg. Arrays von Pointern ( Zeigervektoren ): Pointer auf Pointer:"

Transkript

1 Programmierung III Marc Ruberg 1 Pointer für Fortgeschrittene Arrays von Pointern ( Zeigervektoren ): long *zahlenptr[25]; char *strptr[1000]; Pointer auf Pointer: char **sp Zeiger auf Funktionen: Typ (*funcptr)(parameterliste) Void (*functab[])(char*) 2 1

2 Lesekurs für komplexe Deklarationen Zuerst den Bezeichner suchen, der deklariert wird. Dann Folgendes wiederholen: 1. Nach rechts schauen! () oder [] interpretieren, falls vorhanden. 2. Steht rechts nichts oder ), dann links den Stern interpretieren. Zuletzt den Grundtyp interpretieren. Beispiel: char *(*(* test)())[22] 3 Leseaufgaben char (* strptr)[50] long * (* func())[] char * (*(*funcptr)())[] 4 2

3 Dynamische Variablen (1) Dynamische Variablen auf dem Heap 5 Dynamische Variablen (2) Direkt nach der Deklaration von anker: struct dyn_var *anker; 6 3

4 Dynamische Variablen (3) anker = (struct dyn_var *) malloc(sizeof(struct dyn_var)); 7 Dynamische Variablen (4) anker->key = 1; anker->next = (struct dyn_var *) malloc(sizeof(struct dyn_var)); 8 4

5 Dynamische Variablen (5) anker->next->key = 2; anker->next->next = NIL; 9 Dynamische Variablen (6) anker->next->next = anker; 10 5

6 Dynamische Variablen (7) anker = anker->next->next; 11 Dynamische Variablen (8) anker = anker->next; 12 6

7 Dynamische Variablen (9) anker = (struct dyn_var *) malloc(sizeof(struct dyn_var)); 13 Einfach verkettete Listen (1) Typdefinition des Listenknotens: typedef struct article2 { char name[21]; long num; struct article2 *next; } listelement; 14 7

8 Einfach verkettete Listen (2) Beispiel einer einfach verketteten Liste mit vier Elementen (schematische Darstellung): Die einzelnen Elemente können auf dem Heap dynamisch generiert werden dadurch wird nur so viel Speicherplatz belegt wie auch wirklich für die Daten benötigt wird 15 Einfach verkettete Listen (3) Eine einfach verketteten Liste mit vier Elementen und konkreten Daten. 16 8

9 Doppelt verkettete Listen Beispiel einer doppelt verketteten Liste mit vier Elementen (schematische Darstellung) Vorteile: Liste kann auch rückwärts durchlaufen werden Einfüge- und Löschoperationen werden dadurch einfacher 17 C++: Manipulatoren für die Ein- und Ausgabe Siehe Beispiele 18 9

10 Deklarationen in C++ Deklarationen sind an jeder beliebigen Stelle im Quelltext möglich, also auch z. B. for (int i = 1; i <= 10; i++) { cout << i << ". Schleifendurchlauf" << endl; } 19 inline-funktionen Geht auch mit C! inline int quadrat (int x) { return x*x; } Der Maschinencode wird kopiert (kein Unterprogramm) Wird zur Steigerung der Laufzeiteffizienz benutzt (in C gibt es hierfür die Makros)

11 Funktionen mit Defaultwerten Beispiel: void ausgabe (int wert, int basis = 10); Mögliche Aufrufe: ausgabe (17, 27); ausgabe (17); //gleichbedeutend mit // ausgabe (17, 10); Nicht möglich: ausgabe(); 21 Überladung Überladung von Funktionen (siehe ueberladen1.cpp) Operatoren: punkt operator+(punkt p1, punkt p2) { punkt ergebnis; } ergebnis.x = p1.x + p2.x; ergebnis.y = p1.y + p2.y; return ergebnis; 22 11

12 Scope-Resolution-Operator :: #include <iostream> using namespace std; int a = 1; // globale Variable; int main(void) { int a = 2; cout << "global: " << ::a << endl; cout << "lokal: " << a << endl; return 0; } 23 Referenzen auf Variablen Deklaration (immer mit gleichzeitiger Initialisierung!): int zahl; int& ref = zahl; Die Referenz ref ist nun ein Alias für die Variable zahl. Alle Operationen auf ref haben unmittelbare Auswirkung auf zahl: ref = 4711; Jetzt hat zahl ebenfalls den Wert 4711! 24 12

13 Referenzen als Parameter Verwendung von Referenzen als Parameter: void swap_referenz(int& a, int& b) { int tmp; tmp = a; a = b; b = tmp; } 25 Dynamische Speicherverwaltung in C++ Statt der Funktionen malloc() und free() werden die Operatoren new und delete verwendet: int* pzahl = 0; pzahl = new int; //alternativ: int* pzahl = new int;... delete pzahl; pzahl = 0; 26 13

14 Objektorientierte Programmierung Abstrakte Datentypen Klassen und Objekte Konstruktoren und Destruktoren 27 Abstrakter Datentyp Abstrakter Datentyp = Datentypen + Funktionen Vergleich: Zugriff auf zwei Koordinaten X und Y eines Punktes Unstrukturierter Zugriff: X = 100; Y = 0; 28 14

15 Abstrakter Datentyp (2) Strukturierter Zugriff: struct Punkt { int X, Y; }; void aendern(punkt& p, int x, int y) { p.x = x; p.y = y; } Punkt einpunkt; // Aufruf aendern(einpunkt, 10, 800); einpunkt.x = -3000; //??? 29 Abstrakter Datentyp (3) Kapselung, durch Programmiersprache unterstützt: Die Funktion als öffentliche Schnittstelle gehört zur Datenkapsel. Eine direkte Änderung der Daten unter Umgehung der Funktion ist unmöglich. Der ADT ist als Software-Baustein verwendbar

16 Eigenschaften eines ADT: Der Sinn liegt darin, den richtigen Gebrauch der Daten sicherzustellen. Die tatsächliche Implementierung der Datenstrukturen ist nach außen nicht sichtbar. Logisch zusammengehörige Dinge sind an einem Ort konzentriert. Spezifikation ausschließlich durch die öffentliche Schnittstelle des ADT, die die mit ihm möglichen Operationen definert. Realisierung durch Klassen in der OOP. 31 Klassen und Objekte In C++ ist eine Klasse ein Datentyp, genauer: ein ADT. Für den Compiler ist eine Klasse eine Beschreibung später zu definierender Objekte. Ein Objekt ist die konkrete Ausprägung (Instanz) einer Klasse, es belegt Platz im Speicher. Ein Objekt hat eine Identität und einen Zustand. Der Zustand eines Objekts wird durch in der Klasse deklarierte Funktionen (Operationen, Methoden) geändert

17 Deklaration einer Klasse in C++ class Klassenname { public: Typ Elementfunktion1(); Typ Elementfunktion2(); // und weitere... private: Typ Attribut1; Typ Attribut2; // und weitere... }; 33 Beispiel Klasse für einen Ort. Operationen: getx() = X-Koordinate zurückgeben gety() = Y-Koordinate zurückgeben aendern() = X- und Y-Koordinaten ändern Siehe COrt1.cpp, COrt1.h Die Implementierung der Methoden kann außerhalb der Klassendefinition geschehen (dies ist sogar der Normalfall! 34 17

18 Initialisierung und Konstruktoren Objekte können mit Konstruktoren während der Definition initialisiert, also mit sinnvollen Anfangswerten versehen werden. Konstruktoren haben keinen Return-Typ, auch nicht void. 35 Der Standardkonstruktor Der Standardkonstruktor hat keine Argumente Beispiel: Ort1::Ort1() { // neuer Standardkonstruktor xkoordinate = 0; // Koordinaten des ykoordinate = 0; // Nullpunkts } 36 18

19 Allgemeine Konstruktoren Allgemeine Konstruktoren können Argumente haben und überladen werden. Beispiel: Ort1::Ort1(int x, int y) { xkoordinate = x; ykoordinate = y; } 37 Allgemeine Konstruktoren (2) Aufruf des Konstruktors oder auch Definition des Objekts : Ort1 nocheinort(70, 90); Konstruktoren können auch überladen werden! 38 19

20 Allgemeine Konstruktoren (3) Elementinitialisierer: Membervariablen (bzw. Teilobjekte) können mit der Anweisung membervariable(anfangswert) initialisiert werden. Mehrere Elementinitialisierer können in einer durch Kommas getrennten Liste an die Definition des Konstruktors gehängt werden (siehe Beispiele). Dies gehört nicht in die Headerdatei! 39 Destruktoren Zweck: Aufräumarbeiten für nicht mehr benötigte Objekte Wenn Destruktoren nicht vorgegeben werden, werden sie vom System automatisch erzeugt. Der häufigste Zweck ist die Speicherfreigabe, wenn der Gültigkeitsbereich eines Objekts verlassen wird. Die Reihenfolge des Aufrufs der Destruktoren ist umgekehrt wie die der Konstruktoren. Destruktoren haben keine Argumente und keinen Rückgabetyp

21 Destruktoren (2) Falls es globale Objekte gibt, wird ihr Konstruktor vor der ersten Anweisung von main() aufgerufen. Innerhalb des äußersten Blocks von main() definierte Objekte werden erst nach Verlassen von main() freigegeben. Wegen der umgekehrten Reihenfolge der Destruktoraufrufe werden globale Objekte zuletzt freigegeben. 41 Destruktoren (3) Beispiel: (siehe konstr_destr.cpp) class Beispiel { int zahl; public: Beispiel(int i = 0); // Konstruktor ~Beispiel(); // Destruktor }; Beispiel::Beispiel(int i) { // Konstruktor zahl=i; cout << "Objekt " << zahl << " wird erzeugt.\n"; } 42 21

22 Destruktoren (4) // globale Variable, durch Vorgabewert mit 0 initialisiert Beispiel ein_globales_beispiel; int main() { cout << "main wird begonnen\n"; Beispiel einbeispiel(1); { // neuer Block cout << " neuer Block\n "; Beispiel einbeispiel(2); cout << " Block wird verlassen\n "; } cout << "main wird verlassen\n"; } 43 Destruktoren (5) Ausgabe des Programms: Objekt 0 wird erzeugt. main wird begonnen Objekt 1 wird erzeugt. neuer Block Objekt 2 wird erzeugt. Block wird verlassen Objekt 2 wird zerstört. main wird verlassen Objekt 1 wird zerstört. Objekt 0 wird zerstört

23 Vererbung Was ist Vererbung? Die von einer Basisklasse abgeleitete Klasse erbt die Membervariablen und Methoden. Zusätzlich können weitere Membervariablen und Methoden ergänzt werden. Wozu Vererbung? Datenabstraktion Wiederverwendbarkeit Beispiel: Ein Objekt vom Typ Pkw oder vom Typ Lkw ist ein spezielles Objekt der Klasse Kfz

24 Vererbung (2) public-vererbung: public-elemente bleiben weiterhin public. Eine Methode der abgeleiteten Klasse kann nicht direkt auf private-elemente der Basisklasse zugreifen (aber indirekt via public-methoden der Basisklasse). Es stehen in der abgeleiteten Klasse zur Verfügung: Alle public-elemente der Basisklasse, die in der abgeleiteten Klasse zusätzlich definierten public-elemente. Mehrfache Vererbung: Eine abgeleitete Klasse kann selbst wieder Basisklasse für eine weitere von ihr abgeleitete Klasse sein

25 49 Vererbung (3) Redefinition von Elementen: Jede Membervariable und jede Methode der Basisklasse kann in der abgeleiteten Klasse redefiniert werden. Redefinition bedeutet nicht Überladung: Redefinition entspricht einer abgeleiteten-klassenlokalen Definition (mit neuem Gültigkeitsbereich). Es kann auf gleichnamige public-elemente der Basisklasse mit dem Operator :: zugegriffen werden In der selben (abgeleiteten) Klasse können Methoden wie überall überladen werden (mehrfache Redefinition)

26 Vererbung (4) Konstruktoren abgeleiteter Klassen: Aufruf-Reihenfolge: Zuerst der Konstruktor der Basisklasse, dann der Konstruktor der abgeleiteten Klasse. Besonders effizient: Vermeidung von doppelter Initialisierung von Basisklassen-Membervariablen durch einen Basisinitialisierer. Auch (zusätzlich) möglich: Elementinitialisierer. Destruktoren abgeleiteter Klassen: Aufruf-Reihenfolge: Zuerst der Destruktor der abgeleiteten Klasse, dann der Destruktor der Basisklasse (automatisch). 51 Vererbung (5) protected-deklarationen: Falls erwünscht ist, dass die Methoden einer abgeleiteten Klasse auf Elemente der Basisklasse zugreifen, die nicht als public deklariert werden sollen, so können diese Elemente als protected deklariert werden. Auf protected-elemente kann von außen nicht zugegriffen werden (wie bei private-elementen)

27 Vererbung (6) protected-vererbung (eher selten...): Alle in der Basisklasse als public oder protected deklarierten Elemente werden in der abgeleiteten Klasse zu protected-elementen. private-vererbung (eher selten...): Alle in der Basisklasse als public oder protected deklarierten Elemente werden in der abgeleiteten Klasse zu private-elementen. Es können Ausnahmen für einzelne Elemente definiert werden (werden wir nicht weiter verfolgen). 53 Polymorphie Anforderung an die Programmiersprache: Es existiert ein Zeiger auf ein Objekt, von dem noch nicht feststeht, von welchem Typ (innerhalb einer Klassenhierarchie) es sein wird. Zur Programmlaufzeit soll nun entschieden werden, welche Methoden zum Einsatz kommen dürfen. Lösung: 1. Zeiger auf Objekt der Basisklasse 2. Virtuelle Methoden 54 27

28 Polymorphie (technische Realisierung) In der Basisklasse wird der virtuellen Methode das Schlüsselwort virtual vorangestellt, z. B. virtual void display() const; Bei der Redefinition dieser virtuellen Methode in der abgeleiteten Klasse muss Folgendes beachtet werden: gleiche Anzahl und gleiche Typen der Parameter, gleicher Ergebnistyp wie in Basisklasse. Konstruktoren können nicht virtuell sein. Destruktoren sollten immer virtuell sein, zwecks vollständiger Aufräumarbeiten bei dynamisch erzeugten Objekten. 55 Statische und dynamische Bindung Statische Bindung bedeutet, dass zum Zeitpunkt der Compilierung die Adresse einer Methode bereits bekannt ist. Statische Bindung liegt vor bei allen nicht-virtuellen Methoden, bei virtuellen Methoden, wenn die Methode direkt über einen Objektnamen (und nicht indirekt über einen Pointer) aufgerufen wurde. Bei dynamischer Bindung ist erst zur Laufzeit des Programms bekannt, welche Methode aufgerufen werden soll, z. B. bei: kfzptr->display(); 56 28

29 Realisierung der dynamischen Bindung Der Compiler realisiert die dynamische Bindung mit Hilfe von virtuellen Methodentabellen (Virtual Method Tables, VMT). Diese werden für jede Klasse angelegt, die mindestens eine virtuelle Methode enthält. Eine VMT ist ein Array mit den Adressen der virtuellen Methoden der jeweiligen Klasse. Jedes Objekt einer polymorphen Klasse besitzt einen (versteckten) Zeiger auf die VMT. Mit diesem Zeiger wird immer dann bei Bedarf (d. h. beim indirekten Aufruf über einen Basisklassenzeiger) die Adresse der virtuellen Methode bestimmt. 57 Virtuelle Methodentabelle 58 29

30 Dynamische Bindung: Pro und Contra Vorteil: Bereits übersetzter Quellcode kann nachträglich erweitert werden auch wenn dieser nicht vorliegt! So kann ein Programmierer eigene Klassen aus den Klassen von gekauften Klassenbibliotheken ableiten und eigene Versionen der virtuellen Methoden erstellen. Nachteile: VMTs belegen zusätzlichen Speicherplatz Programm ist etwas weniger performant 59 Unsichere Down-Casts Es ist ohne Compiler-Fehlermeldung möglich, einen Zeiger auf ein Objekt einer abgeleiteten Klasse in einen Zeiger auf ein Objekt einer anderen abgeleiteten Klasse zu casten: Pkw* pkwptr = (Pkw*)(kfzPtr); Eine Anweisung, die sich auf ein nicht vorhandenes Element bezieht, bringt allerdings das Programm zum Absturz, wie z. B. bei pkwptr->settyp("2cv"); (Falls pkwptr zur Laufzeit auf ein Objekt vom Typ Lkw zeigen würde.) 60 30

31 Cast-Überprüfung mit dynamic_cast<> Der Operator dynamic_cast<> liefert den Wert NULL zurück, falls versucht wurde, einen Zeiger in einen nicht-kompatiblen Objekttyp zu casten. Beispiel: Pkw* pkwptr = dynamic_cast<pkw*>(kfzptr); 61 Abstrakte Basisklassen Manchmal ist es zwar sinnvoll, dass eine Basisklasse wegen besserer Übersichtlichkeit einen logischen Oberbegriff darstellt, aber direkte Objekte dieser Basisklasse wären wenig nützlich. In einem solchen Fall möchte der Programmierer dem Compiler mitteilen, dass (mindestens) eine virtuelle Methode in einer abgeleiteten Klasse redefiniert werden muss. Man nennt eine solche Methode rein virtuell oder auch abstrakt. Eine Klasse, die eine rein virtuelle Methode enthält, wird ebenfalls als abstrakte Klasse bezeichnet

32 Abstrakte Basisklassen (2) Syntax: virtual void Draw(HDC hdc) = 0; 63 friend-funktionen und friend-methoden Mitunter ist es wünschenswert, dass Funktionen, die nicht zu einer Klasse gehören, aber trotzdem sehr eng mit dieser Klasse zusammenarbeiten, einen Zugriff auf private-elemente der Klasse haben sollten. Dies ist insbesondere bei der Überladung von Operatoren der Fall und zwar aus Performance- Gründen. Die entsprechende Funktion muss in diesem Fall in der Klasse mit dem vorangestellten Schlüsselwort friend erwähnt werden

33 friend-funktionen und friend-methoden Syntax: friend Euro operator* (double x, const Euro& e); Wenn die Implementierung der friend-funktion außerhalb der Klasse erfolgt, gibt es Fälle, bei denen dies mit dem Schlüsselwort inline geschehen sollte (z. B. bei Operatoren)

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

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

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

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

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

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

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren

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

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

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

Informationsverarbeitung im Bauwesen

Informationsverarbeitung im Bauwesen 1/21 Informationsverarbeitung im Bauwesen Einführung in das Programmieren mit C++ Markus Uhlmann Institut für Hydromechanik Karlsruher Institut für Technologie www.ifh.kit.edu WS 2010/2011 Vorlesung 8

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

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 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

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

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

C++ - Operatoren. Eigene Klassen mit neuen Funktionen C++ - Operatoren Eigene Klassen mit neuen Funktionen Übersicht Klassen bisher Eigene Operatoren definieren 2 Bisher Durch Kapselung, Vererbung und Polymorphy können nun eigene Klassen definiert werden,

Mehr

Java I Vorlesung Vererbung und Sichtbarkeit

Java I Vorlesung Vererbung und Sichtbarkeit Java I Vorlesung 4 Vererbung und Sichtbarkeit 17.5.2004 Vererbung Überladen, Überschreiben, Verstecken, Verschatten Zugriffskontrolle Statische Members Wiederholung: OOP Programme bestehen aus Klassen.

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

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

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

Die abgeleiteten Klassen Kreis und Viereck erben die Elemente des Basisklasse und verfügen über zusätzliche Eigenschaften (Seitenlänge,

Die abgeleiteten Klassen Kreis und Viereck erben die Elemente des Basisklasse und verfügen über zusätzliche Eigenschaften (Seitenlänge, Kompaktkurs C++ Vererbung (inheritance) 1 Oft besitzen verschiedene Datentypen einen gemeinsamen Kern: Kreis und Viereck sind geometrische Figuren; sie haben eine Kantenzahl, eine Fläche, einen Umfang

Mehr

Programmieren - Vererbung & Polymorphie

Programmieren - Vererbung & Polymorphie Programmieren - Vererbung & Polymorphie Reiner Nitsch r.nitsch@fbi.h-da.de Vererbung - Was ist das? Vererbung ist ein wichtiges Konzept zur Unterstützung der Wiederverwendbarkeit, wenn auch nicht das Wichtigste.

Mehr

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,

Mehr

Vererbung. Was versteht man unter dem Begriff Vererbung?

Vererbung. Was versteht man unter dem Begriff Vererbung? Was versteht man unter dem Begriff Vererbung? Elternkonstrukt - Datenelemente - Methoden o Deklaration o Definition Kindkonstrukt... Main... Elternkonstrukt b = new Kindkonstrukt() b.fn() Komponenten &

Mehr

Überschreiben von Methoden

Überschreiben von Methoden Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra

Mehr

Der Operator this. Wir betrachten nochmals die Klassendefinition von Ballon.

Der Operator this. Wir betrachten nochmals die Klassendefinition von Ballon. Der Operator this Wir betrachten nochmals die Klassendefinition von Ballon. public class Ballon { private int durchmesser; private int x1, y1; private Color farbe =Color.black; // Konstruktor ohne Farbe

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

3D Programmierpraktikum: Einführung in C++ - Teil 2

3D Programmierpraktikum: Einführung in C++ - Teil 2 3D Programmierpraktikum: Einführung in C++ - Teil 2 Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 4. Mai 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Abend 7 Vererbung und Polymorphie, Abstrakte Klassen

Abend 7 Vererbung und Polymorphie, Abstrakte Klassen Abend 7 Vererbung und Polymorphie, Abstrakte Klassen Ziel, Inhalt Wir sehen heute weitere Beispiele für Polymorphie und virtuelle Methoden. Wir lernen auch Klassen kennen, von denen man keine Objekte erzeugen

Mehr

Advanced Programming in C

Advanced Programming in C Advanced Programming in C Pointer und Listen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Variablen vs. Pointer - Statischer und dynamischer

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte

Mehr

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Grundzüge der Programmierung. Wiederverwendung VERERBUNG Grundzüge der Programmierung Wiederverwendung VERERBUNG Inhalt dieser Einheit Syntax: Vererbung in Java Superklassen - Subklassen Konstruktorenaufruf in Subklassen super, abstract und final 2 Code-Reuse

Mehr

Einführung in C++ Vererbung und Polymorphismus

Einführung in C++ Vererbung und Polymorphismus Einführung in C++ Vererbung und Polymorphismus Ablauf Grundlegende Eigenschaften der Vererbung in C++ Redefinition und Namensauflösung Eine einfache Klassenhierarchie in Java und C++ Redefinition von virtuellen

Mehr

Verwendung von Klassen in C++

Verwendung von Klassen in C++ Verwendung von Klassen in C++ Heute: Benutzerdefinierte Datentypen (Konkrete Klassen) Vektoren Komplexe Zahlen Adressdatei Morgen: Objektorientierte Programmierung (Abstrakte Klassen) Vererbung Polymorphie

Mehr

Übersicht. Vorstellung des OO-Paradigmas

Übersicht. Vorstellung des OO-Paradigmas Java, OO und UML Vorstellung des OO-Paradigmas Übersicht Umsetzung des OO-Paradigmas in Java Einführung (seeeeeehr rudimenter) in UML zur graphischen Darstellung von OO Grammatik und Semantik von Java

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

Java Vererbung. Inhalt

Java Vererbung. Inhalt Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter

Mehr

Theorie zu Übung 8 Implementierung in Java

Theorie zu Übung 8 Implementierung in Java Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept

Mehr

Überladen von Operatoren

Überladen von Operatoren - Überladen des Indexoperators [] - Überladen des Ausgabeoperators > Programmieren in C++ Informatik FH Trier C++12-1 ähnlich dem Überladen von Funktionen Überladen

Mehr

1. Von der Idee zur Software 2. Funktionen und Datenstrukturen Lehrbuch: 4.3 3. Organisation des Quellcodes 4. Werte- und Referenzsemantik

1. Von der Idee zur Software 2. Funktionen und Datenstrukturen Lehrbuch: 4.3 3. Organisation des Quellcodes 4. Werte- und Referenzsemantik Software-Technik: Vom Programmierer zur erfolgreichen Software-Technik: Vom Programmierer zur erfolgreichen 1. Von der Idee zur Software 2. Funktionen und Datenstrukturen Lehrbuch: 4.3 3. Organisation

Mehr

Präsentation Interfaces

Präsentation Interfaces Einführung in Java Präsentation Interfaces Nozar Delassaei Marvi Inhalt 1. Erinnerung Klasse Objekte Beispiel Klasse Abstrakte Klasse Beispiel Abstrakte Klasse Mehrfachvererbung-1 Mehrfachvererbung-2 2.

Mehr

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung K05 Vererbung & Polymorphie in C++ 1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung 2 Vererbung in C++: Grundlagen Analog zu Java unterstützt C++ das Konzept der Vererbung:

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Programmierkurs C++ Kapitel 7:Objektorientierte Programmierung Seite 1 Objektorientierte Programmierung If programming in PASCAL is like put in a straightjacket, then programming in C is like playing with

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 9. Zeiger Arbeitsspeicher / Adressen Der Arbeitsspeicher des Computers (RAM) besteht aus einem Feld von Speicherzellen, beginnend bei Adresse

Mehr

Einführung in die. objektorientierte Programmierung

Einführung in die. objektorientierte Programmierung Einführung in die objektorientierte Programmierung Teil 3 Vererbung Modul WI111: Objektorientierte Programmierung Fachrichtung Wirtschaftsinformatik Prof. Dr. Gert Faustmann Fachbereich Berufsakademie

Mehr

7 Vererbung. Modul Programmieren mit C++ Kapitel Vererbung

7 Vererbung. Modul Programmieren mit C++ Kapitel Vererbung 7.1 7 Vererbung Eine von der Basisklasse B abgeleitete Klasse A erbt alle Attribute und Methoden von B. Ein Objekt der Klasse A besitzt ein Slice der Klasse B und ein Slice der Klasse A. Jeder Konstruktor

Mehr

magnum C++ WALTER SAUMWEBER kompakt komplett kompetent

magnum C++ WALTER SAUMWEBER kompakt komplett kompetent magnum C++ WALTER SAUMWEBER kompakt komplett kompetent Quickview... 5 Liebe Leserin, lieber Leser... 13 Teil 1 Grundlagen... 15 1 Was ist Programmieren?... 17 1.1 Was ist eigentlich ein Computerprogramm?...

Mehr

C++-Zusammenfassung. H. Schaudt. August 18, 2005

C++-Zusammenfassung. H. Schaudt. August 18, 2005 C++-Zusammenfassung H. Schaudt August 18, 2005 1 Datentypen 1.1 Grunddatentypen int (-32xxx bis +32xxx, implementerungs-abhängig) char -128 bis +128 float double bool (C++) int und char sind austauschbar:

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

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt

Mehr

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der Vererbung Vererbung ist ein Konzept der objektorientierten Programmierung,, die es ermöglicht neue Klassen von bereits vorhandenen Klassen abzuleiten. In einer abgeleiteten Klasse (subclass) muss nur spezifiziert

Mehr

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode Methoden und Klassen Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode

Mehr

13. Vererbung. Prof. Dr. François E. Cellier Informatik I für D-ITET (HS 2012)

13. Vererbung. Prof. Dr. François E. Cellier Informatik I für D-ITET (HS 2012) 13. Vererbung Prof. Dr. François E. Cellier Informatik I für D-ITET (HS 2012) Vererbung Konzept Protected Section Virtuelle Mitgliedsfunktionen Verwendung von Vererbung Vererbung Vererbung ist ein Mechanismus,

Mehr

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Wozu objektorientiertes Programmieren? Die Welt besteht für den Menschen

Mehr

01. Grundprinzipien der Vererbung

01. Grundprinzipien der Vererbung 01. Grundprinzipien der Vererbung 1.1 Grundidee der Vererbung Bei der Analyse eines Problems (z.b. Baukasten) stellt man beispielsweise fest, dass 67 % an Daten/Funktionen immer vorkommen 25 % an Daten/Funktionen

Mehr

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte Grundkonzepte Objektorientierter Programmierung Nicole Himmerlich FSU Jena mit Java, Oberon-2, Object-Pascal und Python Inhaltsüberblick I. Grundbegriffe 1) Kopplung 2) Datenkaspelung 3) Konstruktor 4)

Mehr

Klassenbeziehungen & Vererbung

Klassenbeziehungen & Vererbung Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in

Mehr

12. Vererbung. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

12. Vererbung. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04) 12. Vererbung Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Vererbung Konzept!Protected Section!Virtuelle Mitgliedsfunktionen!Verwendung von Vererbung Copyright: M. Gross, ETHZ, 2003 2 Vererbung!

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

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

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Die Vererbung ermöglicht es, neue Klassen auf der Basis von schon

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

2. Semester, 2. Prüfung, Lösung

2. Semester, 2. Prüfung, Lösung 2. Semester, 2. Prüfung, Lösung Name Die gesamte Prüfung bezieht sich auf die Programmierung in C++! Prüfungsdauer: 90 Minuten Mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter

Mehr

Beziehungen zwischen Objekten

Beziehungen zwischen Objekten 1/19 Beziehungen zwischen Objekten Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/19 Outline 1 Vererbung (Wiederholung)

Mehr

C/C++-Programmierung

C/C++-Programmierung 1 C/C++-Programmierung new/delete, virtual, Typumwandlungen Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 new/delete

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS2013/14 Inhalt Übung(Aufklärung) Vererbung(wdh.) Initilisierung bei Vererbung

Mehr

10. Klassen. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

10. Klassen. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04) 10. Klassen Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Objektorientierte Programmierung!Das Konzept der Klassen!Members!Objekte!Konstruktoren und Destruktoren!this-Pointer!Public und Private

Mehr

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung: Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang

Mehr

Teil 9: Vererbung. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden

Teil 9: Vererbung. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden Teil 9: Vererbung Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden Inhaltsverzeichnis 9 Vererbung... 3 9.1 Motivation... 3 9.2 Deklaration und Zugriffsrechte...

Mehr

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Templates Nochmal zusammengefasst Die Basis der OOP- Zusammengefasst 2 Templates Programmiersprachen

Mehr

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

Mehr

Die Programmiersprache C99: Zusammenfassung

Die Programmiersprache C99: Zusammenfassung Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach

Mehr

Dynamischer Speicher

Dynamischer Speicher Dynamischer Speicher C-Kurs 2012, 3. Vorlesung Tino Kutschbach tino.kutschbach@campus.tu-berlin.de http://wiki.freitagsrunde.org 13. September 2012 This work is licensed under the Creative Commons Attribution-ShareAlike

Mehr

C++ - Eine Ubersicht fur Java-Programmierer

C++ - Eine Ubersicht fur Java-Programmierer C++ - Eine Ubersicht fur Java-Programmierer Daniel Wasserrab Lehrstuhl fur Programmierparadigmen Universitat Karlsruhe 23. April 2008 C++ I Entwickelt Anfang der 80er von Bjarne Stroustrup I Beeinut von

Mehr

3. Semester : 1. Prüfung

3. Semester : 1. Prüfung 3. Semester : 1. Prüfung Name : Die gesamte Prüfung bezieht sich auf die!! Prüfungsdauer: 90 Minuten mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter geschrieben werden

Mehr

Einführung in C++ mit Microsoft VS

Einführung in C++ mit Microsoft VS Einführung in C++ mit Microsoft VS Gliederung Allgemeines zu C++ und Unterschiede zu Java Header-Files Zeiger/Strukturen Namespaces Programmierstil Einführung in Microsoft VS Projekte und Solutions Debugger

Mehr

Ulla Kirch Peter Prinz C+ + Lernen und professionell anwenden. mitp

Ulla Kirch Peter Prinz C+ + Lernen und professionell anwenden. mitp Ulla Kirch Peter Prinz C+ + Lernen und professionell anwenden mitp Inhaltsverzeichnis Einleitung 19 Grundlagen 21 Entwicklung und Eigenschaften von C++ 22 Objektorientierte Programmierung 24 Erstellen

Mehr

Werner Achte rt DATA BECKER

Werner Achte rt DATA BECKER Werner Achte rt. DATA BECKER Inhaltsverzeichnis 1. Einführung 21 1.1 Entwurf von Anwendungssystemen 23 1.2 Entwicklung eines Programms 25 1.3 Objektorientierte Programmierung 29 1.4 Darstellung objektorientierter

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Einführung in den Einsatz von Objekt-Orientierung mit C++ I Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen

Mehr

AuD-Tafelübung T-B5b

AuD-Tafelübung T-B5b 6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit

Mehr

Java, OO und UML Fortsetzung

Java, OO und UML Fortsetzung Java, OO und UML Fortsetzung Das Objektorientierte Paradigma OO bildet keine geschlossene theoretisch abgegrenzte Basis (wie z.b. das Relationsmodell relationaler Datenbanken) OO ist eine Sammlung und

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Vererbung und Polymorphie

Vererbung und Polymorphie Vererbung und Polymorphie WiMa-Praktikum 1, Teil C++, Tag 5 Christoph Ott, Büro: Helmholtzstr.18, E22 Tel.: 50-23575, Mail: christoph.ott@uni-ulm.de Institut für Angewandte Informationsverarbeitung 29.08.08

Mehr

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen Ziel, Inhalt Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen 1 Ziel, Inhalt

Mehr

Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen

Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen Einleitende Bemerkungen Einleitende Bemerkungen Ideen hinter der objektorientierten Programmierung Objekte (/* Instanzen einer Klasse */) im Mittelpunkt Objekte bilden Einheit aus Daten (/* Attributen,

Mehr

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur Unterprogramme Unterprogramme sind abgekapselte Programmfragmente, welche es erlauben, bestimmte Aufgaben in wiederverwendbarer Art umzusetzen. Man unterscheidet zwischen Unterprogrammen mit Rückgabewert

Mehr

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free()

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free() Übungspaket 29 Dynamische Speicherverwaltung malloc() und free() Übungsziele Skript In diesem Übungspaket üben wir das dynamische Alloziieren 1. und Freigeben von Speicherbereichen 2. von Zeichenketten

Mehr

Vorlesung Programmieren. Bisher: Klassen und Objekte. Was ist mit ähnlichen Klassen? Vererbung und Polymorphismus

Vorlesung Programmieren. Bisher: Klassen und Objekte. Was ist mit ähnlichen Klassen? Vererbung und Polymorphismus Vorlesung Programmieren Vererbung und Polymorphismus Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Bisher: Klassen und Objekte Haupteigenschaften:

Mehr

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure 7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Was sind Felder? 2 Vereinbarung von Feldern 3 Erzeugen von Feldern

Mehr