CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik)
|
|
- Elmar Burgstaller
- vor 8 Jahren
- Abrufe
Transkript
1 Prof. Dr. Th. Letschert CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik) Vorlesung 4 Th Letschert FH Gießen-Friedberg
2 Nebenläufige und verteilte Programme 2
3 : Thread-Pools Motivation: Möglichkeiten und Grenzen von Thread-Pools Szenario einer Thread-Pool-Verwendung Weitgehend unabhängige Aufgaben wollen erledigt sein Jeder Aufgabe wird ein zur Erledigung ein Thread zugewiesen Pool verhindert Überlastung des Systems: Zuweisung von Aufgaben an Threads wird begrenzt manche Aufgaben müssen auf Erledigung erst einmal warten unproblematisch bei unabhängigen Aufgaben Problem Pools sind nicht geeignet wenn die Aufgaben Teil eines Gesamtalgorithmus sind und nur alle oder keine Aufgabe erledigt werden kann Pool muss groß genug sein um alle Threads aktivieren zu können 3
4 : Thread-Pools Motivation: Grenzen von Thread-Pools Beispiel Fibonacci-Zahlen parallel / rekursiv import java.util.concurrent.executor; import java.util.concurrent.executors; public class FibonacciExecutor { private static Executor ex = Executors.newFixedThreadPool( Runtime.getRuntime().availableProcessors()*4); private static class FibTask implements Runnable { private int x; private long result; private boolean available = false; public FibTask(int x) { this.x = x; synchronized long getresult() throws InterruptedException { while (!available) { wait(); return result; private synchronized void setresult(long res) { result = res; available = true; notify(); public void run() { if (x < 2) setresult(1); else { FibTask fiba = new FibTask(x - 1); ex.execute(fiba); FibTask fibb = new FibTask(x - 2); ex.execute(fibb); try { setresult(fiba.getresult() + fibb.getresult()); catch (InterruptedException e) { e.printstacktrace(); 4
5 : Thread-Pools Deadlock bei der Berechnung von fib(6) Pool enthält 8 Threads, alle warten auf das Ergebnis eines Sub-Threads. Das wird nie kommen, denn es müssten weitere Threads gestartet werden, aber der Pool ist ausgeschöpft! 6 PoolThreads warten! können nicht erzeugt werden! 5
6 : Framework nutzen ForkJoin Framework JDK 7 bietet die notwendigen Bibliotheken (OpenJDK/JDK 7, ab Milestone M5, 2009/11/12 (build b76)) oder JDK 6 + jsr166y.jar Projekt mit JRE-7 anlegen 6
7 : Framework nutzen ForkJoin Framework JDK 7 bietet die notwendigen Bibliotheken (OpenJDK/JDK 7, ab Milestone M5, 2009/11/12 (b76)) oder JDK 6 + jsr166y.jar 7
8 : Beispiel RecursiveAction import java.util.concurrent.forkjoinpool; import java.util.concurrent.recursiveaction; public class FibSolver extends RecursiveAction { private static final long serialversionuid = 1L; private int res; private int x; Available Processors: 2 Pool size: Instanzen problemlos in einem Pool der Größe 8 public FibSolver(int x) { this.x = x; int getres() { return protected void compute() { if (x < 2) { res = 1; else { FibSolver fib1 = new FibSolver(x 1); FibSolver fib2 = new FibSolver(x 2); invokeall(fib1, fib2); res = fib1.getres() + fib2.getres(); public static void main(string[] args) { final int threadcount = Runtime.getRuntime().availableProcessors() * 4; System.out.println("Available Processors: "+ Runtime.getRuntime().availableProcessors()); System.out.println("Pool size: " + Runtime.getRuntime().availableProcessors() * 4); ForkJoinPool pool = new ForkJoinPool(threadCount); FibSolver fib = new FibSolver(10); pool.invoke(fib); System.out.println(fib.getRes()); NVP 4 8
9 Concurrency JSR-166 Interest Site: interest/ / JSR-166 Bestandteil des JSR-166 Frameworks von Doug Lea API-Spec: Geeignet für Algorithmen die aus vielen gleichzeitig auszuführenden Teilaktionen bestehen die unabhängig voneinander (parallel) bearbeitet werden können und die keinerlei Synchronisations-Code / blockierende Aktionen enthalten (nicht verboten, aber nicht sinnvoll)) Typische Anwendungen: Parallelverarbeitung Teile-und-Herrsche (divide and conquer) Algorithmen Parallele Algorithmen auf Arrays Axiom: Sprachmittel für nebenläufige Anwendungen sind ungeeignet für parallele Anwendungen, auch wenn die elementaren Konstrukte gleich sind. 9
10 Recursive Action / Task RecursiveAction Basisklasse für ergebnislose parallele Berechnungen mit gegenseitig unabhängigen Sub-Berechnungen gleicher Art Ableitungen implementieren void compute() Sub-Berechnungen werden als Instanzen der Ableitung instanziiert und mit invokeall parallel berechnet ForkJoinTask ForkJoinTask invokeall invokeall RecursiveAction RecursiveAction compute compute RecursiveTask RecursiveTask 10
11 Recursive Action Beispiel public class FibAction extends RecursiveAction { private static final long serialversionuid = 1L; private int res; private int x; public FibAction(int x) { this.x = x; public int getres() { return protected void compute() { if (x < 2) res = 1; else { FibAction fib1 = new FibAction(x 1); FibAction fib2 = new FibAction(x 2); invokeall(fib1, fib2); res = fib1.getres() + fib2.getres(); ForkJoinTask ForkJoinTask invokeall invokeall RecursiveAction RecursiveAction RecursiveTask void compute(): RecursiveTask compute(): void FibAction FibAction void compute(): compute(): void 11
12 Recursive Action / Task RecursiveTask Basisklasse für parallele Berechnungen mit Ergebnis mit gegenseitig unabhängigen Sub-Berechnungen gleicher Art Ableitungen implementieren void compute() Sub-Berechnungen werden als Instanzen der Ableitung instanziiert mit invokeall parallel berechnet und mit join abgholt ForkJoinTask ForkJoinTask invokeall invokeall join join RecursiveAction RecursiveAction RecursiveTask RecursiveTask : V compute() compute() :V 12
13 ForkJoinTask ForkJoinTask invokeall invokeall join join Recursive Task Beispiel 1 : invokeall import java.util.concurrent.forkjoinpool; import java.util.concurrent.recursivetask; public class FibTask extends RecursiveTask<Integer> { private static final long serialversionuid = 1L; private int x; RecursiveAction RecursiveAction public FibTask(int x) { this.x = protected Integer compute() { if (x <= 2) { return 1; else { FibTask fib1 = new FibTask(x 1); FibTask fib2 = new FibTask(x 2); invokeall(fib1, fib2); return fib1.join() + fib2.join(); public static void main(string[] args) { final int threadcount = Runtime.getRuntime().availableProcessors() * 4; RecursiveTask V RecursiveTask : V compute() compute() :V FibTask FibTask void compute(): compute(): void ForkJoinPool pool = new ForkJoinPool(threadCount); FibTask fib = new FibTask(10); pool.invoke(fib); System.out.println(fib.join()); 13
14 Recursive Task Beispiel 2 : fork / join public class FibTaskFJ extends RecursiveTask<Integer> { private static final long serialversionuid = 1L; private int x; public FibTaskFJ(int x) { this.x = protected Integer compute() { if (x <= 2) { return 1; else { V RecursiveAction RecursiveAction FibTask fib1 = new FibTask(x 1); fib1.fork(); // asynchrone Aktivierung FibTask fib2 = new FibTask(x 2); fib2.fork(); // asynchrone Aktivierung fib1.join(); fib2.join(); try { return fib1.get(25, TimeUnit.MILLISECONDS) + fib2.get(25, TimeUnit.MILLISECONDS); catch (InterruptedException e) { catch (ExecutionException e) { catch (TimeoutException e) { return null; Future Future get get ForkJoinTask ForkJoinTask invokeall invokeall fork fork join join RecursiveTask RecursiveTask : V compute() compute() :V V FibTask FibTask void compute(): compute(): void 14
15 Teile-und-Herrsche Algorithmen Rekursion: Ganz allgemeine Lösungsstrategie: Die Lösung des Gesamt-Problems wird auf die Lösung eines oder mehrerer Teilprobleme reduziert. Induktive Algorithmen: Einfache Form der Rekursion: Algorithmus wird über die Struktur einer induktiven Menge definiert Beispiel: Fakultät Induktive Menge natürliche Zahlen: Basis 0, Induktionsschritt n n+1 Berechnung: Basis 1, Induktiver Berechnungs-Schritt fak(n) fak(n-1) Teile-und-Herrsche Algorithmen: Rekursive Algorithmen die nicht (unbedingt) induktiv sind 15
16 Teile-und-Herrsche Algorithmen Beispiel: Sortieren mit Verschmelzen / Mischen (Mergesort) Sortieren durch rekursives Sortieren von teilsequenzen und anschließendes Mischen Mergesort ist kein induktiver Algorithmus Eine sortierte Folge der Länge n+1 wird (bei diesem Verfahren) nicht aus einer sortierten Folge der Länge n-1 konstruiert. 16
17 Teile-und-Herrsche Beispiel Mergesort private static void mergesort(int[] a, int l, int r) { if (l >= r) return; int m = (l + r) / 2; mergesort(a, l, m); mergesort(a, m + 1, r); merge(a, l, m, r); sequentieller Algorithmus private static class MergeSortAction extends RecursiveAction { private static final long serialversionuid = 1L; private int[] a; private int l; private int r; public MergeSortAction(int[] a, int l, int r) { this.a = a; this.l = l; this.r = protected void compute() { if (l >= r) return; int m = (l + r) / 2; MergeSortAction msl = new MergeSortAction(a, l, m); MergeSortAction msr = new MergeSortAction(a, m + 1, r); invokeall(msl, msr); merge(a, l, m, r); paralleler Algorithmus 17
18 Teile-und-Herrsche Algorithmen Beispiel: Rucksack-Problem (knapsack problem) Aus einer Menge von Gegenständen soll eine Auswahl so in ein Behältnis gepackt werden, dass dessen Fassungsvermögen exakt (oder möglichst gut) ausgenutzt wird. Das Rucksack-Problem ist nicht mit einem induktiven Algorithmus lösbar: Aus einer Lösung für das Fassungsvermögen n kann keine Lösung für das Fassungsvermögen n+1 konstruiert werden Aus einer Lösung für eine Kollektion von n Gegenständen kann keine kann keine Lösung für eine Kollektion von n+1 Gegenständen konstruiert werden Rucksack-Problem als Problem über natürlichen Zahlen Gegeben Eine Sequenz s von natürlichen Zahlen (Gegenstände und ihr Gewicht) Ein Zahl K (das Fassungsvermögen) Gesucht Eine Teilsequenz s' von s derart, dass die Summe der Elemente von s' gleich K ist 18
19 Teile-und-Herrsche Algorithmen Beispiel Teile-und-Herrsche Algorithmus für das Rucksack-Problem def knap(s,k): if k = 0 : return [[]] elseif (k!= 0) and (s = []) : return [] elseif (k = s0) : return [[k]] return knap(tail(s),k) + map(x -> [head(s)] + x, s: Sequenz (Liste) von Zahlen k: Fassungsvermögen knap: nimm Zahlen aus s bilde damit eine Folge der Summe gleich k ist head: Listen-Kopf tail: Listen-Rest +: Zusammenfügen von Listen knap(tail(s),k-head(s))) k = 0: eine Lösung, die leere Kollektion s leer, k!= 0 : keine Lösung s = [k, ] : eine Lösung, [k] sonst Ergebnis: Alle Lösungen für den Rest von s plus Bei allen Lösungen für den Rest von s mit einem um das erste Element von s reduziertem Fassungsvermögen wird das erste Element hinzugefügt. Das ist eine ineffiziente Lösung. Die Effizienz kann mit einer Tabellierung der Zwischenergebnisse erheblich verbessert werden. Diese Technik nennt sich dynamische Programmierung. 19
20 Knapsack Algorithmus als RecursiveTask static class KnapSolver extends RecursiveTask<List<List<Integer>>> { private List<Integer> s; private Integer k; public KnapSolver(List<Integer> s, Integer k) { this.s = s; this.k = protected List<List<Integer>> compute() { if (k == 0) { // eine Lösung, die leere liste List<List<Integer>> res = new LinkedList<List<Integer>>(); res.add(new LinkedList<Integer>()); return res; if (k!= 0 && s.isempty()) { // keine Lösung return new LinkedList<List<Integer>>(); if (k == s.get(0)) { // eine Lösung: [k] List<List<Integer>> res = new LinkedList<List<Integer>>(); List<Integer> l = new LinkedList<Integer>(); l.add(k); res.add(l); return res; //knap(tail(s),k) List<Integer> tail_s = new LinkedList<Integer>(); tail_s.addall(s); tail_s.remove(0); //List<List<Integer>> resa = knapa(tail_s, k); KnapSolver ksa = new KnapSolver(tail_s, k); ksa.fork(); //knap(tail(s),k head(s))) KnapSolver ksb = new KnapSolver(tail_s, k s.get(0)); ksb.fork(); ksa.join(); ksb.join(); List<List<Integer>> resa = null; List<List<Integer>> resb = null; try { resa = ksa.get(); resb = ksb.get(); catch (InterruptedException e) { e.printstacktrace(); catch (ExecutionException e) { e.printstacktrace(); // map for(list<integer> l: resb) { l.add(s.get(0)); // + List<List<Integer>> res = new LinkedList<List<Integer>>(); res.addall(resa); res.addall(resb); return res; 20
21 Map-Reduce Algorithmen / Map-Funktion Map-Funktion: Anwenden einer Abbildungs- (Map) -Funktion auf alle Elemente einer Kollektion def knap(s,k): if k == 0 : return [[]] elseif (k!= 0) and (s == []) : return [] map-funktion elseif (k = s0) : return [[k]] return knap(tail(s),k) [ ] m m [ ] knap(tail(s),k-head(s))) m + map(x -> [head(s)] + x, map-funktion im KnapsackAlgorithmus 21
22 Map-Reduce Algorithmen / Map-Funktion Map-Funktion in Java: public interface FunT2T<T> { T apply (T x); public static <T> List<T> map (FunT2T<T> f, List<T> l) { List<T> res = new LinkedList<T>(); for (T x : l) { res.add(f.apply(x)); return res; public static void main(string[] args) { List<Integer> l = Arrays.asList(new Integer[]{1,2,3,4,5,6,7,8,9,0); l = map(new FunT2T<Integer>() public Integer apply(integer x) { return 2*x;, l); for (int i: l) { System.out.print(i+" "); System.out.println(); 22
23 Map-Reduce Algorithmen / Reduce-Funktion Reduce: Reduziere mit einer reduce-funktion eine Kollekion auf ein einziges Element Beispiel Summenbildung: [1, 2, 3, 4,5] wird mit der Funktion '+' zu 15 reduziert public interface FunTxT2T<T> { T apply (T x, T y); public static <T> T reduce (FunTxT2T<T> f, List<T> l, T start) { T res = start; for (T x : l) { res = f.apply(x, res); return res; public static void main(string[] args) { System.out.println( reduce( new FunTxT2T<Integer>() public Integer apply(integer x, Integer y) { return x+y;, Arrays.asList(new Integer[]{1,2,3,4,5), 0)); 15 23
24 Map-Reduce Kombination aus Map- und Reduce-Funktion Map / Reduce: Muster einer Kontrollstruktur Alle Elemente einer Datenstruktur werden mit einer Map-Funktion m transformiert alle (transformierten ) Elemente mit einer Reduce-Funktion r zusammengefasst map reduce m [ ] m [ ] r m 24
25 Map-Reduce Map-Funktionen können parallel abgearbeitet werden Das Map/Reduce Muster wird meist mit verteilten Rechnern verbunden - viele Maschinen sind gleichzeitig mit einer map-funktion beschäftigt Google hält ein Patent auf eine map/reduce-variante - System and method for efficient large-scale data processing Apache Hadoop Map/Reduce-System ähnlich dem von Google patentierten Das Map/Reduce-Muster kann natürlich auch unverteilt auf Multicore-Systemen realisiert werden... mit Hilfe des s (map parallel, reduce sequentiell) 25
26 Map-Reduce : Map parallelisieren private static class Mapper<T> extends RecursiveAction { private static final long serialversionuid = 1L; private List<T> l; private FunT2T<T> f; private int index; public Mapper(FunT2T<T> f, List<T> l, int index) { this.l = l; this.f = f; this.index = protected void compute() { if (index >= l.size()) { return; l.set(index, f.apply(l.get(index))); Mapper<T> mapper = new Mapper<T>(f, l, index+1); mapper.fork(); mapper.join(); public static <T> List<T> map (final FunT2T<T> f, final List<T> l) { ForkJoinPool pool = new ForkJoinPool(2); pool.submit(new Mapper<T>(f, l, 0)); return l; 26
27 - parallel array ParallelArray / Package extra166y ParallelArray Paralleles arbeiten auf Arrays und anderen Datenkollektionen erfordert Java extra166y und jsr166y download : 27
28 - parallel array ParallelArray Beispiel package test; import jsr166y.forkjoinpool; import extra166y.parallelarray; public class PA { private final static int threadcount = Runtime.getRuntime().availableProcessors() * 4; private final static ForkJoinPool pool = new ForkJoinPool(threadCount); static Double[] a = new Double[]{ 0.1, 0.4, 0.1, 0.4, 0.5, 0.6, 0.7, 3.2, 3.3, 3.2, 3.3, 3.4, 3.5, 3.8, 2.3, 2.2, 2.3, 2.2, 2.3, 2.4, 2.9, 1.4, 1.1, 1.4, 1.1, 1.2, 1.3, 1.0, ; public static void main(string[] args) { ParallelArray<Double> pa = ParallelArray.createUsingHandoff(a, pool); pa.sort(); for (double d : a) { System.out.print(d + " "); System.out.println(); 28
29 - parallel array ParallelArray : Filter Filtern: Eine Kollektion kann mit einen Filterausdruck gefiltert werden Beispiel: package test; import jsr166y.*; import extra166y.*; public class PA { static ForkJoinPool pool = new ForkJoinPool(); static Double[] a = new Double[]{ 2.3, 1.2, 0.3, 2.2, 3.3, 4.4, 5.9, ; public static void main(string[] args) { ParallelArray<Double> pa = ParallelArray.createUsingHandoff(a, pool); ParallelArrayWithFilter<Double> fpa = pa.withfilter(new Ops.Predicate<Double>() public boolean op(double x) { return x < 2; ); Ausgabe: sortierte Folge der Werte kleiner 2 for (double d : fpa.all().sort()) { System.out.print(d + " "); System.out.println(); 29
30 - parallel array ParallelArray : Mapping Mapping: Eine Kollektion kann mit einer Map-Operation modifiziert werden Beispiel: package test; import jsr166y.forkjoinpool; import extra166y.parallelarray; import extra166y.parallelarraywithmapping; import extra166y.ops.op; public class PAF { private final static ForkJoinPool pool = new ForkJoinPool(); static Double[] a = new Double[]{ 2.3, 1.2, 0.3, 2.2, 3.3, 4.4, 5.9, 0.1, 0.4, 0.1, 0.4, 0.5, 0.6, 0.7, 3.2, 2.3, 1.2, 0.3, 3.4, 2.5, 1.8, 6.4, 5.1, 4.4, 3.1, 2.2, 1.3, 0.0 ; public static void main(string[] args) { ParallelArray<Double> pa = ParallelArray.createUsingHandoff(a, pool); ParallelArrayWithMapping<Double, Double> mpa = pa. replacewithmapping(new Op<Double, Double>() public Double op(double x) { return x*10; ); Ausgabe: sortierte Folge der 10-fachen Werte for (double d : mpa.all().sort()) { System.out.print(d + " "); System.out.println(); 30
31 - parallel array ParallelArray : Reduktion Reduktion der Kollektion auf einen Wert mit Spezialfunktion max / min / summary (statistische Übersicht) Beispiel: package test; import jsr166y.forkjoinpool; import extra166y.parallelarray; public class PA { private final static ForkJoinPool pool = new ForkJoinPool(); static Double[] a = new Double[]{ ; public static void main(string[] args) { ParallelArray<Double> pa = ParallelArray.createUsingHandoff(a, pool); System.out.println(pa.max()); System.out.println(pa.min()); System.out.println(pa.summary()); 31
32 - parallel array ParallelArray : Reduktion Reduktion der Kollektion auf einen Wert Beispiel: mit Spezialfunktion max / min package test; import jsr166y.forkjoinpool; import extra166y.parallelarray; import extra166y.ops.reducer; public class PA { private final static ForkJoinPool pool = new ForkJoinPool(); static Double[] a = new Double[]{ ; public static void main(string[] args) { ParallelArray<Double> pa = ParallelArray.createUsingHandoff(a, pool); double sum = pa.reduce(new public Double op(double x, Double y) { return x+y;, 0.0); System.out.println(sum); 32
33 - parallel array ParallelArray Filter- / Abbildungs- / Reduktions-Algorthmen können in einem Ausdruck kombiniert werden. Beispiel : finde große Primzahlen in einem Array: public static void main(string[] args) { ParallelArray<Long> pa = ParallelArray.createUsingHandoff(a, pool); System.out.println( pa.withfilter(islarge).withmapping(computefactors ).all().withfilter(isoneelemented ).all() ); islarge: prüft ob die Zahl groß ist computefactors: berechnet die Primfaktoren isoneelemented: test ob die Liste der Primfaktoren genau ein Element hat. 33
34 - parallel array ParallelArray Alle Operationen können kombiniert werden Insgesamt: Map / Filter / Reduce - Framework mit datenparalleler Implementierung 34
Programmierkurs 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
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"
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,
MehrRekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Rekursion Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Aufgabe 1: Potenzfunktion Schreiben Sie eine Methode, die
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
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
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/
MehrLösungsvorschläge. zu den Aufgaben im Kapitel 4
Lösungsvorschläge zu den Aufgaben im Kapitel 4 Aufgabe 4.1: Der KNP-Algorithmus kann verbessert werden, wenn in der Funktion nexttabelle die Zuweisung next[tabindex] = ruecksprung; auf die etwas differenziertere
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
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
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
MehrÜbung Grundlagen der Programmierung. Übung 05: Arrays. Abgabetermin: xx.xx.xxxx. Java-Programm Testplan Testergebnisse
Übung 05: Arrays Abgabetermin: xx.xx.xxxx Name: Name, Vorname Matrikelnummer: 0XXXXXX Gruppe: G1 (Prähofer) G2 (Wolfinger) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch
MehrDas erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.
Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen
MehrAnleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)
Anleitung Ein einfaches RMI-Beispiel (ab Java.0) c Y. Pfeifer (Juni 014) 1 Ein einfaches RMI-Beispiel Vorgehensweise: 1. Java Projekt anlegen. Zwei Packages server & client erstellen Auf der Server-Seite
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
Mehr188.154 Einführung in die Programmierung für Wirtschaftsinformatik
Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger
MehrGroße Übung Praktische Informatik 1
Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,
MehrPraktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Marcel Preuß, Iman Kamehkhosh, Marc Bury, Diana Howey Übungsblatt
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:
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
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
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
MehrSchedulingund Thread-Ausführer
Schedulingund Thread-Ausführer Scheduling Ein Scheduler arbeitet Programmstücke nach einer festen Zeitspanne oder zu einer fixen Zeitpunkt wiederholt oder einmal ab. Notwendigkeiten für Scheduling sind
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:
MehrII. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
MehrEinführung in die Programmierung
Name, Vorname Matrikelnummer Probeklausur zur Vorlesung Einführung in die Programmierung WS 2008/09 Dauer: 2 Stunden Hinweise: Schreiben Sie Ihren Namen und Ihre Matrikelnummer auf dieses Deckblatt und
MehrProgrammieren in Java
Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang
Mehr2A Basistechniken: Weitere Aufgaben
2A Basistechniken: Weitere Aufgaben 2A.3 Programmierung unter UNIX/Linux 1. Gegeben sind einige Ausschnitte von C-Programmen, die unter UNIX/Linux ausgeführt werden sollen. Beantworten Sie die zugehörigen
MehrEntscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?
Entscheidungsbäume Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Definition Entscheidungsbaum Sei T ein Binärbaum und A = {a 1,..., a n } eine zu sortierenden Menge. T ist ein Entscheidungsbaum
MehrInstitut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode
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,
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........................
MehrProgrammieren I. Kapitel 7. Sortieren und Suchen
Programmieren I Kapitel 7. Sortieren und Suchen Kapitel 7: Sortieren und Suchen Ziel: Varianten der häufigsten Anwendung kennenlernen Ordnung Suchen lineares Suchen Binärsuche oder Bisektionssuche Sortieren
MehrTypdeklarationen. Es gibt in Haskell bereits primitive Typen:
Typdeklarationen Es gibt in bereits primitive Typen: Integer: ganze Zahlen, z.b. 1289736781236 Int: ganze Zahlen mit Computerarithmetik, z.b. 123 Double: Fließkommazahlen, z.b. 3.14159 String: Zeichenketten,
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...
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113
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)
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens 1 Organisatorisches Freitag, 05. Mai 2006: keine Vorlesung! aber Praktikum von 08.00 11.30 Uhr (Gruppen E, F, G, H; Vortestat für Prototyp)
MehrAbschnitt: Algorithmendesign und Laufzeitanalyse
Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher
MehrScala kann auch faul sein
Scala kann auch faul sein Kapitel 19 des Buches 1 Faulheit Faulheit ( lazy evaluation ) ist auch in C oder Java nicht unbekannt int x=0; if(x!=0 && 10/x>3){ System.out.println("In if"); } Nutzen der Faulheit?
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-
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
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
MehrEinführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte
MehrProblemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.
Universität Osnabrück 1 Problemstellung 3 - Objektorientierte Programmierung in Java Vorlesung 24: Reflection 1 SS 2006 Prof. Dr. Frank M. Thiesing, FH Osnabrück Um ein Objekt anzulegen, eine seiner Methoden
MehrSichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben
Sichtbarkeit & statische Methoden Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Nicht sichtbare Methoden Wollen Eltern bestimmte Methoden vor den
MehrJava Einführung Collections
Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...
MehrDie Java Stream API. Funktionale Programmierung mit der Stream API des JDK 1.8. Prof. Dr. Nikolaus Wulff
Die Java Stream API Funktionale Programmierung mit der Stream API des JDK 1.8 Prof. Dr. Nikolaus Wulff Funktionale Programmierung Neben der Collection API mit default Methoden ist als weitere Neuerung
MehrÜbungsblatt 3: Algorithmen in Java & Grammatiken
Humboldt-Universität zu Berlin Grundlagen der Programmierung (Vorlesung von Prof. Bothe) Institut für Informatik WS 15/16 Übungsblatt 3: Algorithmen in Java & Grammatiken Abgabe: bis 9:00 Uhr am 30.11.2015
MehrStudentische Lösung zum Übungsblatt Nr. 7
Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 5 Lösungsvorschlag Objektorientierte Programmierung 22. 05. 2006 Lösung 9 (SMS-Eingabe am
MehrJava Einführung Abstrakte Klassen und Interfaces
Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer
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.
MehrInnere Klassen in Java
Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird
MehrEinführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)
Wintersemester 2007/08 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät für Informatik Lehrstuhl
MehrTest-Driven Design: Ein einfaches Beispiel
Test-Driven Design: Ein einfaches Beispiel Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 2 Ziele Veranschaulichung der Technik des Test-Driven Design am Beispiel eines Programms
MehrJava-Schulung Grundlagen
Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings
MehrU08 Entwurfsmuster (II)
U08 Entwurfsmuster (II) Inhalt der Übung Diskussion und Implementierung von Entwurfsmustern Übungsaufgaben Aufgabe 1 (Queue) Gegeben ist das folgende Analysemodell einer Warteschlange (Queue): Eine Warteschlange
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
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
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
MehrKapiteltests zum Leitprogramm Binäre Suchbäume
Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm
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
MehrAlgorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.
Aufgabe 10 Binäre Bäume a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge, 28, 35, 31, 9, 4,, 17, 37, 25 ein. 1. Einfügen von : 3. Einfugen von 35: 2. Einfügen von 28: 28 28 10. Einfügen
MehrFolge 18 - Vererbung
Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,
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
MehrWillkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java
Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E
MehrC# im Vergleich zu Java
C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung
MehrJava-Programmierung. Remote Method Invocation - RMI
Java-Programmierung Remote Method Invocation - RMI Entwicklungsmethoden Sockets Entwurf verteilter Anwendungen ist relativ aufwändig, da zunächst ein Kommunikationsprotokoll entwickelt werden muss aufwändig
MehrSuchen und Sortieren
(Folie 69, Seite 36 im Skript) 5 6 1 4 Als assoziatives Array geeignet Schlüssel aus geordneter Menge Linke Kinder kleiner, rechte Kinder größer als Elternknoten Externe und interne Knoten Externe Knoten
MehrNebenläufige und verteilte Programme CS2301
Nebenläufige und verteilte Programme CS2301 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Netze mit aktiven und reaktiven Knoten Produzent Konsument: aktiv / passiv / reaktiv
Mehr7. Übung zu Algorithmen und Datenstrukturen
7. Übung zu Algorithmen und Datenstrukturen Dynamisches Programmieren Greedy Algorithms Exceptions 1 Dynamische Programmierung nutzt gezielt aus, dass man bei manchen Problemen den Rechenaufwand extrem
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:
MehrÜbungen zu Softwaretechnik
Prof. Dr. Dr. h.c. M. Broy Lösungsblatt 11 Dr. H. Ehler, S. Wagner 23. Januar 2004 Übungen zu Softwaretechnik Aufgabe 16 Qualitätseigenschaften Broker-Pattern Beurteilen Sie das in Aufgabe 15 benutzte
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 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
MehrAVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:
AVL-Bäume Analyse (Folie 85, Seite 39 im Skript) Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl: 0 falls n = 0 F n = 1 falls
MehrJava Projekt: Tic Tac Toe + GUI
Java Projekt: Tic Tac Toe + GUI Rechnerpraktikum aus Programmierung im WS 2005/06 unter der Leitung von Dr. Michael Hahsler Tadeh Amirian (h0253821) 10.01.2006 1) Problemdefinition Beim TicTacToe Spiel
MehrOperationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2
Operationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2 von Christoph Knabe http://public.beuth-hochschule.de/~knabe/ Ch. Knabe: Operationalisierbare Qualitätskriterien
MehrÜbersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15
Übersicht Schleifen Schleifeninvarianten Referenztypen, Wrapperklassen und API CoMa I WS 08/09 1/15 CoMa I Programmierziele Linux bedienen Code umschreiben strukturierte Datentypen Anweisungen und Kontrollstrukturen
MehrTechnische Universität München SS 2006 Fakultät für Informatik 12. Oktober 2006 Prof. Dr. A. Knoll. Aufgabe 1 Transferfragen (Lösungsvorschlag)
Technische Universität München SS 2006 Fakultät für Informatik 12. Oktober 2006 Prof. Dr. A. Knoll Lösungsvorschläge der Klausur zu Einführung in die Informatik II Aufgabe 1 Transferfragen (Lösungsvorschlag)
MehrDesign Patterns SS 2014 Hausaufgabe 5
Die Aufgaben müssen von jedem Teilnehmer einzeln bearbeitet und abgegeben werden. Die Abgabe muss bis spätestens Montag 26.05.2014 um 23:59 Uhr über unser Hausaufgabenverwaltungssystem https://se.cs.uni-kassel.de/hms/
MehrBeispiel: DB-Mock (1/7)
Beispiel: DB-Mock (1/7) Aufgabe: DB, auf die vereinfachend nur lesend zugeriffen wird mocken warum: benötigte keine DB-Lizenz, garantiert gleiche Werte ohne aufwändiges reset, kein Zeitverlust durch Verbindungsaufbau
MehrThemen. Web Service - Clients. Kommunikation zw. Web Services
Themen Web Service - Clients Kommunikation zw. Web Services Bisher: Implementierung einer Java Anwendung und Bereitstellung durch Apache Axis unter Apache Tomcat Java2WSDL Erzeugen einer WSDL-Datei zur
MehrErreichbarkeit von Klassenelementen. Daten verstecken und kapseln
Daten verstecken und kapseln Sichtbarkeitsmodifikatoren: public Klasse, Variable oder Methode überall sichtbar und damit auch überall benutztbar. private private-variable sind nur in den Methoden sichtbar,
MehrGrundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung
Grundlagen der Programmierung Prof. H. Mössenböck 14. Schrittweise Verfeinerung Entwurfsmethode für Algorithmen Wie kommt man von der Aufgabenstellung zum Programm? Beispiel geg.: Text aus Wörtern ges.:
MehrAGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b
AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität
MehrFolge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12
Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben
MehrSoftwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel
Übungen zur Vorlesung Softwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel Übungsblatt 10 - Lösungshilfe Aufgabe 1. CRC-Karten (7 Punkte) Es geht um die Modellierung der folgenden Bibliotheks-Anwendung:
MehrEinführung in Javadoc
Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:
MehrJavakurs zu Informatik I. Henning Heitkötter
Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,
MehrArrays von Objekten. 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"
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
MehrFachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer
Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,
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
MehrDas Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala
Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:
MehrEndTermTest PROGALGO WS1516 A
EndTermTest PROGALGO WS1516 A 14.1.2016 Name:................. UID:.................. PC-Nr:................ Beachten Sie: Lesen Sie erst die Angaben aufmerksam, genau und vollständig. Die Verwendung von
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
Mehr2.2 Prozesse in Java
2.2 Prozesse in Java! Java sieht kein Schlüsselwort für Prozesse vor, sondern bestimmte Klassen und Schnittstellen. Mit anderen Worten: der Prozessbegriff wird mit Mitteln der Objektorientierung eingeführt.
Mehr