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. Folie 5 Mein Datentyp verwaltet aber große Datenmengen.

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

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? Folie 10 FLOB = Faked Large OBject

11 FLOB Folie 11

12 FLOB Folie 12 Datenstruktur zur Speicherung beliebiger Datenmengen

13 FLOB Folie 13 Datenstruktur zur Speicherung beliebiger Datenmengen Aber: Das Objekt muss insgesamt im Hauptspeicher darstellbar sein!

14 FLOB Folie 14 Datenstruktur zur Speicherung beliebiger Datenmengen Eingebauter Persistenzmechanismus

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

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

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

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( size_t size ); size_t Size() const; void Put( size_t offset, size_t length, const void *source ); void Get( size_t offset, const char **target, const bool paged = false ) const; void Resize( size_t size ); void Clean(); void Destroy(); } Folie 18

19 FLOB Datenstruktur zur Speicherung beliebiger Datenmengen Achtung! Eingebauter Persistenzmechanismus FLOBs werden direkt en bloc auf die Platte geschrieben. Verwaltet Speicherblöcke (wie Flobs werden unstrukturierte an irgendeine Stelle in den Speicher eingelesen. malloc) Verwenden Sie keine Zeiger in FLOBs, sondern offsets! Zugriff mittels spezieller Funktionen und eines offsets class FLOB { FLOB( size_t size ); size_t Size() const; void Put( size_t offset, size_t length, const void *source ); void Get( size_t offset, const char **target, const bool paged = false ) const; 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( int n ); int Size() const; void Resize( const int newsize ); void Clear(); void Put( int index, const DBArrayElement& elem ); void Append( const DBArrayElement& elem ); void Get( int index, DBArrayElement const*& 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,...) DerSupport Datentyp aus der Polygon Algebra stellt fürpolygon den automatischen Persistenzmechanismus einen dar, der vondatentyp Tupeln (C++ kennt keine Serialisierung!) als Attribut in Relationen verwendet werden kann und (NumOfFLOBs, 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: Klasse Polygon DBArray<Vertex> vertices; wird von Klasse PolygonState state; Attribute abgeleitet }; Folie 44

45 Attributdatentyp: Polygon class Polygon : public Attribute { public: Polygon() {} Polygon( const int n, Wichtig: const int *X = 0, Bei Mehrfachvererbung darf keine Klasse mehrfach const int *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: Klasse Polygon DBArray<Vertex> vertices; wird von Klasse PolygonState state; 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; [...] Standard-Konstruktor private: DBArray<Vertex> vertices; Wird vom Persistenzmechanismus verwendet. PolygonState state; 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, int *Y = 0 ); Vermeiden Sie die Nutzung desconst Standard-Konstruktors. ~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; [...] Standard-Konstruktor private: DBArray<Vertex> vertices; Wird vom Persistenzmechanismus verwendet. PolygonState state; 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: Einziges DBArray<Vertex> vertices; FLOB-Objekt PolygonState state; in Polygon }; Folie 50

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

52 Attributdatentyp: Polygon Anzahl der FLOBs zurückgeben: int class Polygon : public Attribute Polygon::NumOfFLOBs() const { { public: return 1; 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 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 Den i-ten FLOB zurückgeben: FLOB *Polygon::GetFLOB(const int i) class Polygon : public Attribute { { assert( i >= 0 && public: i < NumOfFLOBs() ); Polygon() {} return &vertices; 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 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 55

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

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

58 Attributdatentyp: Polygon Weitere zu überschreibende Funktionen: class Polygon : public Attribute { bool Adjacent(const Attribute*) const; Polygon *Clone() const; public: size_t Sizeof() const; Polygon() {} Polygon( const int n, const int *X = 0, Eigentlich const int *Y bereits = 0 );ererbte Funktionen: ~Polygon(); int NumOfFLOBs() const;bool IsDefined() const; FLOB *GetFLOB(const intvoid i);setdefined( bool defined int Compare(const Attribute*) const; [...] private: DBArray<Vertex> vertices; PolygonState state; ); }; Folie 58

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

60 Noch Fragen?! Folie 60

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

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

Relationen-Algebra und Persistenz Teil I

Relationen-Algebra und Persistenz Teil I Implementierungskonzepte für und Anforderungen an Attributdatentypen in SECONDO Lehrgebiet Datenbanksysteme für Neue Anwendungen Fakultät für Mathematik und Informatik FernUniversität in Hagen 10. Oktober

Mehr

Relationen-Algebra und Persistenz Teil I

Relationen-Algebra und Persistenz Teil I Implementierungskonzepte für und Anforderungen an Attributdatentypen in SECONDO Lehrgebiet Datenbanksysteme für Neue Anwendungen Fakultät für Mathematik und Informatik FernUniversität in Hagen 6. Oktober

Mehr

Attributdatentypen. Thomas Behr

Attributdatentypen. Thomas Behr Attributdatentypen Fakultät für Mathematik und Informatik Datenbanksysteme für neue Anwendungen FernUniversität in Hagen 2014 c 2014 FernUniversität in Hagen Attributdatentypen Werte können in Relationen

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

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

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

Datenkapselung: public / private

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

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

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

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

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

Mapra: C++ Teil 4. Felix Gruber. 6. Mai IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6.

Mapra: C++ Teil 4. Felix Gruber. 6. Mai IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6. Mapra: C++ Teil 4 Felix Gruber IGPM, RWTH Aachen 6. Mai 2015 Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6. Mai 2015 1 / 22 Themen vom letzten Mal Kompilieren mit Makefiles Ein-/Ausgabe über Dateien

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen 5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden

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

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Organisatorisches Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Nächste Woche VO und UE am Dienstag, den 30.10.! UE im CR IL/IT Wissensüberprüfung am Zettel 25.10.2018 IT I - VO 3 1 Organisatorisches

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

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

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

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

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1 IT I: Heute abstrakte Methoden und Klassen Interfaces Interfaces List, Set und Collection 22.11.2018 IT I - VO 7 1 Wissensüberprüfung Überschreiben von Methoden: Aufruf der Methode der Oberklasse ist oft

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

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download Organisatorisches Folien (u.a.) gibt's auf der Lva-Homepage zum Download Diesen Mi erstes Tutorium (15-17) Ab nächster Woche montags 10-12 (jeweils im Computerraum) 17.10.2017 IT I - VO 3 1 Organisatorisches

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

Rechtsbelehrung. Java und OOP Das Buch Christian Silberbauer 144

Rechtsbelehrung. Java und OOP Das Buch Christian Silberbauer   144 Rechtsbelehrung Dieser Foliensatz ist urheberrechtlich geschützt. Änderungen an den Folien sind untersagt. Ausschließlich eine nicht-kommerzielle Nutzung ist kostenfrei. Andernfalls wird eine Gebühr fällig.

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

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

1.2 Attribute und Methoden Aufbau einer Java-Klasse: Aufbau einer Java-Klasse: public class Quadrat { int groesse; int xposition; String farbe; boolean istsichtbar; public void sichtbarmachen() { istsichtbar = true; public void horizontalbewegen(int distance){

Mehr

Secondo: Implementierung einer Algebra

Secondo: Implementierung einer Algebra Secondo: einer FernUniversita t in Hagen LG Datenbanksysteme fu r neue Anwendungen 08.10.2010 1 2 3 4 Neue Datentypen und für Secondo Datentypen: Punkt Rechteck : inside Liegt Punkt in Rechteck? Liegt

Mehr

Ich liebe Java && Ich liebe C# Rolf Borst

Ich liebe Java && Ich liebe C# Rolf Borst Ich liebe Java && Ich liebe C# Rolf Borst Java oder C#? Einführung public class Einfuehrung { private int gesamtzahl = 0; /* Ermittelt die Anzahl der geraden und durch drei teilbaren Zahlen */ public String

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

Abschnitt 10: Datenstrukturen

Abschnitt 10: Datenstrukturen Abschnitt 10: Datenstrukturen 10. Datenstrukturen 10.1Einleitung 10.2 Peer Kröger (LMU München) Einführung in die Programmierung WS 16/17 829 / 867 Einleitung Überblick 10. Datenstrukturen 10.1Einleitung

Mehr

7. Vererbung und Polymorphie

7. Vererbung und Polymorphie 210 7. 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

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

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

Objektorientierung. Marc Satkowski 20. November C# Kurs

Objektorientierung. Marc Satkowski 20. November C# Kurs Objektorientierung Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Weiterführende Verzweigungen Tertiäre-Verzweigung switch case 2. Schleifen Zählschleife (for) break & continue 3. Objektorientierung

Mehr

Informatik - Übungsstunde

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

Mehr

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

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

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

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

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

Mehr

IT I: Heute. Klasse Object. equals, hashcode, tostring. HashSet IT I - VO 6 1

IT I: Heute. Klasse Object. equals, hashcode, tostring. HashSet IT I - VO 6 1 IT I: Heute Klasse Object equals, hashcode, tostring HashSet 13.11.2018 IT I - VO 6 1 Organisatorisches Wissensüberprüfung gleich im Anschluss an die VO UE heute schon früher (ab 11:45) heute beide UE-Gruppen

Mehr

Klasse Label. class Label { Code code; List<Integer> fixuplist; // code positions to patch int adr; // address of label in code

Klasse Label. class Label { Code code; List<Integer> fixuplist; // code positions to patch int adr; // address of label in code Klasse Label class Label { Code code; List fixuplist; // code positions to patch int adr; // address of label in code // inserts offset to label at current void put (); // defines label to be

Mehr

Die Klasse string Verfasser: Christian Bartl

Die Klasse string Verfasser: Christian Bartl Die Klasse string Verfasser: Index 1. Allgemein... 3 2. Eingabe von Strings... 3 3. Ausgabe von Strings... 4 4. Länge eines Strings... 4 5. Durchlaufen aller Zeichen eines Strings... 4 6. Kopieren von

Mehr

IT I: Heute. Klasse Object. equals, hashcode, tostring. HashSet IT I - VO 6 1

IT I: Heute. Klasse Object. equals, hashcode, tostring. HashSet IT I - VO 6 1 IT I: Heute Klasse Object equals, hashcode, tostring HashSet 14.11.2017 IT I - VO 6 1 Wissensüberprüfung Wie ruft man statische Methode auf? Gegeben Klasse Fix mit statischer Methode static boolean foxi(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

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

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

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE27-Vererbung (Stand 13.04.2012) Aufgabe 1: Stellen Sie sich vor, jemand hat ein bestimmtes Spiel implementiert. Dieses besteht u. a. aus folgenden

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Java Generics und Java API (1/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Datenstrukturen In vielen Sprachen

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

Stacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012

Stacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012 , Queues & Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 19. September 2012 ODE/FHTBM, Queues & 19. September 2012 1/42 Datenstrukturen Elementare Datenstrukturen

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

Grundlagen der Informatik

Grundlagen der Informatik Grundlagen der Informatik Klausur 1. August 2008 1. Dynamische Datenstrukturen und objektorientierte Programmierung (45 Punkte) Gegeben sei eine Datenstruktur mit folgendem Aufbau struct lelem { int w;

Mehr

16. Dynamische Datenstrukturen

16. Dynamische Datenstrukturen Datenstrukturen 6. Dynamische Datenstrukturen Eine Datenstruktur organisiert Daten so in einem Computer, dass man sie effizient nutzen kann. Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange

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

Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1

Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1 Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1 Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Das C++ Typsystem simple structured integral enum

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

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

Mapra: C++ Teil 4. Felix Gruber, Michael Rom. 24. Mai 2016 IGPM. Felix Gruber, Michael Rom (IGPM) Mapra: C++ Teil 4 24.

Mapra: C++ Teil 4. Felix Gruber, Michael Rom. 24. Mai 2016 IGPM. Felix Gruber, Michael Rom (IGPM) Mapra: C++ Teil 4 24. Mapra: C++ Teil 4 Felix Gruber, Michael Rom IGPM 24. Mai 2016 Felix Gruber, Michael Rom (IGPM) Mapra: C++ Teil 4 24. Mai 2016 1 / 25 Themen vom letzten Mal Kompilieren mit Makefiles Ein-/Ausgabe über Dateien

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

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

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

Einführung Pointer. C-Kurs 2013, 2. Vorlesung. Nico Andy

Einführung Pointer. C-Kurs 2013, 2. Vorlesung. Nico Andy Einführung Pointer C-Kurs 2013, 2. Vorlesung Nico nico@freitagsrunde.org Andy andrew@freitagsrunde.org http://wiki.freitagsrunde.org 10. September 2013 This work is licensed under the Creative Commons

Mehr

C++ Bit-Access. Detlef Wilkening

C++ Bit-Access. Detlef Wilkening http://www.wilkening-online.de Seite 1 / 30 C++ Bit-Access Detlef Wilkening 10.03.2016 http://www.wilkening-online.de Seite 2 / 30 Einfache Aufgabe: Klasse, die ein Int kapselt Genau genommen hier-und-heute

Mehr

Informatik. Pointer (Dynamisch) Vorlesung. 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1

Informatik. Pointer (Dynamisch) Vorlesung. 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Informatik Vorlesung 08 Pointer (Dynamisch) 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Pointer (Zeiger) Dynam. Speicher Bisher: Speicherbedarf muss

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

Kapitel 11: Vererbung Ziele von Klassen Einführung in die Informatik für struct Naturwissenschaftler und Ingenieure

Kapitel 11: Vererbung Ziele von Klassen Einführung in die Informatik für struct Naturwissenschaftler und Ingenieure 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

188.154 Einführung in die Programmierung Vorlesungsprüfung

188.154 Einführung in die Programmierung Vorlesungsprüfung Matrikelnummer Studienkennzahl Name Vorname 188.154 Einführung in die Programmierung Vorlesungsprüfung Donnerstag, 27.1.2005, 18:15 Uhr EI 7 Arbeitszeit: 60 min - max. 50 Punkte erreichbar - Unterlagen

Mehr

1 Stückweise konstante Funktionen (ca =10 Punkte)

1 Stückweise konstante Funktionen (ca =10 Punkte) Einführung in die wissenschaftliche Programmierung Klausur Seite 1/5 Name, Vorname, Unterschrift: Matrikelnummer: 1 Stückweise konstante Funktionen (ca. 4+2+4=10 Punkte) In dieser Aufgabe soll eine Klasse

Mehr

18. Vererbung und Polymorphie

18. Vererbung und Polymorphie 617 18. 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

Funktionale Programmierung mit Haskell

Funktionale Programmierung mit Haskell Funktionale Programmierung mit Haskell Prof. Dr. Hans J. Schneider Lehrstuhl für Programmiersprachen und Programmiermethodik Friedrich-Alexander-Universität Erlangen-Nürnberg Sommersemester 2011 I. Die

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa Peter Zeller AG Softech FB Informatik TU Kaiserslautern Speichermanagement Wie viel Speicher braucht ein Programm? Wofür wird Speicher benötigt? Wie ist der Speicher

Mehr

Java Closures. Prof. Dr. Nikolaus Wulff

Java Closures. Prof. Dr. Nikolaus Wulff Java Closures Die Entwicklung von C function-pointers, C++ function-templates, Java anonymos-functions, hin zu C# delegates und Java Closures. Prof. Dr. Nikolaus Wulff Funktionszeiger Zeiger auf Funktionen

Mehr

13. Dynamische Datenstrukturen

13. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Sortierte Liste 40 40 Motivation: Stapel ( push, pop, top, empty ) Wir brauchen einen neuen

Mehr

Konstruktoren und Destruktoren Initialisierung von Objekten

Konstruktoren und Destruktoren Initialisierung von Objekten Konstruktoren und Destruktoren Initialisierung von Objekten Breymann [15] Abschn. 3.3, S. 161ff Konstruktoren Konstruktoren haben keinen Return-Wert, auch nicht void. Methoden sorgen dafür, dass sich das

Mehr

C# Programmierung. Eine Einführung in das.net Framework. C# Programmierung - Tag 2: Einstieg in die OOP

C# Programmierung. Eine Einführung in das.net Framework. C# Programmierung - Tag 2: Einstieg in die OOP C# Programmierung Eine Einführung in das.net Framework C# Programmierung - Tag 2: Einstieg in die OOP 1/27/2012 1 Di Datentypen Arrays Operatoren Parameter Überladen Heap / Stack Klassen (un)boxing Tag

Mehr

Algorithmen und Datenstrukturen in Java. 2007 Jiri Spale, Algorithmen und Datenstrukturen in Java 1

Algorithmen und Datenstrukturen in Java. 2007 Jiri Spale, Algorithmen und Datenstrukturen in Java 1 Algorithmen und Datenstrukturen in Java 2007 Jiri Spale, Algorithmen und Datenstrukturen in Java 1 Enumeratoren und Iteratoren Daten üblich gespeichert in: - Arrays, verketteten Listen, Bäumen, Geläufige

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

Grundlagen der Informatik 12. Strukturen

Grundlagen der Informatik 12. Strukturen 12. Strukturen Strukturen und deren Komponenten Strukturen im Projekt Dynamisch erstellte Strukturen Strukturen und Operatoren Strukturen und Funktionen Einfach verkettete Liste Grundlagen der Informatik

Mehr

12. Dynamische Datenstrukturen

12. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Implementationsvarianten der verketteten Liste 0 04 Motivation: Stapel ( push, pop, top, empty

Mehr

Grundlagen Polymorphismus Eigenschaften virtueller Klassen Mehrfachvererbung bei ROOT. Mehrfache Vererbung. Daniel Beneckenstein. 21.

Grundlagen Polymorphismus Eigenschaften virtueller Klassen Mehrfachvererbung bei ROOT. Mehrfache Vererbung. Daniel Beneckenstein. 21. Mehrfache Vererbung Daniel Beneckenstein 21. August 2006 Mehrfache Vererbung Ableitung einer Klasse von beliebig vielen Basisklassen: class A {... }; class B {... }; class C {... }; class D: public A,

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Welche Arten von Anweisungen gibt es? Anweisungen

Mehr

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

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

Mehr

Ü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

ALP II Dynamische Datenmengen Datenabstraktion

ALP II Dynamische Datenmengen Datenabstraktion ALP II Dynamische Datenmengen Datenabstraktion O1 O2 O3 O4 SS 2012 Prof Dr Margarita Esponda M Esponda-Argüero 1 Dynamische Datenmengen Dynamische Datenmengen können durch verschiedene Datenstrukturen

Mehr

Datenkapselung: public / private class rational { r.d = 0 int n; int d; // INV: d!= Klassen rational r; r.n = 1; // error: n is private

Datenkapselung: public / private class rational { r.d = 0 int n; int d; // INV: d!= Klassen rational r; r.n = 1; // error: n is private Datenkapselung: public / private 7. Klassen Klassen, Memberfunktionen, Konstruktoren, Stapel, verkettete Liste, dynamischer Speicher, Copy-Konstruktor, Zuweisungsoperator, Destruktor, Konzept Dynamischer

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

Datenstrukturen. Ziele

Datenstrukturen. Ziele Datenstrukturen Ziele Nutzen von Datenstrukturen Funktionsweise verstehen Eigenen Datenstrukturen bauen Vordefinierte Datenstrukturen kennen Hiflsmethoden komplexer Datenstrukten kennen Datenstrukturen

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

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

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

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 21 Einstieg in die Informatik mit Java Felder, eindimensional Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 21 1 Überblick: Was sind Felder? 2 Vereinbarung von Feldern

Mehr

Crashkurs C++ - Teil 1

Crashkurs C++ - Teil 1 Crashkurs C++ - Teil 1 Intro Speicherverwaltung Variablen, Pointer, Referenzen Felder statische & dynamische Allozierung Birgit Möller & Denis Williams AG Bioinformatik & Mustererkennung Institut für Informatik

Mehr