1. Motivation. Problemstellung: Dateninkonsistenzen (data races) aufgrund von konkurrierenden Zugriffen auf gemeinsame Daten sollen verhindert werden.
|
|
- Dominik Goldschmidt
- vor 5 Jahren
- Abrufe
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 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 Aufgabe 1 a) Was versteht man unter einem kritischen Abschnitt oder kritischen Gebiet (critical area)? b) Welche Aufgabe hat ein Semaphor? c)
MehrInformatik - Ü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
MehrMemory 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
MehrII. 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:
MehrVorlesung 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
MehrJava 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
MehrEinstieg 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
MehrLaborskript 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,
Mehrparallele 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
MehrProgrammieren 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
Mehr2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
MehrFH 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
Mehr2 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
MehrAnwendung (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()
Mehr2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
MehrEinstieg 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
Mehr2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
MehrAlgorithmen 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
MehrSynchronisation 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
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine
Mehr6 Speicherorganisation
6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen
MehrTesten 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
MehrLehrstuhl 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
MehrRepetitorium 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
MehrC++ 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
MehrC++ - 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
MehrTag 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
MehrLehrstuhl 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
MehrOrganisatorisches. 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
Mehr2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
MehrOrganisatorisches. 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
MehrJava 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(),
MehrSoftwareentwicklung 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
MehrKlassen 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
MehrHeap 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
MehrBeispiel 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
MehrInstitut 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
MehrImplementieren 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
MehrLehrstuhl 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
MehrLebenszyklus 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
MehrLeser-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
MehrHeap 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
MehrAusnahmebehandlung 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
MehrProgrammierung 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
MehrTag 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
MehrWirtschaftsinformatik 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
MehrC++ - 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
MehrMapra: 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
Mehr1.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 -
MehrObjektorientierte 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
MehrKapitel 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
MehrKapitel 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
MehrProgrammieren 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
Mehr10.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
MehrMartin 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
MehrWiederholung 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
MehrInformatik 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
Mehr1 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
MehrDAP2-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
MehrEinfü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
MehrEinfü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
MehrJavakurs 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
Mehr2 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
MehrAlgorithmen 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
MehrEinstieg 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
MehrArten 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
MehrRepetitorium 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
MehrNicht-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
MehrInformatik 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
MehrProgrammiertechnik. 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
MehrAufbau 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
MehrVerkettete 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).
MehrTheorie 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
MehrDatenstrukturen 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
MehrThread-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
MehrMikrorechentechnik 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
MehrProgrammierkurs. 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
MehrKapitel 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
MehrObjektorientierte 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
MehrBetriebssysteme. 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
MehrParallele 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:
Mehr7. Ü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
MehrStatische 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
C++ - Vererbung Übersicht Bisherige Verwendung von Klassen Vererbung Grundlagen Zugriffschutz Vererbte Funktionen Zeiger auf Objekte (abgeleiteter) Klassen Virtuelle Funktionen Konstruktoren/Destruktoren
MehrC++ 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
MehrKapitel 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
MehrParallele 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,
MehrZeiger 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
MehrEinfü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,
MehrPhilipp 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
Mehr6 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
MehrSoftware 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
MehrInnere 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
MehrArrays. 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
MehrEinfü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
Mehr4. 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
MehrC++ 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