1. Motivation. Problemstellung: Dateninkonsistenzen (data races) aufgrund von konkurrierenden Zugriffen auf gemeinsame Daten sollen verhindert werden.

Größe: px
Ab Seite anzeigen:

Download "1. Motivation. Problemstellung: Dateninkonsistenzen (data races) aufgrund von konkurrierenden Zugriffen auf gemeinsame Daten sollen verhindert werden."

Transkript

1 1. Motivation Problemstellung: Dateninkonsistenzen (data races) aufgrund von konkurrierenden Zugriffen auf gemeinsame Daten sollen verhindert werden Ferienakademie 2009 Kurs 1: Data Coloring 1

2 Gliederung 1.Motivation 2.Definitionen 3.Nachteile von code-centric synchronisation 4.Funktionsweise von Data Coloring 5.Vorteile von Data Coloring 6.Probleme bei Data Coloring 7.Fazit 8.Fragen Ferienakademie 2009 Kurs 1: Data Coloring 2

3 2. Definitionen low-level data races Beispiel (Java): public void increment() { counter++; entspricht 3 JVM-Instruktionen: z.b.: counter = 5 Thread A LOAD R1,counter; // R1 = 5 LOAD R1,counter; ADD R1,1; STORE R1,counter; Thread B Kontextwechsel LOAD R1,counter; // R1 = 5 ADD R1,1; STORE R1,counter; // counter = 6 ADD R1,1; STORE R1,counter; // counter = 6 Problem: counter wurde insgesamt nur einmal erhöht! (low-level data race) Ferienakademie 2009 Kurs 1: Data Coloring 3

4 2. Definitionen high-level data races class Coord { double x, y; public Coord(double px, double py) { x = px; y = py; synchronized Coord getxy() { return new Coord(x, y); synchronized void setx(double px) { x = px; synchronized void sety(double py) { y = py; Coord c = new Coord(5,6); Thread A c.setx(0); c.sety(0); Kontextwechsel Thread B Coord res; res = c.getxy(); Problem: Thread B könnte das Zwischenresultat (x = 0; y = 6) lesen. (high-level data race) Ferienakademie 2009 Kurs 1: Data Coloring 4

5 2. Definitionen high-level data races Ein high-level data race kann also auftreten, wenn auf eine Menge von Variablen, auf die atomar zugegriffen werden soll, auch teilweise zugegriffen werden kann. Dadurch kann es vorkommen, dass ein Thread falsche Werte liest, obwohl sowohl die Zugriffe auf die einzelnen Variablen als auch die Zugriffe auf die Menge jeweils untereinander synchronisiert sind Ferienakademie 2009 Kurs 1: Data Coloring 5

6 2. Definitionen Begriffe code-centric synchronisation: klassische Synchronisation über Semaphore, Monitore o.ä.; Locks werden beim Zugriff auf Variablen festgelegt. data-centric synchronisation: Zusicherungen (consistency constraints) werden nicht beim Zugriff auf Variablen, sondern bei der Deklaration festgelegt. Beispiel: Data Coloring consistency constraint: Zusicherung bzgl. der Konsistenz z.b.: auf Variable x darf nur ein Thread gleichzeitig zugreifen. consistency domain: Darf auf mehrere verschiedene Variablen nicht gleichzeitig zugegriffen werden, werden diese in einer Domäne gekapselt. z.b.: auf eine der Variablen x und y darf nur ein Thread gleichzeitig zugreifen Ferienakademie 2009 Kurs 1: Data Coloring 6

7 Gliederung 1.Motivation 2.Definitionen 3.Nachteile von code-centric synchronisation 4.Funktionsweise von Data Coloring 5.Vorteile von Data Coloring 6.Probleme bei Data Coloring 7.Fazit 8.Fragen Ferienakademie 2009 Kurs 1: Data Coloring 7

8 3. Nachteile von code-centric synchronisation code-centric: (mit Semaphor) P(Semaphor s) // Ressource belegen { while(s <= 0) { s--; V(Semaphor s) // Ressource freigeben { s++; s := 1; // Initialisierung P(s); // Operationen ausführen V(s); Locks müssen direkt im Code eingebaut werden (non-local reasoning). Man hat keine Möglichkeit, bei der Deklaration einer Variable explizit festzulegen, zu welcher Domäne sie gehört. High-level data races sind sehr schwer zu vermeiden, da die verschiedenen Locks in der richtigen Reihenfolge angefordert und wieder freigegeben werden müssen Ferienakademie 2009 Kurs 1: Data Coloring 8

9 3. Nachteile von code-centric synchronisation Lösung des Coord-Beispiels mit Semaphoren: class Coord { double x, y; Semaphor s_x, s_y, s_xy; public Coord(double px, double py) { x = px; y = py; Coord getxy() { return new Coord(x, y); void setx(double px) { x = px; void sety(double py) { y = py; void method() { P(s_xy); P(s_x); P(s_y); setx(0); sety(0); // oder: getxy(); V(s_y); V(s_x); V(s_xy); Man muss hier sowohl Locks für x und y als auch ein Lock für die beiden Variablen gemeinsam anfordern, damit kein high-level data race auftreten kann. Außerdem ist auch die Reihenfolge entscheidend Ferienakademie 2009 Kurs 1: Data Coloring 9

10 Gliederung 1.Motivation 2.Definitionen 3.Nachteile von code-centric synchronisation 4.Funktionsweise von Data Coloring 5.Vorteile von Data Coloring 6.Probleme bei Data Coloring 7.Fazit 8.Fragen Ferienakademie 2009 Kurs 1: Data Coloring 10

11 4. Funktionsweise von Data Coloring Object obj color(); // dem Objekt wird eine Farbe zugewiesen. // Operationen auf obj ausführen color_step(obj); // Farbe wird wieder freigegeben. Bei der Deklaration wird einer Variablen durch den color()-aufruf eine Farbe zugewiesen. Greift man irgendwo im Code auf eine eingefärbte Variable zu, wird ein kritischer Abschnitt bzgl. der Farbe betreten. Durch den Aufruf von color_step() wird der kritische Abschnitt wieder beendet. wichtig: Damit diese Schritte entsprechend umgesetzt werden, braucht man einen speziellen Compiler Ferienakademie 2009 Kurs 1: Data Coloring 11

12 4. Funktionsweise von Data Coloring Beispiel: Es soll eine einzigartige Instanz eines Objekts erzeugt werden: Hier kann es passieren, dass zwei neue Objekte erzeugt werden, wenn vor dem Zurückschreiben der Variable singleton ein Kontextwechsel stattfindet. (low-level data race) static Object singleton = null; // der Variable wird eine (zufällige) Farbe zugewiesen. Object getuniqueinstance() { Object ret; if (singleton == null) ret = singleton = new Object(); else ret = singleton; return ret; Ferienakademie 2009 Kurs 1: Data Coloring 12

13 4. Funktionsweise von Data Coloring Das Problem soll mit Data Coloring gelöst werden: static Object singleton color() = null; // der Variable wird eine (zufällige) Farbe zugewiesen. Object getuniqueinstance() { Object ret; if (singleton == null) // kritischer Abschnitt bzgl. der Domäne (Farbe) von singleton // wird betreten. ret = singleton = new Object(); else ret = singleton; color_step(&singleton); // Domäne (Farbe) wird wieder freigegeben return ret; Ferienakademie 2009 Kurs 1: Data Coloring 13

14 4. Funktionsweise von Data Coloring Man legt bei der Deklarierung/Allokierung einer Datenstruktur fest, zu welcher consistency domain (Farbe) sie gehört: Achtung: Nicht das Objekt wird eingefärbt, sondern die Referenz! static Object singleton color() = null; // der Variable wird eine (zufällige) Farbe zugewiesen. Object getuniqueinstance() { Object ret; if (singleton == null) // kritischer Abschnitt bzgl. der Domäne (Farbe) von singleton // wird betreten. ret = singleton = new Object(); else ret = singleton; color_step(&singleton); // Domäne (Farbe) wird wieder freigegeben return ret; Ferienakademie 2009 Kurs 1: Data Coloring 14

15 4. Funktionsweise von Data Coloring Wenn ein Thread auf eine Datenstruktur zugreift, betritt er automatisch einen kritischen Abschnitt für die entsprechende consistency domain: static Object singleton color() = null; // der Variable wird eine (zufällige) Farbe zugewiesen. Object getuniqueinstance() { Object ret; if (singleton == null) // kritischer Abschnitt bzgl. der Domäne (Farbe) von singleton // wird betreten. ret = singleton = new Object(); else ret = singleton; color_step(&singleton); // Domäne (Farbe) wird wieder freigegeben return ret; Ferienakademie 2009 Kurs 1: Data Coloring 15

16 4. Funktionsweise von Data Coloring Das Ende eines kritischen Abschnitts muss manuell festgelegt werden (color step): static Object singleton color() = null; // der Variable wird eine (zufällige) Farbe zugewiesen. Object getuniqueinstance() { Object ret; if (singleton == null) // kritischer Abschnitt bzgl. der Domäne (Farbe) von singleton // wird betreten. ret = singleton = new Object(); else ret = singleton; color_step(&singleton); // Domäne (Farbe) wird wieder freigegeben return ret; Ferienakademie 2009 Kurs 1: Data Coloring 16

17 4. Funktionsweise von Data Coloring Aber: Data-centric synchronisation reicht nicht aus. Beispiel: void transfer(account a, Account b, int n) { a.withdraw(n); b.add(n); Auch wenn die Daten der einzelnen Konten konsistent sind (durch data-centric synchronization), kann es vorkommen, dass vor b.add(n) ein Kontextwechsel stattfindet. => Ein anderer Thread liest einen alten Kontostand des Kontos b. Man beobachtet also Inkonsistenzen zwischen verschiedenen Domänen Ferienakademie 2009 Kurs 1: Data Coloring 17

18 4. Funktionsweise von Data Coloring Beispiel: void transfer(account a, Account b, int n) { a.withdraw(n); b.add(n); z.b.: Kontostand a: 50; Kontostand b: 30; Kontostand c: 100 Thread A Thread B transfer(a,b,40); transfer(b,c,60); a.withdraw(40); b.add(40); Kontextwechsel b.withdraw(60); c.add(60); Die transfer-operation sollte atomar bzgl. beider Konten sein Ferienakademie 2009 Kurs 1: Data Coloring 18

19 4. Funktionsweise von Data Coloring Operation-centric synchronization Wird benötigt, wenn Daten aus verschiedenen consistency domains geschützt werden müssen (z.b. Transaktion zwischen zwei Bankkonten). alle color steps innerhalb der Transaktion werden erst am Ende des atomic-blocks atomar ausgeführt. Also ist der atomic-block ein kritischer Abschnitt bzgl. allen Domänen, die im Block angesprochen werden. void transfer(account a, Account b, int n) { atomic(all_colors) { // defer_color_steps(l,all_colors) a.withdraw(n); b.add(n); // l:color_step(all_colors) Ferienakademie 2009 Kurs 1: Data Coloring 19

20 4. Funktionsweise von Data Coloring Komposition von Funktionen: int find(key key) { // search, access key, initialize index color_step(key, this); return index; Value get(int index) { // initialize value from index color_step(this); return value; void remove(int index) { // remove value at index color_step(this); Value getandremove(key key) { atomic(this) { // defer_color_step(l, this) Value value = null; int index = find(key); if (index!= -1) { value = get(index); remove(index); // l:color_step(this) return value; Der atomic-block in getandremove wird benötigt, da sonst ein color step in einer der aufgerufenen Methoden dafür sorgen könnte, dass der kritische Abschnitt in getandremove beendet und die Konsistenz verletzt wird Ferienakademie 2009 Kurs 1: Data Coloring 20

21 Gliederung 1.Motivation 2.Definitionen 3.Nachteile von code-centric synchronisation 4.Funktionsweise von Data Coloring 5.Vorteile von Data Coloring 6.Probleme bei Data Coloring 7.Fazit 8.Fragen Ferienakademie 2009 Kurs 1: Data Coloring 21

22 5. Vorteile von data-centric synchronisation code-centric: (mit Semaphor) data-centric: P(Semaphor s) // Ressource belegen { while(s <= 0) { s--; V(Semaphor s) // Ressource freigeben { s++; s := 1; // Initialisierung P(s); // Operationen ausführen V(s); Object obj color(); // dem Objekt wird eine Farbe // zugewiesen. // Operationen auf obj ausführen // Sobald eine Aktion auf einer eingefärbten // Variable ausgeführt wird, sind alle // Variablen derselben Farbe geschützt. color_step(obj); // Farbe wird wieder freigegeben Ferienakademie 2009 Kurs 1: Data Coloring 22

23 5. Vorteile von data-centric synchronisation Vorteile: consistency constraints werden explizit bei den zu schützenden Daten festgelegt. kritische Abschnitte werden vom Compiler automatisch eingefügt, wenn auf eingefärbte Daten zugegriffen wird. consistency domains: mehrere Variablen/Objekte können gleich eingefärbt werden. aber: color step muss ausgeführt werden, damit der Compiler weiß, wann der kritische Bereich vorbei ist. data-centric: Object obj color(); // dem Objekt wird eine Farbe // zugewiesen. // Operationen auf obj ausführen // Sobald eine Aktion auf einer eingefärbten // Variable ausgeführt wird, sind alle // Variablen derselben Farbe geschützt. color_step(obj); // Farbe wird wieder freigegeben Ferienakademie 2009 Kurs 1: Data Coloring 23

24 5. Vorteile von data-centric synchronisation Lösung des Coord-Beispiels mit Semaphoren: class Coord { double x, y; Semaphor s_x, s_y, s_xy; public Coord(double px, double py) { x = px; y = py; Coord getxy() { return new Coord(x, y); void setx(double px) { x = px; void sety(double py) { y = py; void set() { P(s_xy); P(s_x); P(s_y); setx(0); sety(0); V(s_y); V(s_x); V(s_xy); Man muss hier sowohl Locks für x und y als auch ein Lock für die beiden Variablen gemeinsam (bzw. für das Coord-Objekt) anfordern, damit kein high-level data race auftreten kann Ferienakademie 2009 Kurs 1: Data Coloring 24

25 5. Vorteile von data-centric synchronisation Lösung des Coord-Beispiels mit Data Coloring: class Coord { double x color(green), y color(green); public Coord(double px, double py) { x = px; y = py; Coord getxy() { return new Coord(x, y); void setx(double px) { x = px; void sety(double py) { y = py; void set() { setx(0); sety(0); // oder: getxy(); Sobald auf x oder y zugegriffen wird, wird die Farbe grün gesperrt. also kann kein highlevel data race auftreten Ferienakademie 2009 Kurs 1: Data Coloring 25

26 Gliederung 1.Motivation 2.Definitionen 3.Nachteile von code-centric synchronisation 4.Funktionsweise von Data Coloring 5.Vorteile von Data Coloring 6.Probleme bei Data Coloring 7.Fazit 8.Fragen Ferienakademie 2009 Kurs 1: Data Coloring 26

27 6. Probleme bei Data Coloring Falsche Einfärbung: Gemeinsam benutzte Bereiche sind nicht eingefärbt. Beispiel: Wenn mehrere Threads die Methode aufrufen, können Inkonsistenzen auftreten. int counter; void increment() { counter++; Lösung: Man betrachtet die Zugriffe auf nicht eingefärbte Variablen und entscheidet, ob manche Variablen eingefärbt werden sollten Ferienakademie 2009 Kurs 1: Data Coloring 27

28 6. Probleme bei Data Coloring Falsche Einfärbung: Daten, die eigentlich zu einer consistency domain gehören sollten, sind verschieben eingefärbt (kann zu race conditions führen). Beispiel: int zehner color(green); int einer color(red); void count() { einer++; if(einer = 0) zehner++; color_step(einer, zehner); void plus11() { zehner++; einer++; color_step(einer, zehner); Lösung: Finden der Inkonsistenzen mit einem Debugger Ferienakademie 2009 Kurs 1: Data Coloring 28

29 6. Probleme bei Data Coloring Falsche Einfärbung: Daten, die zu verschiedenen consistency domains gehören sollen, haben dieselbe Farbe. Lösung: Analyse, welche Variablen welche Farbe haben Ferienakademie 2009 Kurs 1: Data Coloring 29

30 6. Probleme bei Data Coloring Weglassen eines color steps: Ein Thread gibt eine Farbe nicht wieder frei, was dazu führen kann, dass das Programm nicht mehr ausgeführt werden kann (Deadlock). Aber: keine Verletzung der Sicherheit Beispiel: int counter color(); void increment() { counter++; Lösung: Identifizierung des Threads und der Farbe Ferienakademie 2009 Kurs 1: Data Coloring 30

31 6. Probleme bei Data Coloring Verletzung der Atomarität: Mehrere color steps der gleichen Farbe werden in einer Methode vollzogen. Beispiel: int zehner color(red); int einer color(red); void count() { einer++; color_step(einer); // hier kann die Konsistenz verloren gehen if(einer = 0) zehner++; color_step(einer); Lösung: Programmanalyse, Traversierung des Call-Graphen Ferienakademie 2009 Kurs 1: Data Coloring 31

32 6. Probleme bei Data Coloring Problem: color step muss immer manuell ausgeführt werden. Lösung: exit policy: Festlegung einer Regel, wann der color step automatisch ausgeführt wird. z.b.: Immer wenn eine Methode terminiert, wird implizit ein color step für alle geblockten Farben aufgerufen Ferienakademie 2009 Kurs 1: Data Coloring 32

33 6. Probleme bei Data Coloring Problem: Pointer (beispielsweise in C/C++) und Aliasing Data Coloring funktioniert nur auf Variablen; sobald Pointer und Aliasing ins Spiel kommen, kann das Erzeugen von kritischen Abschnitten nicht mehr zuverlässig funktionieren. Lösung: Compiler checkt die Adressen von jedem Pointerzugriff auf eine mögliche Einfärbung; Statt Referenzen werden die Objekte eingefärbt. Aber: Sehr viel Overhead; Compiler hat möglichweise keinen Zugriff auf das ganze Programm (z.b. bei dynamisch gelinkten Bibliotheken) Ferienakademie 2009 Kurs 1: Data Coloring 33

34 6. Probleme bei Data Coloring Alternative Lösung: Hardware-Lösung (Colorama): zwei Hardwarefunktionen: Alle Speicheradressen, auf die ein Prozessor zugreift, werden überwacht; bei Bedarf wird ein kritischer Abschnitt erzeugt. Austritt aus einem kritischen Abschnitt: Gemäß der exit policy, die beim Kompilieren verwendet wird, wird der kritische Abschnitt wieder verlassen Ferienakademie 2009 Kurs 1: Data Coloring 34

35 Gliederung 1.Motivation 2.Definitionen 3.Nachteile von code-centric synchronisation 4.Funktionsweise von Data Coloring 5.Vorteile von Data Coloring 6.Probleme bei Data Coloring 7.Fazit 8.Fragen Ferienakademie 2009 Kurs 1: Data Coloring 35

36 7. Fazit Es liegt nahe, consistency constraints direkt in den Datenstrukturen (data-centric synchronisation) anstatt in den Methoden (code-centric synchronisation) zu definieren. Statistiken zeigen, dass sehr viele kritische Abschnitte data-centric sind (z.b.: MySQL 5: 84%; WebSphere: 75%). Das Auffinden und Beheben von Synchronisationsproblemen ist relativ einfach. Data Coloring deckt durch data-centric synchronization und operation-centric synchronization alle Synchronisationsprobleme ab Ferienakademie 2009 Kurs 1: Data Coloring 36

37 7. Fazit Aber: Bislang ist kein Compiler für Data Coloring verfügbar Nur die Konzepte sind vorhanden (veröffentlicht von Luis Ceze, 2007) Auch die Hardwarelösung Colorama ist nur ein Konzept Ferienakademie 2009 Kurs 1: Data Coloring 37

38 Gliederung 1.Motivation 2.Definitionen 3.Nachteile von code-centric synchronisation 4.Funktionsweise von Data Coloring 5.Vorteile von Data Coloring 6.Probleme bei Data Coloring 7.Warum Data Coloring? 8.Fragen Ferienakademie 2009 Kurs 1: Data Coloring 38

Semantics of C++ Hauptseminar im Wintersemester 2009/2010 Data Coloring

Semantics of C++ Hauptseminar im Wintersemester 2009/2010 Data Coloring Semantics of C++ Hauptseminar im Wintersemester 2009/2010 Data Coloring Johannes Schamburger Technische Universität München 2.11.2009 Zusammenfassung Data Coloring ist ein Ansatz, den wechselseitigen Ausschluss

Mehr

Übung zu Grundlagen der Betriebssysteme. 10. Übung 18.12.2012

Übung zu Grundlagen der Betriebssysteme. 10. Übung 18.12.2012 Übung zu Grundlagen der Betriebssysteme 10. Übung 18.12.2012 Aufgabe 1 a) Was versteht man unter einem kritischen Abschnitt oder kritischen Gebiet (critical area)? b) Welche Aufgabe hat ein Semaphor? c)

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

Memory Models Frederik Zipp

Memory Models Frederik Zipp Memory Models Frederik Zipp Seminar: Programmiersprachen für Parallele Programmierung (SS 2010) Fakultät für Informatik - IPD SNELTING LEHRSTUHL PROGRAMMIERPARADIGMEN 1

Mehr

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. ) Technische Informatik für Ingenieure (TIfI) WS 2006/2007, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Rekursion Datenstrukturen Merge S ( split, s, merge ) Beispiel:

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Speicherverwaltung und Parameterübergabe Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Gültigkeitsbereich von

Mehr

Java Einführung Methoden. Kapitel 6

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

Mehr

Einstieg in die Informatik mit Java

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

Mehr

Laborskript Verteilte Systeme

Laborskript Verteilte Systeme Laborskript Verteilte Systeme Nebenläufigkeit in Java Prof. Dr. Oliver Haase 1 Threads Java bietet zwei verschiedene Arten an, Threads zu erzeugen und zu starten: Entweder durch Erweitern der Klasse Thread,

Mehr

parallele Prozesse auf sequenziellen Prozessoren Ein Process ist ein typisches Programm, mit eigenem Addressraum im Speicher.

parallele Prozesse auf sequenziellen Prozessoren Ein Process ist ein typisches Programm, mit eigenem Addressraum im Speicher. Threads parallele Prozesse auf sequenziellen Prozessoren Prozesse und Threads Es gibt zwei unterschiedliche Programme: Ein Process ist ein typisches Programm, mit eigenem Addressraum im Speicher. Ein Thread

Mehr

Programmieren II. Nebenläufigkeit. Vorlesung 9. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester Threads. Kritische Bereiche

Programmieren II. Nebenläufigkeit. Vorlesung 9. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester Threads. Kritische Bereiche Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 24 Threads Kritische Bereiche Reales Beispiel 2 / 24 Nebenläufigkeit Moderne Betriebssysteme unterstützen das Prinzip der

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

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

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen Variablen Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Variablen dienen zur Speicherung von Daten. Um Variablen

Mehr

Anwendung (2. Versuch:-) Entkopplung der Locks

Anwendung (2. Versuch:-) Entkopplung der Locks Gut gemeint aber leider fehlerhaft... Jeder Producer benötigt zwei Locks gleichzeitig, um zu produzieren: 1. dasjenige für den Puffer; 2. dasjenige für einen Semaphor. Musser fürden Semaphor einwait()

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

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

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

Algorithmen implementieren. Implementieren von Algorithmen

Algorithmen implementieren. Implementieren von Algorithmen Algorithmen implementieren Implementieren von Algorithmen Um Algorithmen ablaufen zu lassen, muss man sie als Programm darstellen (d.h. implementieren) Wie stellt man die algorithmischen Strukturelemente

Mehr

Synchronisation in Java. Invisible Web

Synchronisation in Java. Invisible Web Synchronisation in Java Studienprojekt Invisible Web Tang Zhihong Synchronisation in Java Synchronisationsproblem Monitore Wait und notify PipedInputStream und PipedOutputStream Synchronisation von Collections

Mehr

Algorithmen und Datenstrukturen

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

Mehr

6 Speicherorganisation

6 Speicherorganisation 6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen

Mehr

Testen nebenläufiger Objekte

Testen nebenläufiger Objekte Testen nebenläufiger Objekte Threads in Java Julian Lambertz Seminar Tests in Informatik und Statistik im SS 2004 Universität Ulm J.L., Juni 2004 1 Themenüberblick Einleitung Begriff der Nebenläufigkeit

Mehr

Lehrstuhl für Datenverarbeitung. Technische Universität München. Leistungskurs C++ Multithreading

Lehrstuhl für Datenverarbeitung. Technische Universität München. Leistungskurs C++ Multithreading Leistungskurs C++ Multithreading Threading mit Qt Plattformübergreifende Thread-Klasse Sehr einfach zu benutzen Leider etwas schlecht dokumentiert Leistungskurs C++ 2 QThread Plattformübergreifende Thread-Klasse

Mehr

Repetitorium Informatik (Java)

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

Mehr

C++ Klassen weitere Funktionen

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

Mehr

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

Tag 8 Repetitorium Informatik (Java)

Tag 8 Repetitorium Informatik (Java) Tag 8 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

Lehrstuhl für Datenverarbeitung. Technische Universität München. Leistungskurs C++ Multithreading

Lehrstuhl für Datenverarbeitung. Technische Universität München. Leistungskurs C++ Multithreading Leistungskurs C++ Multithreading Threading mit Qt Plattformübergreifende Thread-Klasse Sehr einfach zu benutzen Leider etwas schlecht dokumentiert Leistungskurs C++ 2 QThread Plattformübergreifende Thread-Klasse

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

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

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

Java Concurrency Utilities

Java Concurrency Utilities Java Concurrency Utilities Java unterstützt seit Java 1.0 Multithreading Java unterstützt das Monitorkonzept mittels der Schlüsselworte synchronized und volatile sowie den java.lang.object Methoden wait(),

Mehr

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

Softwareentwicklung I (IB) Objekte. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München Softwareentwicklung I (IB) Objekte Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 20:09 Inhaltsverzeichnis Neue Typen durch Klassen............................. 2

Mehr

Klassen können bekanntlich aus zwei Komponententypen bestehen, nämlich Attributen und Methoden.

Klassen können bekanntlich aus zwei Komponententypen bestehen, nämlich Attributen und Methoden. Objektzugriff Klassen können bekanntlich aus zwei Komponententypen bestehen, nämlich Attributen und Methoden. Attribute sind in der Klasse mit Datentyp und Namen deklariert im Objekt sind sie mit jeweils

Mehr

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen

Mehr

Beispiel für überladene Methode

Beispiel für überladene Methode Beispiel für überladene Methode class Gras extends Futter {... abstract class Tier { public abstract void friss (Futter x); class Rind extends Tier { public void friss (Gras x) {... public void friss (Futter

Mehr

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

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

Mehr

Implementieren von Klassen

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

Mehr

Lehrstuhl für Datenverarbeitung. Technische Universität München. Leistungskurs C++ Multithreading

Lehrstuhl für Datenverarbeitung. Technische Universität München. Leistungskurs C++ Multithreading Leistungskurs C++ Multithreading Zeitplan 16.10. Vorlesung 23.10. Vorlesung, Gruppeneinteilung 30.10. Vorlesung, HA1 06.11. Vorlesung, HA2 13.11. Vorlesung entfällt wegen SVV 20.11. Präsentation Vorprojekt

Mehr

Lebenszyklus von Threads

Lebenszyklus von Threads Threads Umgangssprachlich Faden, Diskussionsfaden, Gewinde, Faser, Garn, roter Faden Threads ermöglichen Nebenläufigkeit (parallele Ausführung von Anwendungsteilen). Typisch für Threads ist,dass sie zu

Mehr

Leser-Schreiber-Realisierung mit Semaphoren

Leser-Schreiber-Realisierung mit Semaphoren Leser-Schreiber-Realisierung mit Semaphoren Reader: down(semwriter); down(semcounter); rcounter++; up(semwriter); read(); down(semcounter); rcounter--; Writer: Problem: down(semwriter); Busy Waiting siehe

Mehr

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen

Mehr

Ausnahmebehandlung in Java

Ausnahmebehandlung in Java Ausnahmebehandlung in Java class A { void foo() throws Help, SyntaxError {... class B extends A { void foo() throws Help { if (helpneeded()) throw new Help();... try {... catch (Help e) {... catch (Exception

Mehr

Programmierung und Angewandte Mathematik

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

Mehr

Tag 7 Repetitorium Informatik (Java)

Tag 7 Repetitorium Informatik (Java) Tag 7 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

Wirtschaftsinformatik II Sommersemester Lo sungshinweise zu den Ü bungen P. Mandl, M. Dolag, B. Rottmüller, et al.

Wirtschaftsinformatik II Sommersemester Lo sungshinweise zu den Ü bungen P. Mandl, M. Dolag, B. Rottmüller, et al. Wirtschaftsinformatik II Sommersemester 2016 Lo sungshinweise zu den Ü bungen 2-6 @Prof. P. Mandl, M. Dolag, B. Rottmüller, et al. Seite 1 / 6 Übung 2 Verwendung von Java-Threads Ableitung von Klasse Thread

Mehr

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

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

Mehr

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

1.4. Funktionen. Objektorientierte Programmierung mit C++

1.4. Funktionen. Objektorientierte Programmierung mit C++ mehrfache Deklarationen sind erlaubt für jede Funktion muss es (GENAU) eine Definition geben, ansonsten linker error [the one definition rule ODR] Deklarationen in *.h - Files, Definitionen in *.cpp -

Mehr

Objektorientierte Programmierung und Klassen

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

Mehr

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

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

Mehr

Kapitel 10. Verweise und Referenzen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Kapitel 10. Verweise und Referenzen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz Kapitel 10 Verweise und Referenzen Inhalt von Kapitel 10 Verweise und Referenzen 10.1 Das Schlüsselwort this Definition Verwendungszweck Klassenmethoden EINSCHUB: Musterlösung zu Übung 4.1 10.2 Objektreferenzen

Mehr

Programmieren I. Kapitel 12. Referenzen

Programmieren I. Kapitel 12. Referenzen Programmieren I Kapitel 12. Referenzen Kapitel 12: Referenzen Ziel: Die Wahrheit über Objekte Lebensdauer Speicherverwaltung Parameterübergabemechanismen in Methoden Gleichheiten, Kopien Arrays Speicherbereinigung

Mehr

10.4 Konstante Objekte

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

Mehr

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

Wiederholung aus SWE2

Wiederholung aus SWE2 Wiederholung aus SWE2 Innere Klassen Diverse neue Sprachfeatures bei Java 1.5 Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1 Inhalt Innere Klassen Diverse neue Sprachfeatures bei Java 1.5 Pratikum

Mehr

Informatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5

Informatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5 Informatik 1 (251-0832-00) D-MAVT F2010 Schleifen, Felder Nachbesprechung Blatt 3 Aufgabe 1 ASCII... A > a Vorsicht: Lösen Sie sich von intuitiven Schlussfolgerungen. A ist nicht grösser als a, denn in

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

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

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

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

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

Mehr

2 Teil 2: Nassi-Schneiderman

2 Teil 2: Nassi-Schneiderman 2 Teil 2: Nassi-Schneiderman Wie kann man Nassi-Schneiderman in einer objektorientierten Sprache verwenden? Jedes Objekt besitzt Methoden, welche die Attribute des Objektes verändern. Das Verhalten der

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

Mehr

Einstieg in die Informatik mit Java

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

Mehr

Arten von Klassen-Beziehungen

Arten von Klassen-Beziehungen Arten von Klassen-Beziehungen Untertypbeziehung: Ersetzbarkeit Vererbung von Code aus Oberklasse irrelevant Vererbungsbeziehung: Klasse entsteht durch Abänderung anderer Klassen Ersetzbarkeit irrelevant

Mehr

Repetitorium Programmieren I + II

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

Mehr

Nicht-blockierende Synchronisation für Echtzeitsysteme

Nicht-blockierende Synchronisation für Echtzeitsysteme Nicht-blockierende Synchronisation für Echtzeitsysteme Seminar Mobile Systeme Florian Schricker 15. März 2005 Seminarleiter: Prof. Dr. Dieter Zöbel 1 INHALTSVERZEICHNIS INHALTSVERZEICHNIS Inhaltsverzeichnis

Mehr

Informatik 1 ( ) D-MAVT F2011. Pointer, Structs. Yves Brise Übungsstunde 6

Informatik 1 ( ) D-MAVT F2011. Pointer, Structs. Yves Brise Übungsstunde 6 Informatik 1 (251-0832-00) D-MAVT F2011 Pointer, Structs Organisatorisches Übungsstunde 20110413 Da ich abwesend bin, bitte Gruppe von David Tschirky besuchen. Mittwoch, 20110413, 13:15-15:00 Uhr, VAW

Mehr

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

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

Mehr

Aufbau von Klassen. class punkt {...

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

Mehr

Verkettete Datenstrukturen: Listen

Verkettete Datenstrukturen: Listen Verkettete Datenstrukturen: Listen 2 Listen Formal: Liste = endliche Folge von Elementen [a 1, a 2,..., a n ]. Spezialfall: leere Liste [ ]. Länge einer Liste = Anzahl der Elemente (bei leerer Liste: 0).

Mehr

Theorie zu Übung 8 Implementierung in Java

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

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen 1 Datenstrukturen und Algorithmen Übung 13 FS 2018 Programm von heute 2 1 Feedback letzte Übung 2 Wiederholung Theorie 3 Nächste Übung 1. Feedback letzte Übung 3 Aufgabe 12.3: Summe eines Vektors void

Mehr

Thread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen

Thread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen Thread-Synchronisation in in Java Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen Die Klasse Thread Die Die Klasse Thread gehört zur zur Standardbibliothek von von

Mehr

Mikrorechentechnik II. Klassen in C++

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

Mehr

Programmierkurs. Steffen Müthing. January 18, Interdisciplinary Center for Scientific Computing, Heidelberg University

Programmierkurs. Steffen Müthing. January 18, Interdisciplinary Center for Scientific Computing, Heidelberg University Programmierkurs Steffen Müthing Interdisciplinary Center for Scientific Computing, Heidelberg University January 18, 2019 Konzepte Standard-Konzepte für Code Reuse: Polymorphie/Vererbung Funktionalität

Mehr

Kapitel 5: Iterierbare Container

Kapitel 5: Iterierbare Container Kapitel 5: Iterierbare Container Foreach-Schleife Interface Iterator Interface Iterable Iterator-Schleife und Foreach-Schleife Generische Liste mit Iteratoren Prof. Dr. O. Bittel, HTWG Konstanz Programmiertechnik

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

Betriebssysteme. G: Parallele Prozesse. (Teil B: Klassische Problemstellungen, Mutual Exclusion, kritische Regionen)

Betriebssysteme. G: Parallele Prozesse. (Teil B: Klassische Problemstellungen, Mutual Exclusion, kritische Regionen) Betriebssysteme G: Parallele Prozesse (Teil B: Klassische Problemstellungen, Mutual Exclusion, kritische Regionen) 1 Allgemeine Synchronisationsprobleme Wir verstehen ein BS als eine Menge von parallel

Mehr

Parallele Prozesse. Prozeß wartet

Parallele Prozesse. Prozeß wartet Parallele Prozesse B-66 Prozeß: Ausführung eines Programmes in seinem Adressraum (zugeordneter Speicher) Parallele Prozesse: gleichzeitig auf mehreren Prozessoren laufende Prozesse p1 p2 verzahnte Prozesse:

Mehr

7. Übung Informatik II - Objektorientierte Programmierung

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

Mehr

Statische und Nichtstatische Methoden Properties/ Eigenschaften

Statische und Nichtstatische Methoden Properties/ Eigenschaften Statische und Nichtstatische Methoden Properties/ Eigenschaften Statische Methoden Definition und Merkmale von Properties Modifizierer Beispiele Nebeneffekte Dr. Beatrice Amrhein Statische / Nichtstatische

Mehr

Übersicht. Bisherige Verwendung von Klassen Vererbung. Zeiger auf Objekte (abgeleiteter) Klassen Virtuelle Funktionen Konstruktoren/Destruktoren

Übersicht. Bisherige Verwendung von Klassen Vererbung. Zeiger auf Objekte (abgeleiteter) Klassen Virtuelle Funktionen Konstruktoren/Destruktoren C++ - Vererbung Übersicht Bisherige Verwendung von Klassen Vererbung Grundlagen Zugriffschutz Vererbte Funktionen Zeiger auf Objekte (abgeleiteter) Klassen Virtuelle Funktionen Konstruktoren/Destruktoren

Mehr

C++ atomics, Boost.Lookfree, Hazard-Pointers und die Thread-Hölle

C++ atomics, Boost.Lookfree, Hazard-Pointers und die Thread-Hölle C++ atomics, Boost.Lookfree, Hazard-Pointers und die Thread-Hölle Aachen, den 14. Januar 2016 Max Neunhöffer www.arangodb.com Unser Problem heute Es war einmal... eine multi-threaded Applikation, mit einer

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

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

Mehr

Parallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr

Parallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr 3. Übung Abgabe bis 10.11.2015, 10:00 Uhr Aufgabe 3.1: Java-Synchronisation a) An welchen Stellen im Code kann das Schlüsselwort synchronized verwendet werden? b) Wie nennt sich die Synchronisations-Art,

Mehr

Zeiger und dynamischer Speicher

Zeiger und dynamischer Speicher Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Zuletzt aktualisiert: 09.12.2013, 07:49 Uhr

Mehr

Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen. Sebastian Küpper

Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen. Sebastian Küpper Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen Sebastian Küpper Unzulänglichkeit von Feldern Wenn ein Unternehmen alle Rechnungen eines Jahres verwalten möchte,

Mehr

Philipp Güttler Progwerkstatt Letzte Änderung: Enums, Interfaces, Generics und Threads

Philipp Güttler Progwerkstatt Letzte Änderung: Enums, Interfaces, Generics und Threads Philipp Güttler 18.11.2008 Progwerkstatt Letzte Änderung: 09.12.2009 Enums, Interfaces, Generics und Threads Seite 2 Enums Enums, Interfaces und Generics 17.11.2008 Enum Typen komplexer Datentyp, der festen

Mehr

6 Speicherorganisation

6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für

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

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

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

Mehr

Arrays. Einleitung. Deklarieren einer Array Variablen

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

Mehr

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

4. Vererbung Die Klasse Object. Die Klasse Object

4. Vererbung Die Klasse Object. Die Klasse Object 4. Vererbung Die Klasse Object Die Klasse Object Alle Klassen ohne explizit deklarierte Superklasse haben die Klasse Object als Superklasse. Object gehört zum Paket java.lang. Object verfügt über einige

Mehr

C++ Teil 6. Sven Groß. 23. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 15

C++ Teil 6. Sven Groß. 23. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 15 C++ Teil 6 Sven Groß 23. Nov 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 6 23. Nov 2015 1 / 15 Themen der letzten Vorlesung const-deklaration Referenzen Zeiger Felder Sven Groß (IGPM, RWTH Aachen) C++

Mehr