6. Tutorium zu Softwaretechnik I
|
|
- Dorothea Hochberg
- vor 8 Jahren
- Abrufe
Transkript
1 6. Tutorium zu Softwaretechnik I Parallelität und Testen Michael Hoff INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft
2 Übersicht 1 Parallelität Erzeugen von Parallelität Synchronisation und Koordination Verklemmung 2 Testen Kontrollflussgraph Überdeckungstests
3 Letztes Übungsblatt
4 Parallelität
5 Einführung Definition von "parallel" Allgemein: nebeneinander verlaufend, in gleichem Abstand Informatik: gleichzeitig ablaufend Programmieransätze Parallelrechner mit gemeinsamem Speicher Prozessoren haben einen gemeinsamen Speicherbereich Jeder Prozessor kann jede Speicherzelle ansprechen Parallelrechner mit verteiltem Speicher Jeder Prozessor hat seinen eigenen Speicher Kommunikation zwischen Prozessoren über Nachrichten Michael Hoff 6. Tutorium /34
6 Prozesse und Kontrollfäden Prozess (engl. Process) Ein Programm in Ausführung Wird durch Betriebssystem erzeugt Enthält Informationen über Programmressourcen und Ausführungszustand CPU-Kontextwechsel zwischen Prozessen langsam Michael Hoff 6. Tutorium /34
7 Prozesse und Kontrollfäden Prozess (engl. Process) Ein Programm in Ausführung Wird durch Betriebssystem erzeugt Enthält Informationen über Programmressourcen und Ausführungszustand CPU-Kontextwechsel zwischen Prozessen langsam Kontrollfaden (engl. Thread) Unabhängiger Instruktionsstrom, der ausgeführt werden kann Existiert in einem Prozess CPU-Kontextwechsel zwischen Fäden des gleichen Prozesses schnell Michael Hoff 6. Tutorium /34
8 Prozesse und Threads Prozess Code Halde Faden 1 Faden 1 Programmzähler Kellerspeicher für Aufrufe und Auswertung Aktivierungszeiger Aktivierung Faden 2 Kellerzeiger Übrige Register Aktivierung Zwischenergebnisse Anweisungen Objekte Letztes Element Faden n Freier Kellerspeicher 24 Kapitel Grundlagen zur Parallelverarbeitung Mehr Details zu Parallelität in VL Betriebsysteme und Rechnerstrukturen Michael Hoff 6. Tutorium /34
9 Konstrukte Erzeugen zum von Erzeugen Threads in von Java Parallelität (2) Methode 1 Implementieren der Schnittstelle Runnable Faden erzeugen Methode 2 Anlegen einer Subklasse von Thread Implementieren der Methode run() Überschreiben der Methode run() Übergabe einer Instanz an einen Konstruktor eines Thread-Objekts thread Anlegen einer Instanz thread der Subklasse Aufruf der Methode thread.start() 5 Kapitel Parallelität in Java Michael Hoff 6. Tutorium /34
10 Beispiel: Konstrukte Erzeugen zum Erzeugen von Threads von Parallelität in Java Beispiel (1) Klasse, die Runnable implementiert: class ComputeRun implements Runnable { long min, max; ComputeRun (long min, long max) { this.min = min; this.max = max; } public void run () { // Parallele Aufgabe } } Erzeuge und starte Kontrollfaden: ComputeRun c = new ComputeRun(1, 20); new Thread(c).start(); Klasse, die von Thread erbt: class ComputeRun extends Thread { long min, max; ComputeRun (long min, long max) { this.min = min; this.max = max; } public void run () { // Parallele Aufgabe } } Erzeuge und starte Kontrollfaden: ComputeRun t = new ComputeRun(1, 20); t.start(); Michael Hoff 6. Tutorium /34
11 Koordination: Wofür? Zwei Aktivitäten führen den folgenden Code parallel aus. Beide habe Zugriff auf dieselbe globale Variable globalvar. int globalvar = 1; if (globalvar > 0) { globalvar--; } Kann globalvar negativ werden? 12 Kapitel Parallelität in Java Michael Hoff 6. Tutorium /34
12 Antwort: Ja, eine Wettlaufsituation (engl. race condition) kann eintreten. Speicherzugriffe der Aktivitäten werden in irgendeiner Reihenfolge ausgeführt. Die folgende denkbare Ausführungsreihenfolge ist kritisch: Thread 1 Thread 2 // globalvar == 1 if (globalvar > 0) { } globalvar--; if (globalvar > 0) { globalvar--; } 13 Kapitel Parallelität in Java Michael Hoff 6. Tutorium /34
13 Warum Koordination von Threads? Kritischer Abschnitt (engl. critical section) Bereich in dem ein Zugriff auf einen gemeinsam genutzten Zustand stattfindet Wettlaufsituationen (engl. race condition) Gleichzeitiger Zugriff von mindestens zwei Fäden auf eine Speicherstelle. Dabei mindestens 1 Schreibzugriff. Nur eine bestimmte Anzahl Aktivitäten darf einen kritischen Abschnitt zugleich bearbeiten Vor dem Betreten eines kritischen Abschnitts muss sichergestellt sein, dass ihn keine andere Aktivität ausführt Michael Hoff 6. Tutorium /34
14 Warum Koordination von Threads? Wettlaufsituationen (engl. race condition) Gleichzeitiger Zugriff von mindestens zwei Fäden auf eine Speicherstelle. Dabei mindestens 1 Schreibzugriff. Nur eine bestimmte Anzahl Aktivitäten darf einen kritischen Abschnitt zugleich bearbeiten Vor dem Betreten eines kritischen Abschnitts muss sichergestellt sein, dass ihn keine andere Aktivität ausführt Koordinationsmechanismen Wechselseitiger Ausschluss (engl. mutual exclusion) mittels Monitoren/Locks Warten auf Ereignisse und Benachrichtigung Unterbrechungen Michael Hoff 6. Tutorium /34
15 Synchronisation in Java (unvollständig!) Schlüsselwort synchronized Anwendbar auf Objekte und komplette Methoden ( implizites Lock von this) Erlaubt nur Änderungen eines Threads an synchronisiertem Objekt Andere Threads müssen ununterbrechbar warten bis der ausführende Thread die synchronisierte Umgebung verlässt Signalisierung x.wait() - Lässt aufrufenden Thread auf Signal von x warten x.notify() - Weckt einen der Threads, die auf x warten x.notifyall() - Weckt alle Threads, die auf x warten Unterbrechung t.interrupt() - Unterbricht das Warten des Threads t Michael Hoff 6. Tutorium /34
16 Verklemmungen (2) Ich will schreiben Geben Sie mir den Stift! Geben Sie mir das Papier! 44 Kapitel Parallelität in Java
17 Verklemmung Verklemmung, Blockade (engl. deadlock, deadly embrace) Blockade, die durch eine zyklische Abhängigkeit hervorgerufen wird Führt dazu, dass alle beteiligten Threads im Wartezustand verharren Mantra: Monitore in gleicher Reihenfolge anfordern und abgeben! Michael Hoff 6. Tutorium /34
18 java.util.concurrent Weitere Möglichkeiten zur Thread-Erzeugung, z.b. Callable<E>, ThreadPoolExecutor Atomare Datentypen, z.b. AtomicInteger, AtomicReference<E> Thread-sichere Datenstrukturen, z.b. CopyOnWriteArrayList Weitere Konstrukte enthalten für Koordination, z.b. Semaphore Michael Hoff 6. Tutorium /34
19 Kontrollflussorientierte (KFO) Testverfahren
20 Hilfsmittel Grundblock (engl. basic block) Ein Grundblock bezeichnet eine maximal lange Folge fortlaufender Anweisungen, in die der Kontrollfluss nur am Anfang eintritt und die außer am Ende keine Sprungbefehle enthält. Grundblock wird also stets komplett oder gar nicht ausgeführt Michael Hoff 6. Tutorium /34
21 Hilfsmittel Grundblock (engl. basic block) Ein Grundblock bezeichnet eine maximal lange Folge fortlaufender Anweisungen, in die der Kontrollfluss nur am Anfang eintritt und die außer am Ende keine Sprungbefehle enthält. Grundblock wird also stets komplett oder gar nicht ausgeführt Strukturerhaltende Zwischensprache Eine strukturerhaltende Zwischensprache ersetzt alle Befehle, die die Ausführungsreihenfolge beeinflussen durch (bedingte) Sprünge, übernimmt alle anderen Befehle unverändert und führt keine Optimierungen durch. Michael Hoff 6. Tutorium /34
22 Kontrollflussgraph Kontrollflussgraph erstellen 1 Quelltext in strukturerhaltende Zwischensprache transformieren (optional) 2 Grundblöcke identifizieren (= Knoten) 3 Grundblöcke durch passende Übergänge verbinden (= gerichtete Kanten) 4 Wenn nötig, speziellen Block n start und n end hinzufügen Michael Hoff 6. Tutorium /34
23 Aufgabe: Kontrollflussgraph erstellen private char[] kompaktifizieren(char[] werte) { boolean[] istzeichen = new boolean[werte.length]; int[] praesum = new int[werte.length]; for (int i = 0; i < werte.length; i++) { if (!Character.isWhitespace(werte[i])) { istzeichen[i] = true; praesum[i] = 1; } if (i > 0) { praesum[i] += praesum[i - 1]; } } char[] ergebnis = new char[praesum[praesum.length - 1]]; for (int i = 0; i < werte.length; i++) { if (istzeichen[i]) { ergebnis[praesum[i] - 1] = werte[i]; } } return ergebnis; } Michael Hoff 6. Tutorium /34
24 Lösung: Zwischensprache private char[] kompaktifizieren(char[] werte) { boolean[] istzeichen = new boolean[werte.length]; int[] praesum = new int[werte.length]; for (int i = 0; i < werte.length; i++) { if (!Character.isWhitespace(werte[i])) { istzeichen[i] = true; praesum[i] = 1; } if (i > 0) { praesum[i] += praesum[i - 1]; } } char[] ergebnis = new char[praesum[praesum.length - 1]]; for (int i = 0; i < werte.length; i++) { if (istzeichen[i]) { ergebnis[praesum[i] - 1] = werte[i]; } } return ergebnis; } 000: private char[] kompaktifizieren(char[] werte) 010: boolean[] istzeichen = new boolean[werte.length]; 020: int[] praesum = new int[werte.length]; 030: int i = 0; 040: if not (i < werte.length) goto 120; 050: if not (!Character.isWhitespace(werte[i])) goto 080; 060: istzeichen[i] = true; 070: praesum[i] = 1; 080: if not (i > 0) goto 100; 090: praesum[i] += praesum[i - 1]; 100: i++; 110: goto 040; 120: char[] ergebnis = new char[praesum[praesum.length - 1]]; 130: i = 0; 140: if not (i < werte.length) goto 190; 150: if not (istzeichen[i]) goto 170; 160: ergebnis[praesum[i] - 1] = werte[i]; 170: i++; 180: goto 140; 190: return ergebnis; Michael Hoff 6. Tutorium /34
25 Lösung: Grundblöcke 000: private char[] kompaktifizieren(char[] werte) 010: boolean[] istzeichen = new boolean[werte.length]; 020: int[] praesum = new int[werte.length]; 030: int i = 0; 040: if not (i < werte.length) goto 120; 050: if not (!Character.isWhitespace(werte[i])) goto 080; 060: istzeichen[i] = true; 070: praesum[i] = 1; 080: if not (i > 0) goto 100; 090: praesum[i] += praesum[i - 1]; 100: i++; 110: goto 040; 120: char[] ergebnis = new char[praesum[praesum.length - 1]]; 130: i = 0; 140: if not (i < werte.length) goto 190; 150: if not (istzeichen[i]) goto 170; 160: ergebnis[praesum[i] - 1] = werte[i]; 170: i++; 180: goto 140; 190: return ergebnis;
26 Lösung: Kontrollflussgraph 000: private char[] kompaktifizieren(char[] werte) 010: boolean[] istzeichen = new boolean[werte.length]; 020: int[] praesum = new int[werte.length]; 030: int i = 0; 040: if not (i < werte.length) goto 120; 050: if not (!Character.isWhitespace(werte[i])) goto 080; 060: istzeichen[i] = true; 070: praesum[i] = 1; 080: if not (i > 0) goto 100; 090: praesum[i] += praesum[i - 1]; 100: i++; 110: goto 040; 120: char[] ergebnis = new char[/*...*/]; 130: i = 0; 140: if not (i < werte.length) goto 190; 150: if not (istzeichen[i]) goto 170; 160: ergebnis[praesum[i] - 1] = werte[i]; 170: i++; 180: goto 140; 190: return ergebnis; n start n 1 boolean[] istzeichen = new boolean[werte.length]; int[] praesum = new int[werte.length]; int i = 0; n stopp Eingabe: char[] werte n 2 if(i < werte.length) F T n 3 if(!character.iswhitespace(werte[i])) F T n 4 istzeichen[i] = true; praesum[i] = 1; n 5 if(i > 0) F T n 7 n 6 i++; n 8 char[] ergebnis = new char[/* */]; i = 0; n 9 if (i < werte.length) F T n 10 if (istzeichen[i]) F T i++; n 12 praesum[i] += praesum[i - 1]; ergebnis[praesum[i] - 1] = werte[i]; n 11 return ergebnis Klausur Softwaretechnik 1 Sommersemester 2011 Seite 7 von 11
27 Überdeckungstests (1) Anweisungsüberdeckung (engl. statement coverage) Die Anweisungsüberdeckung verlangt die Ausführung aller Grundblöcke eines Programms. Alle Knoten im Kontrollflussgraphen min. einmal durchlaufen Michael Hoff 6. Tutorium /34
28 Überdeckungstests (1) Anweisungsüberdeckung (engl. statement coverage) Die Anweisungsüberdeckung verlangt die Ausführung aller Grundblöcke eines Programms. Alle Knoten im Kontrollflussgraphen min. einmal durchlaufen Zweigüberdeckung (engl. branch covergage) Die Zweigüberdeckung verlangt das Traversieren aller Zweige im Programm. Alle Kanten im Kontrollflussgraphen min. einmal durchlaufen Michael Hoff 6. Tutorium /34
29 Überdeckungstests (1) Anweisungsüberdeckung (engl. statement coverage) Die Anweisungsüberdeckung verlangt die Ausführung aller Grundblöcke eines Programms. Alle Knoten im Kontrollflussgraphen min. einmal durchlaufen Zweigüberdeckung (engl. branch covergage) Die Zweigüberdeckung verlangt das Traversieren aller Zweige im Programm. Alle Kanten im Kontrollflussgraphen min. einmal durchlaufen Pfadüberdeckung (engl. path coverage) Die Pfadüberdeckung fordert die Ausführung aller möglichen unterschiedlichen Pfade im Programm. Alle vollständigen Pfade im Kontrollflussgraphen durchlaufen (kritisch!) Michael Hoff 6. Tutorium /34
30 Überdeckungstests: Aufgabe n start Eingabe: char[] werte n 1 boolean[] istzeichen = new boolean[werte.length]; int[] praesum = new int[werte.length]; int i = 0; Anweisungsüberdeckung: Eingabe = {?} Zweigüberdeckung: Eingabe = {?} n 2 if(i < werte.length) F T n 3 if(!character.iswhitespace(werte[i])) F T n 4 istzeichen[i] = true; praesum[i] = 1; n 5 if(i > 0) F T n 7 n 6 i++; praesum[i] += praesum[i - 1]; n 8 char[] ergebnis = new char[/* */]; i = 0; n 9 if (i < werte.length) F T n 10 if (istzeichen[i]) F T ergebnis[praesum[i] - 1] = werte[i]; n 11 i++; n 12 n stopp return ergebnis
31 Überdeckungstests: Aufgabe n start Eingabe: char[] werte n 1 boolean[] istzeichen = new boolean[werte.length]; int[] praesum = new int[werte.length]; int i = 0; Anweisungsüberdeckung: Eingabe = { b, } (Beispiel) Zweigüberdeckung: Eingabe = {?} n 2 if(i < werte.length) F T n 3 if(!character.iswhitespace(werte[i])) F T n 4 istzeichen[i] = true; praesum[i] = 1; n 5 if(i > 0) F T n 7 n 6 i++; praesum[i] += praesum[i - 1]; n 8 char[] ergebnis = new char[/* */]; i = 0; n 9 if (i < werte.length) F T n 10 if (istzeichen[i]) F T ergebnis[praesum[i] - 1] = werte[i]; n 11 i++; n 12 n stopp return ergebnis
32 Überdeckungstests: Aufgabe n start Eingabe: char[] werte n 1 boolean[] istzeichen = new boolean[werte.length]; int[] praesum = new int[werte.length]; int i = 0; Anweisungsüberdeckung: Eingabe = { b, } (Beispiel) Zweigüberdeckung: Eingabe = { b, } (Beispiel) n 2 if(i < werte.length) F T n 3 if(!character.iswhitespace(werte[i])) F T n 4 istzeichen[i] = true; praesum[i] = 1; n 5 if(i > 0) F T n 7 n 6 i++; praesum[i] += praesum[i - 1]; n 8 char[] ergebnis = new char[/* */]; i = 0; n 9 if (i < werte.length) F T n 10 if (istzeichen[i]) F T ergebnis[praesum[i] - 1] = werte[i]; n 11 i++; n 12 n stopp return ergebnis
33 Überdeckungstests: Aufgabe n start Eingabe: char[] werte n 1 boolean[] istzeichen = new boolean[werte.length]; int[] praesum = new int[werte.length]; int i = 0; Anweisungsüberdeckung: Eingabe = { b, } (Beispiel) Zweigüberdeckung: Eingabe = { b, } (Beispiel) Durchlaufener Pfad:? n 2 if(i < werte.length) F T n 3 if(!character.iswhitespace(werte[i])) F T n 4 istzeichen[i] = true; praesum[i] = 1; n 5 if(i > 0) F T n 7 n 6 i++; praesum[i] += praesum[i - 1]; n 8 char[] ergebnis = new char[/* */]; i = 0; n 9 if (i < werte.length) F T n 10 if (istzeichen[i]) F T ergebnis[praesum[i] - 1] = werte[i]; n 11 i++; n 12 n stopp return ergebnis
34 Überdeckungstests: Aufgabe n start Eingabe: char[] werte Anweisungsüberdeckung: Eingabe = { b, } (Beispiel) Zweigüberdeckung: Eingabe = { b, } (Beispiel) Durchlaufener Pfad: n start, n 1, n 2, n 3, n 4, n 5, n 7, n 2, n 3, n 5, n 6, n 7, n 2, n 8, n 9, n 10, n 11, n 12, n 9, n 10, n 12, n stopp n 1 boolean[] istzeichen = new boolean[werte.length]; int[] praesum = new int[werte.length]; int i = 0; n 2 if(i < werte.length) F T n 3 if(!character.iswhitespace(werte[i])) F T n 4 istzeichen[i] = true; praesum[i] = 1; n 5 if(i > 0) F T n 7 n 6 i++; praesum[i] += praesum[i - 1]; n 8 char[] ergebnis = new char[/* */]; i = 0; n 9 if (i < werte.length) F T n 10 if (istzeichen[i]) F T ergebnis[praesum[i] - 1] = werte[i]; n 11 i++; n 12 n stopp return ergebnis
35 Überdeckungstests (3) Einfache Bedingungsüberdeckung Die einfache Bedingsüberdeckung fordert, dass jede atomare Bedingung einmal zu true und einmal zu false ausgewertet wird. Michael Hoff 6. Tutorium /34
36 Überdeckungstests (3) Einfache Bedingungsüberdeckung Die einfache Bedingsüberdeckung fordert, dass jede atomare Bedingung einmal zu true und einmal zu false ausgewertet wird. Mehrfache Bedingungsüberdeckung Die mehrfache Bedingungsüberdeckung fordert, dass die atomaren Bedingungen mit allen möglichen Kombinationen der beiden Wahrheitswerte belegt werden. Bei n atomaren Bedingungen: 2 n Tests erforderlich Michael Hoff 6. Tutorium /34
37 Überdeckungstests (4) Minimal-mehrfache Bedingungsüberdeckung Die minimal-mehrfache Bedingungsüberdeckung fordert, dass jede Bedingung jeweils mit beiden Wahrheitswerten belegt werden muss. Enthält die Zweigüberdeckung Michael Hoff 6. Tutorium /34
38 Überdeckungstests (4) Beispiel: Menge von Eingaben für die einfache/mehrfache/minimal-mehrfache BÜ? // A, B und C seien atomare Bedingungen if ((A && B) C) { // aktion 1 } else { // aktion 2 } Michael Hoff 6. Tutorium /34
39 Überdeckungstests (4) Beispiel: Menge von Eingaben für die einfache/mehrfache/minimal-mehrfache BÜ? // A, B und C seien atomare Bedingungen if ((A && B) C) { // aktion 1 } else { // aktion 2 } E e = {101, 010} Michael Hoff 6. Tutorium /34
40 Überdeckungstests (4) Beispiel: Menge von Eingaben für die einfache/mehrfache/minimal-mehrfache BÜ? // A, B und C seien atomare Bedingungen if ((A && B) C) { // aktion 1 } else { // aktion 2 } E e = {101, 010}, E m = {000, 001, 010,..., 111}, Michael Hoff 6. Tutorium /34
41 Überdeckungstests (4) Beispiel: Menge von Eingaben für die einfache/mehrfache/minimal-mehrfache BÜ? // A, B und C seien atomare Bedingungen if ((A && B) C) { // aktion 1 } else { // aktion 2 } E e = {101, 010}, E m = {000, 001, 010,..., 111}, E mm = {111, 000} Michael Hoff 6. Tutorium /34
42 Subsumieren von Überdeckungen Subsumieren Ein Testverfahren für Kriterium x subsumiert ein Testverfahren für Kriterium y, wenn jede Menge von Pfaden, die Kriterium x erfüllt, auch Kriterium y erfüllt. Michael Hoff 6. Tutorium /34
43 Subsumieren von Überdeckungen Subsumieren Ein Testverfahren für Kriterium x subsumiert ein Testverfahren für Kriterium y, wenn jede Menge von Pfaden, die Kriterium x erfüllt, auch Kriterium y erfüllt. Aufgabe: Was ist die Subsumierungsreihenfolge der Überdeckungstestverfahren? Michael Hoff 6. Tutorium /34
44 Subsumieren von Überdeckungen Michael Hoff 6. Tutorium /34
45 Prüfungsfragen
46 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Michael Hoff 6. Tutorium /34
47 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Michael Hoff 6. Tutorium /34
48 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Dynamische Testverfahren können die Korrektheit des Codes belegen. Michael Hoff 6. Tutorium /34
49 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Dynamische Testverfahren können die Korrektheit des Codes belegen. Michael Hoff 6. Tutorium /34
50 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Dynamische Testverfahren können die Korrektheit des Codes belegen. Ein Kontrollfaden (Thread) besitzt in Java stets einen eigenen Keller (Stack) sowie einen eigenen Programmzähler (Program counter). Michael Hoff 6. Tutorium /34
51 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Dynamische Testverfahren können die Korrektheit des Codes belegen. Ein Kontrollfaden (Thread) besitzt in Java stets einen eigenen Keller (Stack) sowie einen eigenen Programmzähler (Program counter). Michael Hoff 6. Tutorium /34
52 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Dynamische Testverfahren können die Korrektheit des Codes belegen. Ein Kontrollfaden (Thread) besitzt in Java stets einen eigenen Keller (Stack) sowie einen eigenen Programmzähler (Program counter). Kontrollflussorientierte Tests und datenflussorientierte Tests gehören zu der statischen Analyse von Programmen. Michael Hoff 6. Tutorium /34
53 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Dynamische Testverfahren können die Korrektheit des Codes belegen. Ein Kontrollfaden (Thread) besitzt in Java stets einen eigenen Keller (Stack) sowie einen eigenen Programmzähler (Program counter). Kontrollflussorientierte Tests und datenflussorientierte Tests gehören zu der statischen Analyse von Programmen. Michael Hoff 6. Tutorium /34
54 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Dynamische Testverfahren können die Korrektheit des Codes belegen. Ein Kontrollfaden (Thread) besitzt in Java stets einen eigenen Keller (Stack) sowie einen eigenen Programmzähler (Program counter). Kontrollflussorientierte Tests und datenflussorientierte Tests gehören zu der statischen Analyse von Programmen. Durchsichten sind auf Code und Testfälle anwendbar. Michael Hoff 6. Tutorium /34
55 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Dynamische Testverfahren können die Korrektheit des Codes belegen. Ein Kontrollfaden (Thread) besitzt in Java stets einen eigenen Keller (Stack) sowie einen eigenen Programmzähler (Program counter). Kontrollflussorientierte Tests und datenflussorientierte Tests gehören zu der statischen Analyse von Programmen. Durchsichten sind auf Code und Testfälle anwendbar. Michael Hoff 6. Tutorium /34
56 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Dynamische Testverfahren können die Korrektheit des Codes belegen. Ein Kontrollfaden (Thread) besitzt in Java stets einen eigenen Keller (Stack) sowie einen eigenen Programmzähler (Program counter). Kontrollflussorientierte Tests und datenflussorientierte Tests gehören zu der statischen Analyse von Programmen. Durchsichten sind auf Code und Testfälle anwendbar. Ein Algorithmus der in 4 Teile aufgeteilt ist, welche parallel abgearbeitet werden können, benötigt 1/4 der Ausführungszeit, die der Algorithmus sequentiell implementiert benötigen würde. Michael Hoff 6. Tutorium /34
57 Prüfungsfragen Moderne Betriebssysteme können einen Deadlock in einem laufenden Programm erkennen und darauf reagieren. Dynamische Testverfahren können die Korrektheit des Codes belegen. Ein Kontrollfaden (Thread) besitzt in Java stets einen eigenen Keller (Stack) sowie einen eigenen Programmzähler (Program counter). Kontrollflussorientierte Tests und datenflussorientierte Tests gehören zu der statischen Analyse von Programmen. Durchsichten sind auf Code und Testfälle anwendbar. Ein Algorithmus der in 4 Teile aufgeteilt ist, welche parallel abgearbeitet werden können, benötigt 1/4 der Ausführungszeit, die der Algorithmus sequentiell implementiert benötigen würde. Michael Hoff 6. Tutorium /34
58 Aktuelles Übungsblatt
59 Fragen?
60 Ende Michael Hoff 6. Tutorium /34
Softwaretechnik 1 Tutorium
Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Softwaretechnik 1 Tutorium 06. Juli 2009 Matthias Thoma (s_thoma@ira.uka.de) Heute Übungsblatt Nr. 4 + Übungsblatt Nr. 5 Softwarequalität
MehrProbeklausur Softwareengineering SS 15
Probeklausur Softwareengineering SS 15 Hinweis: Die Bearbeitungsdauer entspricht dem Punktewert. Aufgabe 1 (10 min) Beschreiben Sie das Vorgehensmodell Test-Driven-Development (TDD) a) Erläutern Sie das
MehrSysteme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss
Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige
MehrMonitore. Klicken bearbeiten
Sascha Kretzschmann Institut für Informatik Monitore Formatvorlage und deren Umsetzung des Untertitelmasters durch Klicken bearbeiten Inhalt 1. Monitore und Concurrent Pascal 1.1 Warum Monitore? 1.2 Monitordefinition
MehrWhitebox-Tests: Allgemeines
-Tests: Allgemeines Andere Bezeichnungen Logic driven, Strukturelles Der Tester entwickelt Testfälle aus einer Betrachtung der Ablauflogik des Programms unter Berücksichtigung der Spezifikation Intuitiv
MehrKapitel 4. Monitore und wechselseitiger Ausschluss
Seite 1 Kapitel 4 Monitore und wechselseitiger Ausschluss Prof. Dr. Rolf Hennicker 28.05.2015 4.1 Interferenzen Seite 2 Parallel ablaufende Prozesse können sich gegenseitig (störend) beeinflussen. Beispiel
MehrDomänenmodell: Fadenkommunikation und -synchronisation
Domänenmodell: Fadenkommunikation und -synchronisation Alexander Humphreys, Reinhard Rösch, Fabian Scheler 15. Mai 2003 Inhaltsverzeichnis 1 Domänendefinition 1 2 Domänenlexikon 1 3 Konzeptmodelle 4 4
MehrSoftwarelösungen: Versuch 4
Softwarelösungen: Versuch 4 Nichtstun in Schleife wird ersetzt durch zeitweilige Zurücknahme der Anforderung, um es anderen Prozessen zu erlauben, die Ressource zu belegen: /* Prozess 0 */ wiederhole flag[0]
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrObjektorientierte Programmierung für Anfänger am Beispiel PHP
Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten
MehrVerhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
MehrEinführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005
Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm
MehrJava Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
MehrProzeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen
Seite 8 A UFGABE 11 INTERP ROZEßKOMMUNIKATION Das folgende Petrinetz zeigt zwei verkoppelte Prozesse P1 und P2. Die Transitionen a und b beschreiben Aktionen von P1, die Transitionen c und d Aktionen von
MehrÜbungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen
Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe
Mehr5. Tutorium zu Programmieren
5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrÜbung: Verwendung von Java-Threads
Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrObjektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
MehrJava Kurs für Anfänger Einheit 4 Klassen und Objekte
Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse
Mehr13. Tutorium zu Programmieren
13. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2009 by IPD Snelting
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
MehrVerteilte Systeme CS5001
Verteilte Systeme CS5001 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Client-Server-Anwendungen: Vom passiven (shared state) Monitor zum aktiven Monitor Monitor (Hoare, Brinch-Hansen,
MehrVBA-Programmierung: Zusammenfassung
VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung
MehrUniversität Karlsruhe (TH)
Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Cluster-Praktikum Sommersemester 2007 Transparent Replizierte Objekte in JavaParty Institut für Programmstrukturen und Datenorganisation
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
MehrEine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.
Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,
MehrProgrammieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen
Programmieren 10. Tutorium 4./ 5. Übungsblatt Inhalt I. Übungsblatt 4 II. III. - Rückgabe und Besprechung - Vorbereitung auf Wiederholung/ Nachtrag - Operatorpräzedenzen IV. Übungsblatt 5 - Vorstellung
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
MehrProf. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)
Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen
MehrÜbersicht Programmablaufsteuerung
Übersicht Programmablaufsteuerung Konditionale Verzweigung: if - else switch-anweisung Schleifenkonstrukte: while, do - while for Schleife Sprung-Anweisungen: break, continue, goto, return Anweisungen
MehrKlausur zur Einführung in die objektorientierte Programmierung mit Java
Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
MehrDer Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.
Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.
MehrÜbungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag
Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:
MehrAutorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente
Autorisierung Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente Dokumentation zum Referat von Matthias Warnicke und Joachim Schröder Modul: Komponenten basierte Softwareentwickelung
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
MehrPrinzipien Objektorientierter Programmierung
Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................
Mehr2015-06-11 Tagesprogramm
1 2015-06-11 Tagesprogramm Design-by-Contract 2 Vertragspartner Anbieter (Server) bietet Leistungen (Services) an Kunde (Client) nimmt von Anbietern angebotene Leistungen in Anspruch Details der Inanspruchnahme
MehrSoftware Engineering Interaktionsdiagramme
Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe)
MehrSuchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Suchbäume Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative
MehrJava: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
MehrVgl. Oestereich Kap 2.7 Seiten 134-147
Vgl. Oestereich Kap 2.7 Seiten 134-147 1 Sequenzdiagramme beschreiben die Kommunikation/Interaktion zwischen den Objekten (bzw. verschiedenen Rollen) eines Szenarios. Es wird beschrieben, welche Objekte
MehrGrundlagen von Python
Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren
MehrInformatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-
Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik
MehrClient-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
MehrEinstieg in die Informatik mit Java
1 / 14 Einstieg in die Informatik mit Java Swing Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 14 1 Einführendes Beispiel 2 Eigenschaften von Swing 3 Typisches Swing-Applet
MehrComputeranwendung und Programmierung (CuP)
Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag
MehrWindows Server 2008 (R2): Anwendungsplattform
Mag. Christian Zahler, Stand: August 2011 13 14 Mag. Christian Zahler, Stand: August 2011 Mag. Christian Zahler, Stand: August 2011 15 1.5.2 Remotedesktop-Webverbindung Windows Server 2008 (R2): Anwendungsplattform
MehrArchitektur Verteilter Systeme Teil 2: Prozesse und Threads
Architektur Verteilter Systeme Teil 2: Prozesse und Threads 21.10.15 1 Übersicht Prozess Thread Scheduler Time Sharing 2 Begriff Prozess und Thread I Prozess = Sequentiell ablaufendes Programm Thread =
Mehr5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:
5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel Beispiel (3) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Probleme des Implementierungsvorschlags:
MehrJavadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
MehrDIE SCHRITTE ZUR KORREKTEN LIZENZIERUNG
Datacenter für Itanium-basierte Systeme Einsatz in virtuellen Umgebungen Für die Lizenzbestimmungen spielt es keine Rolle, welche Art der Virtualisierung genutzt wird: Microsoft Virtual Server, Microsoft
MehrFachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6
Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in
MehrTutorium Rechnerorganisation
Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
MehrTutorial Moodle 2 globale Gruppen bzw. Kohorten
Tutorial Moodle 2 globale Gruppen bzw. Kohorten Im folgenden Tutorial geht es um das Erstellen und die Zuweisung von globalen Gruppen (auch Kohorten in Moodle 2.x genannt). Diese globalen Gruppen werden
MehrInhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER
AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...
MehrÜberblick. Lineares Suchen
Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität
MehrMusterlösungen zur Klausur Informatik 3
Musterlösungen zur Klausur Informatik 3 Justus-Liebig-Universität Gießen Wintersemester 2003/2004 Aufgabe 1 (6 Punkte) Man kreuze bei den folgenden Deklarationen und Definitionen jeweils an, ob sie aus
MehrPropädeutikum. Dipl.-Inf. Frank Güttler
Propädeutikum 2015 Vorbereitungskurs Informatikstudium Erfolgreich Studieren Programmieren (C-Kurs) guettler@informatik.uni-leipzig.de Universität Leipzig Institut für Informatik Technische Informatik
MehrSEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
MehrAnleitung zur Nutzung des SharePort Utility
Anleitung zur Nutzung des SharePort Utility Um die am USB Port des Routers angeschlossenen Geräte wie Drucker, Speicherstick oder Festplatte am Rechner zu nutzen, muss das SharePort Utility auf jedem Rechner
MehrEinführung in die Programmierung Blockkurs Java
Michael Bader 8. 12. April 2002 Freitag Inhaltsübersicht Exceptions und Errors Ausnahmebehandlung: try/catch/finally Threads Zugriffskontrolle bei gemeinsamen Variablen: synchronized, wait(), notify()
MehrSEQUENZDIAGRAMM. Christoph Süsens
SEQUENZDIAGRAMM Christoph Süsens DEFINITION Das Sequenzdiagramm gibt Auskunft darüber: Welche Methoden für die Kommunikation zwischen ausgewählten Objekten zuständig sind. Wie der zeitliche Ablauf von
MehrAlgorithmen & Datenstrukturen 1. Klausur
Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse
MehrTevalo Handbuch v 1.1 vom 10.11.2011
Tevalo Handbuch v 1.1 vom 10.11.2011 Inhalt Registrierung... 3 Kennwort vergessen... 3 Startseite nach dem Login... 4 Umfrage erstellen... 4 Fragebogen Vorschau... 7 Umfrage fertigstellen... 7 Öffentliche
MehrKlassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java
Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte
MehrDialognetze. Ziel : Beschreibung von Methoden und Beschreibungstechniken für den Entwurf und die Dokumentation von Dialogabläufen
Dialognetze Ziel : Beschreibung von Methoden und Beschreibungstechniken für den Entwurf und die Dokumentation von Dialogabläufen Dialogabläufe auf Fensterebene "grobe Dialogabläufe" d.h. Wechsel zwischen
MehrGraphic Coding. Klausur. 9. Februar 2007. Kurs A
Graphic Coding Klausur 9. Februar 2007 Kurs A Name: Matrikelnummer: Hinweise - Es sind keine Hilfsmaterialien erlaubt. (Keine Bücher, Taschenrechner, Handys) - Sie haben zwei Stunden Zeit. - Insgesamt
MehrLehrer: Einschreibemethoden
Lehrer: Einschreibemethoden Einschreibemethoden Für die Einschreibung in Ihren Kurs gibt es unterschiedliche Methoden. Sie können die Schüler über die Liste eingeschriebene Nutzer Ihrem Kurs zuweisen oder
MehrJetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.
Teil B: Erweiterungen Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen. Die folgenden Aufgaben und Ausführungen geben einige Hilfestellungen, welche (mindestens
MehrDiese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.
Anmeldung http://www.ihredomain.de/wp-admin Dashboard Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Das Dashboard gibt Ihnen eine kurze Übersicht, z.b. Anzahl der Beiträge,
MehrSoftwaretechnologie -Wintersemester 2013/2014 - Dr. Günter Kniesel
Übungen zur Vorlesung Softwaretechnologie -Wintersemester 2013/2014 - Dr. Günter Kniesel Übungsblatt 3 - Lösungshilfe Aufgabe 1. Klassendiagramme (9 Punkte) Sie haben den Auftrag, eine Online-Videothek
MehrJava Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7
Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck
MehrInformatik 2 Labor 2 Programmieren in MATLAB Georg Richter
Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter Aufgabe 3: Konto Um Geldbeträge korrekt zu verwalten, sind zwecks Vermeidung von Rundungsfehlern entweder alle Beträge in Cents umzuwandeln und
MehrEinführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005
Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der
MehrOpenMP am Beispiel der Matrizenmultiplikation
OpenMP am Beispiel der Matrizenmultiplikation David J. Meder, Dr. Victor Pankratius IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe
Mehr5. Abstrakte Klassen
5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Vogel Amsel Drossel Fink Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg,
MehrEinfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"
MehrKlausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.
Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 Klausurteilnehmer Name: Matrikelnummer: Wichtige Hinweise Es sind keinerlei Hilfsmittel zugelassen auch keine Taschenrechner! Die Klausur dauert
MehrBenutzerverwaltung Business- & Company-Paket
Benutzerverwaltung Business- & Company-Paket Gemeinsames Arbeiten mit der easyfeedback Umfragesoftware. Inhaltsübersicht Freischaltung des Business- oder Company-Paketes... 3 Benutzerverwaltung Business-Paket...
MehrSS 2010. Björn Berezowski B.Sc. Marco Münch B.Sc. Michael Roth B.Sc. Repetitorium PG 1. Übungsblatt. 1 Übung - Probeklausur SS 2010 Typ Prof.
SS 2010 Björn Berezowski B.Sc. Marco Münch B.Sc. Michael Roth B.Sc. Repetitorium PG 1 Übungsblatt 1 Übung - Probeklausur SS 2010 Typ Prof.Humm Aufgabe : Bank-Verwaltungs-System In dieser Klausur werden
MehrGrundlagen verteilter Systeme
Universität Augsburg Insitut für Informatik Prof. Dr. Bernhard Bauer Wolf Fischer Christian Saad Wintersemester 08/09 Übungsblatt 3 12.11.08 Grundlagen verteilter Systeme Lösungsvorschlag Aufgabe 1: a)
MehrÜbung 9 - Lösungsvorschlag
Universität Innsbruck - Institut für Informatik Datenbanken und Informationssysteme Prof. Günther Specht, Eva Zangerle Besprechung: 15.12.2008 Einführung in die Informatik Übung 9 - Lösungsvorschlag Aufgabe
MehrUpgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)
Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10 Technische Informationen (White Paper) Inhaltsverzeichnis 1. Über dieses Dokument... 3 2. Überblick... 3 3. Upgrade Verfahren... 4
MehrDatenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen
Mehr14.4.2016. Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt
14.4.2016 Technische Hochschule Georg Agricola WORKSHOP TEIL 3 IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt Inhaltsverzeichnis 1. Kurzfassung zur Projekterstellung... 2 2. Morse-Tabelle...
MehrGrundbegriffe der Informatik
Grundbegriffe der Informatik Tutorium 27 29..24 FAKULTÄT FÜR INFORMATIK KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Definition
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22
Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften
MehrÜbung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse
Übung 03: Schleifen Abgabetermin: xx.xx.xxxx Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Prähofer) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch Aufgabe 03.1 12
MehrApplet Firewall und Freigabe der Objekte
Hauptseminar Applet Firewall und Freigabe der Objekte Nachweis von Sicherheitseigenschaften für JavaCard Jin Zhou Ein Überblick über diesen Vortrag Applet Firewall Kontext JCRE Entry Point Objekt Shareable
MehrAnleitung RÄUME BUCHEN MIT OUTLOOK FÜR VERWALTUNGSANGESTELLTE
Anleitung RÄUME BUCHEN MIT OUTLOOK FÜR VERWALTUNGSANGESTELLTE Dezernat 6 Abteilung 4 Stand: 14.Oktober 2014 Inhalt 1. Einleitung 3 2. Räume & gemeinsame Termine finden 3 3. Rüstzeit 8 4. FAQ: Oft gestellte
MehrParallelität, Threads
Parallelität, Threads Tutorium 17 Fabian Miltenberger 30.06.2014 INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD) KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum
MehrProgrammierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland.
1 Programmierung 2 Übersetzer: Code-Erzeugung Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 Bytecodes Der Java Übersetzer erzeugt keine Maschinensprache
MehrSeite 20-21 Wo finde ich die Landingpage Auswahl? Seite 22-24 Wie aktiviere ich eine Landingpage? Seite
Gesamte Anleitung Dashboard Seite 2-3 Meine Kontakte Seite 4-5 Wie lege ich eine neue Gruppe an bzw. ändere den Namen? Seite 6-7 Wie lege ich einen neuen Kontakt an? Seite 8-9 Wie ordne ich Kunden einem
MehrAufgabenblatt Nr. 5 Generizität und TicTacToe
Aufgabenblatt Nr. 5 Generizität und TicTacToe 1 Generische Sortier-Methode 1.1 Aufgabe: Entwickeln einer generischen Sortiermethode für Objekte mit der Schnittstelle Comparable Ihnen ist aus der Vorlesung
MehrC++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet
C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()
MehrSoftwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch
Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen Alexander Schunk Henry Trobisch Inhalt 1. Vergleich der Unit-Tests... 2 2. Vergleich der Codeabdeckungs-Tests... 2 3. Vergleich
Mehr