Relationen-Algebra und Persistenz Teil I

Größe: px
Ab Seite anzeigen:

Download "Relationen-Algebra und Persistenz Teil I"

Transkript

1 Relationen-Algebra und Persistenz Teil I Implementierungskonzepte und Anforderungen an Attributdatentypen LG Datenbanksysteme für neue Anwendungen

2 Inhalt Flobs DbArrays Attributsdatentypen Folie 2

3 Bisher: Folie 3

4 Bisher: Ich kann bereits einfache Daten fester Größe verwalten. Folie 4

5 Bisher: Ich kann bereits einfache Daten fester Größe verwalten. Mein Datentyp verwaltet aber große Datenmengen. Folie 5

6 Bisher: Ich kann bereits einfache Daten fester Größe verwalten. Mein Datentyp verwaltet aber große Datenmengen. Mein Datentyp hat eine veränderliche Größe! Folie 6

7 Bisher: Ich kann bereits einfache Daten fester Größe verwalten. Mein Datentyp verwaltet aber große Datenmengen. Mein Datentyp hat eine veränderliche Größe! Beispiele: Bilder, Videos, Webseiten Folie 7

8 Bisher: Ich kann bereits einfache Daten fester Größe verwalten. Mein Datentyp verwaltet aber große Datenmengen. Mein Datentyp hat eine veränderliche Größe! Beispiele: Bilder, Videos, Webseiten Wie speichere ich solche Daten persistent und effizient? Folie 8

9 Flob Bisher: Ich kann bereits einfache Daten fester Größe verwalten. Mein Datentyp verwaltet aber große Datenmengen. Mein Datentyp hat eine veränderliche Größe! Beispiele: Bilder, Videos, Webseiten Wie speichere ich solche Daten persistent und effizient? Folie 9

10 Flob Bisher: Ich kann bereits einfache Daten fester Größe verwalten. Mein Datentyp verwaltet aber große Datenmengen. Mein Datentyp hat eine veränderliche Größe! Beispiele: Bilder, Videos, Webseiten Wie speichere ich solche Daten persistent und effizient? Flob = Faked Large OBject Folie 10

11 Flob Folie 11

12 Flob Datenstruktur zur Speicherung beliebiger Datenmengen Folie 12

13 Flob Datenstruktur zur Speicherung beliebiger Datenmengen Aber: Das Objekt muss insgesamt im Hauptspeicher darstellbar sein! (Zumindest für einige Operationen) Folie 13

14 Flob Datenstruktur zur Speicherung beliebiger Datenmengen Eingebauter Persistenzmechanismus Folie 14

15 Flob Datenstruktur zur Speicherung beliebiger Datenmengen Eingebauter Persistenzmechanismus Verwaltet unstrukturierte Speicherblöcke (wie malloc) Folie 15

16 Flob Datenstruktur zur Speicherung beliebiger Datenmengen Eingebauter Persistenzmechanismus Verwaltet unstrukturierte Speicherblöcke (wie malloc) Zugriff mittels spezieller Funktionen und eines offsets Folie 16

17 Flob Datenstruktur zur Speicherung beliebiger Datenmengen Eingebauter Persistenzmechanismus Verwaltet unstrukturierte Speicherblöcke (wie malloc) Zugriff mittels spezieller Funktionen und eines offsets Folie 17

18 Flob Datenstruktur zur Speicherung beliebiger Datenmengen Eingebauter Persistenzmechanismus Verwaltet unstrukturierte Speicherblöcke (wie malloc) Zugriff mittels spezieller Funktionen und eines offsets class Flob { Flob( const SmiSize size ); size_t Size() const; bool write(const char* buffer, const SmiSize length, const SmiSize offset); bool read(char* buffer, const SmiSize length, const SmiSize offset); void resize( size_t size ); void clean(); void destroy(); } Folie 18

19 Flob Achtung! Datenstruktur zur Speicherung beliebiger Datenmengen Eingebauter Flobs werden Persistenzmechanismus direkt en bloc auf die Platte geschrieben. Flobs Verwaltet werden unstrukturierte an irgendeine Stelle Speicherblöcke in den Speicher (wie eingelesen. malloc) Zugriff Verwenden mittels Sie spezieller keine Zeiger Funktionen in Flobs, und eines sondern offsets offsets! class Flob { Flob( const SmiSize size ); size_t Size() const; bool write(const char* buffer, const SmiSize length, const SmiSize offset); bool read(char* buffer, const SmiSize length, const SmiSize offset); void resize( size_t size ); void clean(); void destroy(); } Folie 19

20 Flob Problem gelöst! Folie 20

21 Flob Problem gelöst? Folie 21

22 Flob Problem gelöst? Flobs sind mir zu unstrukturiert. Folie 22

23 Flob Problem gelöst? Flobs sind mir zu unstrukturiert. Ich bräuchte aber eher etwas, um strukturierte Daten persistent speichern zu können. Folie 23

24 Flob Problem gelöst? Flobs sind mir zu unstrukturiert. Ich bräuchte aber eher etwas, um strukturierte Daten persistent speichern zu können. Ich will variabel viele Einträge fester Größe verwalten. Folie 24

25 Flob Problem gelöst? Flobs sind mir zu unstrukturiert. Ich bräuchte aber eher etwas, um strukturierte Daten persistent speichern zu können. Ich will variabel viele Einträge fester Größe verwalten. Eigentlich hätte ich gerne ein dynamisches array. Folie 25

26 Flob Problem gelöst? Flobs sind mir zu unstrukturiert. Ich bräuchte aber eher etwas, um strukturierte Daten persistent speichern zu können. Ich will variabel viele Einträge fester Größe verwalten. Eigentlich hätte ich gerne ein dynamisches array.??? Folie 26

27 DbArray Problem gelöst? Flobs sind mir zu unstrukturiert. Ich bräuchte aber eher etwas, um strukturierte Daten persistent speichern zu können. Ich will variabel viele Einträge fester Größe verwalten. Eigentlich hätte ich gerne ein dynamisches array. Folie 27

28 DbArray Container für kompakte Datentypen fester Länge. Folie 28

29 DbArray Container für kompakte Datentypen fester Länge. Elementtyp muss einfach sein: Keine echten Zeiger! Keine Flobs oder DbArrays als Elemente! Folie 29

30 DbArray Container für kompakte Datentypen fester Länge. Elementtyp muss einfach sein: Keine echten Zeiger! Keine Flobs oder DbArrays als Elemente! DbArray ist eine Template-Klasse, die von Flob abgeleitet ist. Ein- und Auslagerung von Datenteilen muss daher (wie beim Flob) nicht selbst programmiert werden! Folie 30

31 DbArray Container für kompakte Datentypen fester Länge. Elementtyp muss einfach sein: Keine echten Zeiger! Keine Flobs oder DbArrays als Elemente! DbArray ist eine Template-Klasse, die von Flob abgeleitet ist. Ein- und Auslagerung von Datenteilen muss daher (wie beim Flob) nicht selbst programmiert werden! Wird ein DbArray sortiert abgespeichert, so ist eine effiziente externe binäre Suche möglich. Folie 31

32 DbArray template<class DbArrayElement> class DbArray : public Flob { DbArray( const int n ); int Size() const; void resize( const int newsize ); void clean(); void Put( const int index, const DbArrayElement& elem ); void Append( const DbArrayElement& elem ); void Get( const int index, DbArrayElement &elem ) const; void TrimToSize(); void Sort( int (*cmp)( const void *a, const void *b) ); bool Find( const void *key, int (*cmp)( const void *a, const void *b), int& result ) const void Destroy(); [...] } Folie 32

33 Bisher: Einfache Datentypen. Was ging damit? Folie 33

34 Bisher: Einfache Datentypen. Was ging damit? Erzeugen von Objekten Anwenden von Operatoren Speichern in Datenbank, Löschen aus Datenbank Umwandlung von/zu Nested List Folie 34

35 Bisher: Einfache Datentypen. Was ging damit? Erzeugen von Objekten Anwenden von Operatoren Speichern in Datenbank, Löschen aus Datenbank Umwandlung von/zu Nested List Was fehlt bislang? Folie 35

36 Bisher: Einfache Datentypen. Was ging damit? Erzeugen von Objekten Anwenden von Operatoren Speichern in Datenbank, Löschen aus Datenbank Umwandlung von/zu Nested List Was fehlt bislang? Verwendung als Attribut in Relationen Folie 36

37 Attributdatentypen Bisher: Einfache Datentypen. Was ging damit? Erzeugen von Objekten Anwenden von Operatoren Speichern in Datenbank, Löschen aus Datenbank Umwandlung von/zu Nested List Was fehlt bislang? Verwendung als Attribut in Relationen Folie 37

38 Attributdatentypen Können in Relationen als Attribute verwendet werden. Attributdatentyp: Oberklasse Attribute, Kind DATA. Erfordernisse: Folie 38

39 Attributdatentypen Können in Relationen als Attribute verwendet werden. Attributdatentyp: Oberklasse Attribute, Kind DATA. Erfordernisse: Sicherstellen einer Mindest-Funktionalität (Compare, IsDefined, SetDefined, Adjacent, Print,...) Folie 39

40 Attributdatentypen Können in Relationen als Attribute verwendet werden. Attributdatentyp: Oberklasse Attribute, Kind DATA. Erfordernisse: Sicherstellen einer Mindest-Funktionalität (Compare, IsDefined, SetDefined, Adjacent, Print,...) Support für den automatischen Persistenzmechanismus von Tupeln (C++ kennt keine Serialisierung!) (NumOfFLOBs, GetFLOB, SizeOf, Open, Save) Folie 40

41 Attributdatentypen Können in Relationen als Attribute verwendet werden. Attributdatentyp: Oberklasse Attribute, Kind DATA. Erfordernisse: Sicherstellen einer Mindest-Funktionalität (Compare, IsDefined, SetDefined, Adjacent, Print,...) Support für den automatischen Persistenzmechanismus von Tupeln (C++ kennt keine Serialisierung!) (NumOfFLOBs, GetFLOB, SizeOf, Open, Save) Verwenden keine dynamischen Objekte/Zeiger! Folie 41

42 Attributdatentypen Können in Relationen als Attribute verwendet werden. Attributdatentyp: Oberklasse Attribute, Kind DATA. Erfordernisse: Beispiel Sicherstellen einer Mindest-Funktionalität (Compare, IsDefined, SetDefined, Adjacent, Print,...) Der Support Datentyp für Polygon den automatischen aus der Polygon Persistenzmechanismus Algebra stellt einen von Datentyp Tupeln dar, (C++ derkennt keine Serialisierung!) (NumOfFLOBs, als Attribut in Relationen verwendet werden kann und GetFLOB, SizeOf, Open, Save) den Speicherverwaltungstyp DbArray verwendet: Verwenden keine dynamischen Objekte/Zeiger Folie 42

43 Attributdatentyp: Polygon class Polygon : public Attribute { public: Polygon() {} Polygon( const int n, const int *X = 0, const int *Y = 0 ); ~Polygon(); int NumOfFLOBs() const; Flob *GetFLOB(const int i); int Compare(const Attribute*) const; [...] private: DbArray<Vertex> vertices; PolygonState state; }; Folie 43

44 Attributdatentyp: Polygon class Polygon : public Attribute { public: Polygon() {} Polygon( const int n, const int *X = 0, const int *Y = 0 ); ~Polygon(); int NumOfFLOBs() const; Flob *GetFLOB(const int i); int Compare(const Attribute*) const; [...] private: DbArray<Vertex> vertices; PolygonState state; }; Klasse Polygon wird von Klasse Attribute abgeleitet Folie 44

45 Attributdatentyp: Polygon class Polygon : public Attribute { public: Polygon() {} Polygon( const int n, const Wichtig: int *X = 0, Bei Mehrfachvererbung darf keine const Klasse int mehrfach *Y = 0 von ); ~Polygon(); derselben Klasse (z.b. Attribute) erben. Sonst: Probleme bei der Typkonvertierung (cast). int NumOfFLOBs() const; Flob *GetFLOB(const int i); int Compare(const Attribute*) const; [...] private: DbArray<Vertex> vertices; PolygonState state; }; Klasse Polygon wird von Klasse Attribute abgeleitet Folie 45

46 Attributdatentyp: Polygon class Polygon : public Attribute { public: Polygon() {} Polygon( const int n, const int *X = 0, const int *Y = 0 ); ~Polygon(); int NumOfFLOBs() const; Flob *GetFLOB(const int i); int Compare(const Attribute*) const; [...] private: DbArray<Vertex> vertices; PolygonState state; }; Folie 46

47 Attributdatentyp: Polygon class Polygon : public Attribute { public: Polygon() {} Polygon( const int n, const int *X = 0, const int *Y = 0 ); ~Polygon(); int NumOfFLOBs() const; Flob *GetFLOB(const int i); int Compare(const Attribute*) const; [...] private: DbArray<Vertex> vertices; PolygonState state; }; Standard-Konstruktor Wird vom Persistenzmechanismus verwendet. Darf das Objekt nicht verändern. Folie 47

48 Attributdatentyp: Polygon class Polygon : public Attribute { public: Polygon() {} Polygon( const int n, Wichtig: const int *X = 0, Vermeiden Sie die Nutzung des Standard-Konstruktors. const int *Y = 0 ); ~Polygon(); Diese führt häufig wegen uninitialisierter Werte zu Fehlern. Initialisieren Sie Objekte mittels anderer Konstruktoren. int NumOfFLOBs() const; Flob *GetFLOB(const int i); int Compare(const Attribute*) const; [...] private: DbArray<Vertex> vertices; PolygonState state; }; Standard-Konstruktor Wird vom Persistenzmechanismus verwendet. Darf das Objekt nicht verändern. Folie 48

49 Attributdatentyp: Polygon class Polygon : public Attribute { public: Polygon() {} Polygon( const int n, const int *X = 0, const int *Y = 0 ); ~Polygon(); int NumOfFLOBs() const; Flob *GetFLOB(const int i); int Compare(const Attribute*) const; [...] private: DbArray<Vertex> vertices; PolygonState state; }; Folie 49

50 Attributdatentyp: Polygon class Polygon : public Attribute { public: Polygon() {} Polygon( const int n, const int *X = 0, const int *Y = 0 ); ~Polygon(); int NumOfFLOBs() const; Flob *GetFLOB(const int i); int Compare(const Attribute*) const; [...] private: DbArray<Vertex> vertices; PolygonState state; }; Nicht-Standard-Konstruktor Mindestens einer muss implementiert werden (z.b. mit einem bool Parameter zum Setzen von defined). Folie 50

51 Attributdatentyp: Polygon Wichtig: In der Implentierung von Nicht-Standard-Konstruktoren muss zuerst ein Nicht-Standardkonstruktor der direkten Oberklasse als Initialisierer class Polygon : public Attribute { public: aufgerufen Polygon() werden. {} Beispiel: Polygon( const int n, const int *X = 0, Polygon( const int n, const const int *X, int const *Y = 0 int ); *Y) ~Polygon(); : Attribute(true) {... } int NumOfFLOBs() const; Flob *GetFLOB(const int i); int Compare(const Attribute*) const; [...] private: DbArray<Vertex> vertices; PolygonState state; }; Nicht-Standard-Konstruktor Mindestens einer muss implementiert werden (z.b. mit einem bool Parameter zum Setzen von defined). Folie 51

52 Attributdatentyp: Polygon class Polygon : public Attribute { public: Polygon() {} Polygon( const int n, const int *X = 0, const int *Y = 0 ); ~Polygon(); }; int NumOfFLOBs() const; Flob *GetFLOB(const int i); int Compare(const Attribute*) const; [...] private: DbArray<Vertex> vertices; PolygonState state; Einziges Flob Objekt in Polygon Folie 52

53 Attributdatentyp: Polygon class Polygon : public Attribute { public: Polygon() {} Polygon( const int n, const int *X = 0, const int *Y = 0 ); ~Polygon(); int NumOfFLOBs() const; Flob *GetFLOB(const int i); int Compare(const Attribute*) const; [...] private: DbArray<Vertex> vertices; PolygonState state; }; Folie 53

54 Attributdatentyp: Polygon class Polygon : public Attribute { public: Polygon() {} Polygon( const int n, const int *X = 0, const int *Y = 0 ); ~Polygon(); int NumOfFLOBs() const; Flob *GetFLOB(const int i); int Compare(const Attribute*) const; [...] private: DbArray<Vertex> vertices; PolygonState state; }; Folie 54

55 Attributdatentyp: Polygon int class Polygon : public Attribute { public: Polygon() {} Anzahl der Flobs zurückgeben: Polygon::NumOfFLOBs() const { return 1; } Polygon( const int n, const int *X = 0, const int *Y = 0 ); ~Polygon(); int NumOfFLOBs() const; Flob *GetFLOB(const int i); int Compare(const Attribute*) const; [...] private: DbArray<Vertex> vertices; PolygonState state; }; Folie 55

56 Attributdatentyp: Polygon class Polygon : public Attribute { public: Polygon() {} Polygon( const int n, const int *X = 0, const int *Y = 0 ); ~Polygon(); int NumOfFLOBs() const; Flob *GetFLOB(const int i); int Compare(const Attribute*) const; [...] private: DbArray<Vertex> vertices; PolygonState state; }; Folie 56

57 Attributdatentyp: Polygon Den i-ten Flob zurückgeben: Flob *Polygon::GetFLOB(const int i) class Polygon : public Attribute { { public: assert( i >= 0 && Polygon() {} i < NumOfFLOBs() ); Polygon( const int return n, const &vertices; int *X = 0, } const int *Y = 0 ); ~Polygon(); int NumOfFLOBs() const; Flob *GetFLOB(const int i); int Compare(const Attribute*) const; [...] private: DbArray<Vertex> vertices; PolygonState state; }; Folie 57

58 Attributdatentyp: Polygon class Polygon : public Attribute { public: Polygon() {} Polygon( const int n, const int *X = 0, const int *Y = 0 ); ~Polygon(); int NumOfFLOBs() const; Flob *GetFLOB(const int i); int Compare(const Attribute*) const; [...] private: DbArray<Vertex> vertices; PolygonState state; }; Folie 58

59 Attributdatentyp: Polygon int Compare(const Attribute* rhs) const; Falls beide Objekte definiert: class Polygon : public Attribute { *this < *rhs 1 public: *this = *rhs 0 Polygon() {} *this > *rhs 1 Polygon( Sonst: const int n, const int *X = 0, const int *Y = 0 ); ~Polygon(); undef x def 1: *this < *rhs undef x undef 0: *this = *rhs def x undef 1: *this > *rhs int NumOfFLOBs() const; Flob *GetFLOB(const int i); int Compare(const Attribute*) const; [...] private: DbArray<Vertex> vertices; PolygonState state; }; Folie 59

60 Attributdatentyp: Polygon class Polygon : public Attribute { public: Polygon() {} Polygon( const int n, const int *X = 0, const int *Y = 0 ); ~Polygon(); int NumOfFLOBs() const; Flob *GetFLOB(const int i); int Compare(const Attribute*) const; [...] private: DbArray<Vertex> vertices; PolygonState state; }; Folie 60

61 Attributdatentyp: Polygon class Polygon : public Attribute { public: Weitere zu überschreibende Funktionen: bool Adjacent(const Attribute*) const; Polygon *Clone() const; size_t Sizeof() const; void CopyFrom(const Attribute* right); size_t HashValue() const; Polygon() {} Polygon( const int n, const int *X = 0, Ererbte Funktionen: const int *Y = 0 ); ~Polygon(); bool IsDefined() const; NICHT überschreiben! void SetDefined( bool defined ); Bei Überschreiben Attribute::SetDefined(...) int NumOfFLOBs() const; Flob *GetFLOB(const aufrufen! int i); int Compare(const Attribute*) const; [...] private: DbArray<Vertex> vertices; PolygonState state; }; Folie 61

62 Attributdatentyp: Polygon class Polygon : public Attribute { public: Polygon() {} Polygon( const int n, const int *X = 0, Wichtig: const int *Y = 0 ); ~Polygon(); Überschreibt man diese Funktionen nicht, z.b. weil man sich im Namen mit Groß- oder Kleinschreibung vertan hat, führt dies mitunter zu Speicherfehlern! int NumOfFLOBs() const; Flob *GetFLOB(const int i); int Compare(const Attribute*) const; [...] private: DbArray<Vertex> vertices; PolygonState state; }; Folie 62

63 Noch Fragen?! Folie 63

Relationen-Algebra und Persistenz Teil I

Relationen-Algebra und Persistenz Teil I Relationen-Algebra und Persistenz Teil I Implementierungskonzepte und Anforderungen an Attributdatentypen LG Datenbanksysteme für neue Anwendungen Inhalt FLOBs DBArrays Attributsdatentypen Folie 2 Bisher:

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

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

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

Mehr

C/C++-Programmierung

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

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

Die C++ Standard Template Library Andreas Obrist

Die C++ Standard Template Library Andreas Obrist Die C++ Standard Template Library 24. 06. 2004 Andreas Obrist Was dürft Ihr erwarten? 1. Teil Das Wichtigste in Kürze über die Standard Template Library 2. Teil Praktische Beispiele Was dürft Ihr nicht

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

Secondo: Implementierung einer Algebra

Secondo: Implementierung einer Algebra Algebraimplementierung Secondo: Implementierung einer Algebra FernUniversita t in Hagen LG Datenbanksysteme fu r neue Anwendungen 05.10.2012 1 2 3 4 Eine neue Algebra für Rechtecke und Punkte Datentypen:

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

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

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

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Teil 8: Dynamische Speicherverwaltung. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden

Teil 8: Dynamische Speicherverwaltung. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden Teil 8: Dynamische Speicherverwaltung Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden Inhaltsverzeichnis 8 Dynamische Speicherverwaltung... 3 8.1

Mehr

U8 7. Übung U8 7. Übung

U8 7. Übung U8 7. Übung U8 7. Übung U8 7. Übung Dynamische Speicherverwaltung Generisches Sortieren Aufgabe 7 U8.1 U8-1 Dynamische Speicherverwaltung U8-1 Dynamische Speicherverwaltung Erzeugen von Feldern der Länge n: mittels:

Mehr

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

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

Programmierkurs C++ Templates & STL (1/2)

Programmierkurs C++ Templates & STL (1/2) Programmierkurs C++ Templates & STL (1/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer #2 Templates Die wichtigsten objekt-orientierten

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 2 22.03.2017 Was bisher geschah... Klassen und Objekte Attribute und Methoden Klasse Bruch

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

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Anonyme Klassen

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:

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

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

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

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

Prinzipien der objektorientierten Programmierung (OOP)

Prinzipien der objektorientierten Programmierung (OOP) Die Ziele der OOP sind: - bessere Warbarkeit - Wiederverwendbarkeit 1.) Datenkapselung Prinzipien der objektorientierten Programmierung (OOP) Komplexe Datenstrukturen (wie zb ein Stack) werden vom Anwendungsprogramm

Mehr

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

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

Mehr

C++ - 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++ Teil 10. Sven Groß. 17. Dez IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Dez / 14

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

Mehr

Begriffe 1 (Wiederholung)

Begriffe 1 (Wiederholung) Begriffe 1 (Wiederholung) Klasse Eine Klasse ist der Bauplan für ein oder mehrere Objekte. In einer Klasse werden Dienste (Methoden) zur Verfügung gestellt. Klassennamen beginnen mit einem Großbuchstaben.

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

Objektorientierte Programmierung mit C++ Vector und List

Objektorientierte Programmierung mit C++ Vector und List Vector und List Ziel, Inhalt Wir lernen die Klassen vector und list aus der Standard-C++ Library kennen und anwenden. In einer Übung wenden wir diese Klassen an um einen Medienshop (CD s und Bücher) zu

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

Dynamische Speicherverwaltung

Dynamische Speicherverwaltung Dynamische Speicherverwaltung 1/ 23 Dynamische Speicherverwaltung Tim Dobert 17.05.2013 Dynamische Speicherverwaltung 2/ 23 Gliederung 1 Allgemeines zur Speichernutzung 2 Ziele und Nutzen 3 Anwendung in

Mehr

19. Vererbung und Polymorphie

19. Vererbung und Polymorphie 667 19. Vererbung und Polymorphie Ausdrucksbäume, Vererbung, Code-Wiederverwendung, virtuelle Funktionen, Polymorphie, Konzepte des objektorientierten Programmierens (Ausdrucks-)Bäume -(3-(4-5))*(3+4*5)/6

Mehr

12.3 Ein Datenmodell für Listen

12.3 Ein Datenmodell für Listen Zweiter Versuch: Wir modellieren ein Element der Liste zunächst als eigenständiges Objekt. Dieses Objekt hält das gespeicherte Element. Andererseits hält das Element- Objekt einen Verweis auf das nächste

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

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

Vererbung und Polymorphie

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

Mehr

Grundlagen der Informatik

Grundlagen der Informatik Grundlagen der Informatik Polymorphie, Abstrakte Klassen, Mehrfachvererbung Prof. Dr.-Ing. Thomas Wiedemann Prof. Dr. rer.nat. Ralph Großmann Fachgebiet Informatik / Mathematik Überblick zum Inhalt Klassen-3

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

Java I Vorlesung 6 Referenz-Datentypen

Java I Vorlesung 6 Referenz-Datentypen Java I Vorlesung 6 Referenz-Datentypen 7.6.2004 Referenzen this, super und null Typkonvertierung von Referenztypen Finale Methoden und Klassen Datentypen in Java In Java gibt es zwei Arten von Datentypen:

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

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

1 Abstrakte Klassen, finale Klassen und Interfaces

1 Abstrakte Klassen, finale Klassen und Interfaces 1 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

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für

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

6. Globalübung (zu Übungsblatt 8)

6. Globalübung (zu Übungsblatt 8) 6. Globalübung (zu Übungsblatt 8) Inhalt: Klassenhierarchien Verdecken von Attributen Überschreiben von Methoden Codeanalyse Analyse von JAVA-Programmen Semestralklausur Klausurtermin: Mittwoch 11.01.2006

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

1 Hashing und die Klasse String

1 Hashing und die Klasse String 1 Hashing und die Klasse String Die Klasse String stellt Wörter von (Unicode-) Zeichen dar. Objekte dieser Klasse sind stets konstant, d.h. können nicht verändert werden (immutable). Die Zeichenkette ist

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1 Kapitel 13 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1 Kapitel 12 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch

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

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

C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14

C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14 C++ Teil 6 Sven Groß 27. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 6 27. Mai 2016 1 / 14 Themen der letzten Vorlesung Musterlösung A2 Wdh.: Zeiger und Felder Kopieren von Feldern Dynamische Speicherverwaltung

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

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

55 Ring-Queue. size. push. clear. get. Reinhard Schiedermeier / Klaus Köhler, Das Java-Praktikum, dpunkt.verlag, ISBN

55 Ring-Queue. size. push. clear. get. Reinhard Schiedermeier / Klaus Köhler, Das Java-Praktikum, dpunkt.verlag, ISBN D3kjd3Di38lk323nnm 394 55 Ring-Queue In dieser Aufgabe wird eine generische Containerklasse definiert. Ihre Kapazität wird beim Erzeugen festgelegt, im Gegensatz zu den Klassen des Collection- Frameworks.

Mehr

Exkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

Exkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Exkurs: ANONYME KLASSEN Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Anonyme Klassen Eigenschaften 1 Häufigste Anwendung lokaler Klassen: anonyme Definition. Klasse erhält keinen eigenen

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

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 11: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes

Mehr

Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1

Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1 Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1 1. Das Objekt Bruch mit einem Standardkonstruktor (initialisieren mit 0), einem allgemeinen Konstruktor (Zähler und Nenner können beliebig vorgegeben

Mehr

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe: Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -

Mehr

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

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

Mehr

SECONDO: Implementierung einer Algebra

SECONDO: Implementierung einer Algebra SECONDO: Implementierung einer Algebra FernUniversität in Hagen LG Datenbanksysteme f.neue Anwendungen 09.10.2009 Inhalt 1 2 3 4 5 6 7 Einführung einer Algebra für Punkte und Rechtecke xpoint (x, y) mit

Mehr

Java I Vorlesung Collections

Java I Vorlesung Collections Java I Vorlesung 5 Collections 24.5.2004 Abstrakte Klassen und Interfaces Arrays Java Collections Framework Abstrakte Klassen: Motivation Häufig will man eine Klasse schreiben, die nur als Basisklasse

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

::Zweck. Sicherstellung, dass nur eine Instanz einer bestimmten Klasse existiert

::Zweck. Sicherstellung, dass nur eine Instanz einer bestimmten Klasse existiert ::Singleton ::Index Zweck & Motivation Anwendbarkeit Struktur Teilnehmer & Interaktionen Konsequenzen Implementierung Verwendung Verwandte Muster Erzeugungsmuster Glossar ::Zweck Sicherstellung, dass nur

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

Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2

Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2 Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2 Neben vector ist list die zweite wichtige Containerklasse. Um unsere Kenntnisse von Containerklassen zu erweitern,

Mehr

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 - ! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck

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

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

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

C++ Teil 7. Sven Groß. 3. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 3. Juni / 16

C++ Teil 7. Sven Groß. 3. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 3. Juni / 16 C++ Teil 7 Sven Groß 3. Juni 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 3. Juni 2016 1 / 16 Themen der letzten Vorlesung dynamische Speicherverwaltung (Wdh.) Cast bei Zeigern STL-Vektoren + Live Programming

Mehr

Die Klasse java.lang.object. Thorsten Treffer

Die Klasse java.lang.object. Thorsten Treffer Die Klasse java.lang.object Thorsten Treffer 6. Dezember 2003 1 java.lang.object Die Klassenhierarchie von Java kann als Baum aufgezeichnet werden, dessen Wurzel die Klasse Object ist. Mit anderen Worten:

Mehr

Einführung in C# Teil 3. Matthias Nübling

Einführung in C# Teil 3. Matthias Nübling Einführung in C# Teil 3 Matthias Nübling Vorausgesetzte Grundkenntnisse Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,

Mehr

Einführung in die Programmierung für NF MI. Übung 07

Einführung in die Programmierung für NF MI. Übung 07 Einführung in die Programmierung für NF MI Übung 07 Inhalt Wiederholung Kommentare Wiederholung Arrays Einführung in Objekte Einführung in die Programmierung für NF Übung 07 2 Wiederholung Kommentare Kommentare

Mehr

HSR Rapperswil 2001 Markus Rigling. Programmieren: Templates Auflage

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

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Kürzeste Wege, Heaps, Hashing Heute: Kürzeste Wege: Dijkstra Heaps: Binäre Min-Heaps Hashing:

Mehr

Objektorientierte Programmierung mit C++ SS 2007

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

Mehr

Datenkapselung: public / private

Datenkapselung: public / private 612 18. Klassen Klassen, Memberfunktionen, Konstruktoren, Stapel, verkettete Liste, dynamischer Speicher, Copy-Konstruktor, Zuweisungsoperator, Destruktor, Konzept Dynamischer Datentyp Datenkapselung:

Mehr

Einführung in C++ Operatoren überladen (Klassen)

Einführung in C++ Operatoren überladen (Klassen) Einführung in C++ Operatoren überladen (Klassen) Operatoren überladen Die Überladung von Operatoren ermöglicht es, vorhandene Operatoren (+,-,...) auch auf Objekte von Klassen anzuwenden. Die meisten der

Mehr

Vorausgesetzte Grundkenntnisse. Inhalt. Klassenhierarchie und Vererbung. Vererbung. Klassenhierarchie und Vererbung. Einführung in C# Teil 3

Vorausgesetzte Grundkenntnisse. Inhalt. Klassenhierarchie und Vererbung. Vererbung. Klassenhierarchie und Vererbung. Einführung in C# Teil 3 Vorausgesetzte Grundkenntnisse Einführung in C# Teil 3 Matthias Nübling Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,

Mehr

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions Kapitel 10 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Exceptions Behandlung von Exceptions Der finally-block catch or throw WS 07/08 1/ 23 2/ 23 Grundlagen von Exceptions

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

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz Kapitel 13 Abstrakte Methoden und Interfaces 13. Abstrakte Klassen und Interfaces 1. Abstrakte Klassen 2. Interfaces und Mehrfachvererbung Folie 12.2 Abstrakte Methoden und Klassen Manchmal macht es überhaupt

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

Java Einführung Vererbung und Polymorphie. Kapitel 13

Java Einführung Vererbung und Polymorphie. Kapitel 13 Java Einführung Vererbung und Polymorphie Kapitel 13 Inhalt Klassifikation (UML) Implementierung von Vererbungshierarchien Überschreiben von Methoden Polymorphismus: Up-Casting und Dynamisches Binden Schlüsselwort

Mehr

Container für eine Folge gleichartiger Daten. Dynamische Datentypen. Probleme mit Feldern...aber nicht mit std::vector. ... und auch std::vector

Container für eine Folge gleichartiger Daten. Dynamische Datentypen. Probleme mit Feldern...aber nicht mit std::vector. ... und auch std::vector // Container für eine Folge gleichartiger Daten Dynamische Datentyen Listen; Funktionalität, Coy- Konstruktor, Zuweisungsoerator,, Konzet Dynamischer Datenty n Bisher: Felder (T[],std::array, std::vector)

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

Objektorientierte Programmierung. Kapitel 14: Interfaces

Objektorientierte Programmierung. Kapitel 14: Interfaces 14. Interfaces 1/26 Objektorientierte Programmierung Kapitel 14: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2013/14 http://www.informatik.uni-halle.de/ brass/oop13/

Mehr

Programmieren - C++ Templates

Programmieren - C++ Templates Programmieren - C++ Templates Reiner Nitsch r.nitsch@fbi.h-da.de Was sind Templates? C++ Templates ermöglichen generische Programmierung. Das ist Programmierung unabhängig vom speziellen Objekt-Typ Templates

Mehr

Dynamische Speicherverwaltung

Dynamische Speicherverwaltung Dynamische Speicherverwaltung INE2 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? Bisjetzt Beispiel Ranglistenprogramm für Sportveranstaltungen Besser - genaue Anzahl Teilnehmer

Mehr

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

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

Mehr