FAKULTÄT FÜR INFORMATIK
|
|
- Dirk Buchholz
- vor 6 Jahren
- Abrufe
Transkript
1 TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2006/2007 Praktikum Grundlagen der Programmierung Lösungsvorschläge zu Blatt 11 F. Forster, M. Petter 22. Januar 2007 Übungen zu Praktikum Grundlagen der Programmierung Aufgabe 46 Fraktale import java. applet.*; import java. awt.*; /** * Applet zum Zeichnen von "Kochschen Schneeflocken" Übungsleitung 1.0 */ public class Fraktal extends Applet implements Runnable { final static int START_WIDTH = 600; final static int BORDER_MARGIN = 10; static int currentiteration = 0; // Monitor zur Synchronisation private Object monitor = new Object (); public void init () { setbackground ( Color. white ); (new Thread(this)). start (); public void paint( Graphics g) { // verschiebt urspruenglichem Koordinatensystem g. translate ( BORDER_MARGIN, BORDER_MARGIN ); // Startwerte double width = START_WIDTH ; double height = ( Math. sqrt (3) * width / 2); synchronized( monitor ){ /* erste Linie: / */ zeichneverbindung (( width / 2), 0, Math. toradians (120), width, currentiteration, g); /* zweite Linie: \ */ zeichneverbindung ( width, height, Math. toradians (240), width, currentiteration, g); /* dritte Linie: _ */ zeichneverbindung (0, height, 0, width, currentiteration, g); public void run (){ // schlafe fuer 2 Sekunden while( currentiteration < 7){ Thread. sleep (2000); catch ( InterruptedException ex) { // zeichnen der naechsten Iteration repaint (); synchronized( monitor ){ currentiteration ++;
2 Lösung 11/ Seite 2 /** * zeichne eine Iteration des Fraktals x horizontale Position des Startpunktes y vertikale Position des Startpunktes winkel Winkel der Verbindungslinie l Länge der Linie iter Iterationschritt g Graphikkontext */ private void zeichneverbindung (double x, double y, double winkel, double l,int iter, Graphics g) { double cos = Math. cos( winkel ); double sin = Math. sin( winkel ); if (iter == 0) { g. drawline ((int) x, (int) y, (int) (x + l * cos), (int) (y + l * sin )); else { // rekurisves Zeichnen der neuen Fraktale // neue Laenge entspricht ein Drittel der urspruenglichen Laenge l = l / 3; // zeichne erste Verbindungslinie zeichneverbindung (x, y, winkel, l, iter -1, g); // zeichne zweite Verbindungslinie double x2 = x + l * cos; double y2 = y + l * sin; double winkel2 = winkel + Math. PI / 3; // Drehung um 60 Grad nach rechts zeichneverbindung (x2, y2, winkel2, l, iter -1, g); // zeichne dritte Verbindungslinie double x3 = x2 + l * Math. cos( winkel2 ); double y3 = y2 + l * Math. sin( winkel2 ); double winkel3 = winkel - Math. PI / 3; // Drehung um 60 Grad nach links zeichneverbindung (x3, y3, winkel3, l, iter -1, g); //zeichne vierte Verbindungslinie double x4 = x + 2 * l * cos; double y4 = y + 2 * l * sin; zeichneverbindung (x4, y4, winkel, l, iter -1, g); Aufgabe 47 Javadoc Klassen, Attribute, Konstruktoren und Methoden. Nicht: Blöcke. Aufbau eines Javadoc-Kommentars: /** [Nur Kommentare, die mit /** beginnen, werden als Javadoc-Kommentar erkannt * [Textuelle Beschreibung der Klasse / des Attributs / der Methode. * Der erste Satz gilt als Überschrift, es sind aber mehrere Sätze möglich.] * * [Es folgen die Tags (siehe nächste Teilaufgabe] *... * **/ [Ende des Kommentars] Erlaube Tags: (unbedingt notwendige Tags sind mit @deprecated
3 Lösung 11/ Seite 3 Die Dokumentation für eine Klasse A generiert man mit javadoc A.java Den Einstieg in die Dokumentation gibt dann die neu erzeugte Datei index.html. Aufgabe 48 Simulation (Lösungsvorschlag) Hier gibt es mehrere Lösungsmöglichkeiten. Die erste Lösung mit Java-API-sleep(): import java. util.*; public class Kasse extends Thread { private int nummer; private int zeitproprodukt ; private Laden laden; private Object monitor; private List <Kunde > schlange = new LinkedList <Kunde >(); private List <Long > zeiten = new LinkedList <Long >(); public Kasse( Laden laden, int nummer, int zeitproprodukt ) { this. laden = laden; this. nummer = nummer; this. zeitproprodukt = zeitproprodukt ; while (true) { // Kunden aus der Schlange nehmen Kunde k; synchronized(this) { if ( schlange. isempty ()) wait (); catch ( InterruptedException ex) { // Wenn der aus dem wait rauskommt ist garantiert etwas in der Schlange, // da hier die einzige Stelle ist an der etwas entnommen wird. k = schlange. remove (0); System. out. println( this + " bediene " + k + ", der " + ( System. currenttimemillis () - zeiten. remove (0)) + " ms in der Schlange verweilte."); // Kunde bedienen int zeit = k. getanzahlprodukte () * zeitproprodukt ; Thread. currentthread (). sleep( zeit ); catch ( InterruptedException ex) { System. out. println(this + " bediene " + k + " // ENDE"); laden. verlassen (); // --Kunde bedienen public synchronized void anstellen ( Kunde k) { schlange. add(k); zeiten. add( System. currenttimemillis ()); notify (); public synchronized int getschlangenlaenge () { return schlange. size (); public String tostring () { return "Kasse(" + nummer + ")"; public class KuerzesteSchlangeTaktik implements Taktik { public int auswahl(int[] schlangenlaengen ) {
4 Lösung 11/ Seite 4 int min = 0; for (int i = 0; i < schlangenlaengen. length; i++) if ( schlangenlaengen [i] < schlangenlaengen [ min ]) min = i; return min; public class Kunde extends Thread { private final Taktik taktik; private final Laden laden; private int nummer; private static int nnummer; private int anzahlprodukte ; public Kunde( Laden laden, Taktik taktik) { this. laden = laden; this. taktik = taktik; nummer = nnummer ++; anzahlprodukte = Ran. ran(1, 100); public Taktik gettaktik () { return taktik; // Laden wird betreten int zeit = anzahlprodukte * Ran. ran (10, 15); Thread. currentthread (). sleep( zeit ); catch ( InterruptedException ex) { laden. anstellen (this); public String tostring () { return " Kunde(" + nummer + "," + anzahlprodukte + ")"; public int getanzahlprodukte () { return anzahlprodukte ; public class Laden { private final Taktik taktik; private final Kasse [] kassen; private int anzahl; public Laden( Taktik taktik, int[] zeitenproprodukt ) { this. taktik = taktik; int len = zeitenproprodukt. length; kassen = new Kasse[ len ]; for (int i = 0; i < len; i++) { Kasse kasse = new Kasse(this, i, zeitenproprodukt [i]); kassen[i] = kasse; kasse.start (); public void verlassen () { if (--anzahl == 0) System. exit (0); public void anstellen ( Kunde k) { int[] schlangenlaengen = new int[ kassen. length ]; for (int i = 0; i < kassen. length; i++) schlangenlaengen [i] = kassen[i]. getschlangenlaenge (); int auswahl = k. gettaktik (). auswahl( schlangenlaengen ); kassen[ auswahl ]. anstellen (k); public void startesimulation (int anzahlkunden ) { anzahl = anzahlkunden ; for (int i = 0; i < anzahlkunden ; i++) {
5 Lösung 11/ Seite 5 if (i!= 0) Thread. currentthread (). sleep( Ran. ran (50, 100)); catch ( InterruptedException ex) { // Neuen Kunden erzeugen Kunde k = new Kunde(this, taktik ); System. out. println(k + " betritt den Laden"); k.start (); // -- Neuen Kunden erzeugen import java. util.*; public class Ran { private static Random r = new Random (10); public static int ran(int a, int b) { return r. nextint(b - a + 1) + a; public class Sim { public static void main( String [] args) { Taktik taktik; if ("k".equals(args [0])) taktik = new KuerzesteSchlangeTaktik (); else taktik = new WuerfelTaktik (); Laden l = new Laden( taktik, new int[]{2,3,4); l. startesimulation ( Integer. parseint ( args [1])); public interface Taktik { public int auswahl(int[] schlangenlaengen ); public class WuerfelTaktik implements Taktik { public int auswahl(int[] schlangenlaengen ) { return Ran. ran(0, schlangenlaengen. length - 1); Die zweite Lösung wartet nie über sleep() sondern implementiert über eine Priority-Queue einen eigenen Scheduler... import java. util.*; public class Kasse extends Proc { private int nummer; private int zeitproprodukt ; private Laden laden; private Queue <Paar <Kunde, Integer >> schlange = Proc. createqueue (); public Kasse( Laden laden, int nummer, int zeitproprodukt ) { super(0); this. laden = laden; this. nummer = nummer; this. zeitproprodukt = zeitproprodukt ; while (true) { // Kunden aus der Schlange nehmen Proc. out(this + " bereit"); Paar <Kunde, Integer > paar = schlange. pop (); Kunde k = paar. getfirst (); Proc. out( this + " bediene " + k + ", der " + ( Proc. currenttime () - paar. getsecond ()) + " sec in der Schlange verweilte."); // Kunde bedienen int zeit = k. getanzahlprodukte () * zeitproprodukt ;
6 Lösung 11/ Seite 6 sleep( zeit ); Proc. out(this + " bediene " + k + " // ENDE"); laden. verlassen (); // --Kunde bedienen public void anstellen ( Kunde k) { schlange. push(new Paar <Kunde, Integer >(k, currenttime ())); public int getschlangenlaenge () { return schlange. size (); public String tostring () { return "Kasse(" + nummer + ")"; public class KuerzesteSchlangeTaktik implements Taktik { public int auswahl(int[] schlangenlaengen ) { int min = 0; for (int i = 0; i < schlangenlaengen. length; i++) if ( schlangenlaengen [i] < schlangenlaengen [ min ]) min = i; return min; public class Kunde extends Proc { private final Taktik taktik; private final Laden laden; private int nummer; private static int nnummer; private int anzahlprodukte ; public Kunde( Laden laden, Taktik taktik) { super(0); this. laden = laden; this. taktik = taktik; nummer = nnummer ++; anzahlprodukte = Ran. ran(1, 100); public Taktik gettaktik () { return taktik; sleep( anzahlprodukte * Ran. ran (10, 15)); Proc. out(this + " stellt sich an der Kasse an."); laden. anstellen (this); public String tostring () { return " Kunde(" + nummer + "," + anzahlprodukte + ")"; public int getanzahlprodukte () { return anzahlprodukte ; public class Laden extends Proc { private final Taktik taktik; private final Kasse [] kassen; private int anzahl; public Laden(int anzahl, Taktik taktik, int[] zeitenproprodukt ) { super(0); this. anzahl = anzahl; this. taktik = taktik; int len = zeitenproprodukt. length; kassen = new Kasse[ len ]; for (int i = 0; i < len; i++) { Kasse kasse = new Kasse(this, i, zeitenproprodukt [i]);
7 Lösung 11/ Seite 7 kassen[i] = kasse; public void verlassen () { // if (--anzahl == 0) // System.exit(0); public void anstellen ( Kunde k) { int[] schlangenlaengen = new int[ kassen. length ]; for (int i = 0; i < kassen. length; i++) schlangenlaengen [i] = kassen[i]. getschlangenlaenge (); int auswahl = k. gettaktik (). auswahl( schlangenlaengen ); kassen[ auswahl ]. anstellen (k); for (int i = 0; i < anzahl; i++) { if (i!= 0) sleep( Ran. ran (50, 100)); // Neuen Kunden erzeugen Kunde k = new Kunde(this, taktik ); Proc. out(k + " betritt den Laden"); // -- Neuen Kunden erzeugen public class Paar <T1,T2 > { private final T1 t1; private final T2 t2; public Paar( T1 t1, T2 t2) { this. t1 = t1; this. t2 = t2; public T1 getfirst () { return t1; public T2 getsecond () { return t2; import java. util.*; public abstract class Proc implements Comparable <Proc > { private static PriorityQueue <Proc > ps = new PriorityQueue <Proc >(); private static int currenttime = 0; private int wakeup = 0; private Thread thread; static class PThread extends Thread { Proc proc; PThread( Proc proc) { this. proc = proc; // Ausfuehren des Prozesses proc.run (); // naechsten Prozess in der Schlange starten startesimulation (); public Proc(int delta) { thread = new PThread(this); wakeup = currenttime + delta; ps. add(this); public void weiter () { if (thread.isalive ())
8 Lösung 11/ Seite 8 notify (); else thread.start (); public void sleep(int delta) { // Zeit setzen und in die PriorityQueue hinzufuegen wakeup = currenttime + delta; ps. add(this); // zu startender Prozess Proc p = ps. poll (); currenttime = p. wakeup; if (p!= this) { // Wenn es sich um einen anderen Prozess handelt, dann wechseln. synchronized(this) { synchronized (p) { p.weiter (); wait (); catch ( InterruptedException ex) { public static void startesimulation () { if (ps.isempty ()) return; Proc p = ps. poll (); currenttime = p. wakeup; synchronized (p) { p.weiter (); public static int currenttime () { return currenttime ; public int compareto ( Proc p) { return wakeup - p. wakeup; public abstract void run (); // Producer-Consumer Schlangen private static class ProcQueue <E> implements Queue <E> { LinkedList <E> l = new LinkedList <E >(); LinkedList <Proc > waiting = new LinkedList <Proc >(); public void push(e e) { l.add(e); // Zeit setzen und in die PriorityQueue hinzufuegen if (! waiting.isempty ()) { Proc proc = waiting. poll (); proc. wakeup = currenttime ; ps.add(proc ); public E pop () { while (l.isempty ()) { Proc proc = (( PThread) Thread. currentthread ()). proc; waiting. add( proc ); if (ps.isempty ()) System. exit (0); Proc p = ps. poll (); currenttime = p. wakeup;
9 Lösung 11/ Seite 9 // Ein Prozess der laeuft darf nicht gleichzeitig in der Priority-Queue sein. assert( proc!= p); synchronized( proc) { synchronized (p) { p.weiter (); proc.wait (); catch( InterruptedException ex) { return l.poll (); public int size () { return l.size (); public static <E> Queue <E> createqueue () { return new ProcQueue <E >(); public static void out( String s) { System. out. println(" time = " + currenttime + " : " + s); public interface Queue <E> { public void push(e e); public E pop (); public int size (); import java. util.*; public class Ran { private static Random r = new Random (10); public static int ran(int a, int b) { return r. nextint(b - a + 1) + a; public class Sim { public static void main( String [] args) { Taktik taktik; if ("k".equals(args [0])) taktik = new KuerzesteSchlangeTaktik (); else taktik = new WuerfelTaktik (); Laden l = new Laden( Integer. parseint ( args [1]), taktik, new int[]{2,3,4); Proc. startesimulation (); public interface Taktik { public int auswahl(int[] schlangenlaengen ); public class TestProc extends Proc { static Queue <String > q = Proc. createqueue (); private final String name; public TestProc ( String name, int d) { super(d); this. name = name; while(true) { if ("1" == name) { System. out. println(" try to consume / time : " + Proc. currenttime ()); String s = q. pop ();
10 Lösung 11/ Seite 10 System. out. println(" consume " + s + " / time : " + Proc. currenttime ()); sleep (1); else { System. out. println(" produce" + " / time : " + Proc. currenttime ()); q.push("" + Proc.currentTime ()); sleep (100); public static void main( String [] args) { new TestProc ("1", 1); new TestProc ("2", 2); Proc. startesimulation (); public class WuerfelTaktik implements Taktik { public int auswahl(int[] schlangenlaengen ) { return Ran. ran(0, schlangenlaengen. length - 1);
Einstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
MehrJava Game Development Fabian Birzele Programmierpraktikum 2008 / 2009
Java Game Development Fabian Birzele Programmierpraktikum 2008 / 2009 Fabian Birzele, LMU Institut für Informatik, Lehrstuhl für Praktische Informatik und Bioinformatik, 2008: Programmierpraktikum 1 Ziele
MehrAK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de
Stand FTE2 Anfang 4. Semester plus Projekt Multiuhren_Thread Ich gehe im Hinblick auf Klassenarbeiten und der Abschlussprüfung davon aus, dass Sie das Skript OOP JAVA2 durchgearbeitet haben. Wir haben
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
Mehr5. Threads, Serverprozesse und Benachrichtigungen
5. Threads, Serverprozesse und Benachrichtigungen Threads allgemein Threads in Android: Handler und Messages Services: Local, Remote, Binding Benachrichtigungen Entwicklung mobiler Anwendungen Europäische
MehrParallele Prozesse. Prozeß wartet
Parallele Prozesse B-66 Prozeß: Ausführung eines Programmes in seinem Adressraum (zugeordneter Speicher) Parallele Prozesse: gleichzeitig auf mehreren Prozessoren laufende Prozesse p1 p2 verzahnte Prozesse:
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
MehrBeispiel für überladene Methode
Beispiel für überladene Methode class Gras extends Futter {... abstract class Tier { public abstract void friss (Futter x); class Rind extends Tier { public void friss (Gras x) {... public void friss (Futter
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
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
MehrThread-Konzept in objektorientierten Programmiersprachen. Threads. Threads in Java
Thread-Konzept in objektorientierten Programmiersprachen 1 Threads ein Thread ist ein eigenständiges Programmfragment, das parallel zu anderen Teilen eines Programmes ablaufen kann alle Threads eines Programmes
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
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
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:
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.
MehrMobile und Verteilte Datenbanken
Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2010/2011 groppe@ifis.uni-luebeck.de Institut für Informationssysteme Universität zu Lübeck Java Remote Method Invocation (RMI) Realisierung
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
MehrAbgabe: (vor 12 Uhr) Aufgabe 12.1 (P) Siedlerspiel
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Übungsblatt 12 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,
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
MehrUniversität Paderborn Prof. Dr. Stefan Böttcher. Kapitel 3: Java Applets
Kapitel 3: Java Applets 1 Was sind Applets? kleine in Fenstern ausführbare Programme typisch: Aufruf im Browserfenster als Teil einer HTML-Seite Anfang des umgebenden HTML-Textes
MehrTeilprüfung Software- und Internettechnologie Programmierkurs 1 Wintersemester 2005/2006
Universität Mannheim Fakultät für Mathematik und Informatik Dr. Heinz Kredel Teilprüfung Software- und Internettechnologie Programmierkurs 1 Wintersemester 2005/2006 Name:.................................
MehrProgrammieren I + II Regeln der Code-Formatierung
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme WS 2016/2017, SS 2017 Programmieren I + II Regeln der Code-Formatierung In diesem Dokument finden
MehrNebenläufigkeit mit Java
Nebenläufigkeit mit Java Einheit 03: Synchronisation Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Synchronisation von Threads Locks Java Monitor-Konzept Lock Freigabe Zusammenspiel
MehrSchritt 1 - Ein Spielfeld
Schritt 1 - Ein Spielfeld Wir beginnen mit zwei einfachen Java-Klassen, dem eigentlichen Spielfeld und dem Applet zum Anzeigen des Spielfeldes (und später der Buttons und der anderen Bedienelemente). Hier
MehrInstitut fu r Informatik
Technische Universita t Mu nchen Institut fu r Informatik Lehrstuhl fu r Bioinformatik Einfu hrung in die Programmierung fu r Bioinformatiker Prof. B. Rost, L. Richter Java, Objektorientierung 5.1 (U )
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,
MehrAusgewählte Implementierungsprobleme
Ausgewählte Implementierungsprobleme Rebecca Tiarks 18. Dezember 2008 1 / 30 Inhaltsverzeichnis 1 2 3 Persistenzproblem & CSV Binärformat 2 / 30 Themenübersicht 1 18. Dez: + 2 8. Jan. Swing 3 15. Jan TCP,
MehrThread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen
Thread-Synchronisation in in Java Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen Die Klasse Thread Die Die Klasse Thread gehört zur zur Standardbibliothek von von
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
MehrKapitel 5. Monitore und Synchronisationsbedingungen
Seite Kapitel 5 Monitore und Synchronisationsbedingungen Prof. Dr. Rolf Hennicker 5.6.24 5. Synchronisationsbedingungen Seite 2 Bisherige Verwendung von Monitoren: Verkapselung von Daten, Zugriffoperationen
Mehr8. Generics Grundlagen der Programmierung 1 (Java)
8. Generics Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 6. Dezember 2005 Einordnung im Kontext der Vorlesung 1.
MehrJAVA Kommentieren mit Javadoc
Übungen Informatik I JAVA Kommentieren mit Javadoc Übungen Informatik 1 1 Kommentare in Java / mehrzeiliger Kommentar / // einzeiliger Kommentar Sichtbar nur im Quelltext Beschreiben für Entwickler was
MehrRepetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 8 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Vererbung Vererbung Statischer Typ Dynamischer Typ 2 Polymorphie Overloading: Methoden überladen Overriding:
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
MehrAbteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2
Inhalt 1. Printing API 1. Übersicht 2. Vorgehen 3. Beispiel 2. Klasse PrintUtils 3. Mehrere Seiten drucken Folie 1 Lernziele Sie wissen, wie Sie Swing-Komponenten ausdrucken können Sie kennen den Aufbau
MehrMobile und Verteilte Datenbanken
Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2013/2014 groppe@ifis.uni-luebeck.de Institut für Informationssysteme Universität zu Lübeck Kommunikations-Middleware Bietet höhere Kommunikations-Dienste
MehrVersuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore.
Hochschule Harz Versuch: fcopy Mit Java FB Automatisierung und Informatik Betriebssysteme Thema: Kopieren einer Datei unter der Kontrolle von Semaphoren Versuchsziele Konzepte der parallelen Programmierung
MehrJAVA für Nichtinformatiker - Probeklausur -
JAVA für Nichtinformatiker - Probeklausur - Die folgenden Aufgaben sollten in 150 Minuten bearbeitet werden. Aufgabe 1: Erläutere kurz die Bedeutung der folgenden Java-Schlüsselwörter und gib Sie jeweils
MehrFAKULTÄT FÜR INFORMATIK
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2007/2008 Praktikum Grundlagen der Programmierung Lösungsvorschläge zu Blatt 10 F. Forster,
MehrGebundene Typparameter
Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte
MehrMusterlösung zum 8. Aufgabenblatt vom Dienstag, den 02. Juni 2009 zur Vorlesung. Informatik B. von Jacob Krause
Musterlösung zum 8. Aufgabenblatt vom Dienstag, den 02. Juni 2009 zur Vorlesung Informatik B von Jacob Krause 1. Rückgeldstückelung Schreiben Sie Pseudocode und ein Java Programm zur Bestimmung des Wechselgeldes
MehrJava - Programmierung - Objektorientierte Programmierung 1
Java - Programmierung - Objektorientierte Programmierung 1 // Klassen und Objekte public class KlaObj public static void main(string args []) Klasse1 a; a = new Klasse1("heute", 47); Klasse1 b = new Klasse1
MehrZur Erinnerung: Threads. Threadverwaltung. Threads: Prioritäten. Beispiel Flugbuchungsprogramm. Nichtdeterminismus
Zur Erinnerung: Threads Programmierung (fortgeschrittene Konzepte) Threads, Monitore, Semaphore und speisende en Wolf-Ulrich Raffel (uli@wuraffel.de) Möglichkeiten, Threads zu definieren Bildung einer
MehrAllgemeine Hinweise:
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Endtermklausur Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,
MehrTheorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
MehrProgrammieren I. Dokumentation mit Javadoc Heusch 10.4 Ratz Institut für Angewandte Informatik
Programmieren I Dokumentation mit Javadoc Heusch 10.4 Ratz 4.1.1 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Automatische Dokumentation Java bietet standardmäßig das Dokumentationssystem
MehrRepetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
MehrJAVA - Methoden
Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 sind eine Zusammenfassung von Deklarationen und Anweisungen haben einen Namen und können
Mehr12. Threads in Java. Sequentielle Abarbeitung (2) Beispiel: Thread (1) Sequentielle Abarbeitung (1)
12. Threads in Java Einführendes Beispiel 12. Threads in Java 12. Threads in Java Einführendes Beispiel Sequentielle Abarbeitung (2) Ein Thread ist eine Folge von Anweisungen, die unabhängig von anderen
MehrVariablen manipulieren per JDI
Variablen manipulieren per JDI Zusammenfassung Jede moderne Java IDE verfügt über eine mächtige und dennoch meist einfach zu bedienende Benutzeroberfläche die das finden von Fehlern in lokalen oder entfernt
MehrStapel (Stack, Keller)
Stapel (Stack, Keller) Eine wichtige Datenstruktur ist der Stapel. Das Prinzip, dass das zuletzt eingefügte Element als erstes wieder entfernt werden muss, bezeichnet man als LIFO-Prinzip (last-in, first-out).
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,
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
MehrGraphische Benutzungsoberflächen
Graphische Benutzungsoberflächen Graphische Benutzungsoberflächen (graphical user interfaces, GUI) dienen zur interaktiven Bedienung von Programmen, Ein- und Ausgabe mit graphischen Techniken und visuellen
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
MehrAuD-Tafelübung T-B5b
6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit
MehrPraktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel
Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel FB Physikalische Technik Musterlösungen Teil 4 Aufgabe 1 package teil4; import javax.swing.*; public class Ei { int haltung, ident; String
MehrDHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung
DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung Aufgabe Editor package BA.GUI.Swing; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.logging.level; import java.util.logging.logger;
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,
Mehr1 Polymorphie (Vielgestaltigkeit)
1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen
MehrGrundlagen der Objektorientierung
Grundlagen der Objektorientierung Klassen, Attribute, Methoden Kapselung und Konstruktoren Vererbung Packages Interfaces und Adapterklassen 04.06.2008 Marcel Wieczorek 14 Klassen, Attribute, Methoden package
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
MehrÜbung zu Grundlagen der Betriebssysteme. 10. Übung 18.12.2012
Übung zu Grundlagen der Betriebssysteme 10. Übung 18.12.2012 Aufgabe 1 a) Was versteht man unter einem kritischen Abschnitt oder kritischen Gebiet (critical area)? b) Welche Aufgabe hat ein Semaphor? c)
Mehr! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.
! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.4 Exceptions - 1 - Ausnahmen (Exceptions( Exceptions) Treten auf, wenn zur
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
MehrII.3.1 Rekursive Algorithmen - 1 -
1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.3.1 Rekursive Algorithmen -
MehrApplets Belebung von Webseiten. Dipl.-Ing. Wolfgang Beer
Applets Belebung von Webseiten Dipl.-Ing. Wolfgang Beer Was sind Applets? Java Klassen, die spezielle Richtlinien befolgen, um: "in Internet-Browsern lauffähig zu sein" Somit ist, komplexere Funktionalität,
MehrVS4 Slide 1. Verteilte Systeme. Vorlesung 4 vom 29.04.2004 Dr. Sebastian Iwanowski FH Wedel
VS4 Slide 1 Verteilte Systeme Vorlesung 4 vom 29.04.2004 Dr. Sebastian Iwanowski FH Wedel Inhaltsverzeichnis für die Vorlesung Zur Motivation: 4 Beispiele aus der Praxis Allgemeine Anforderungen an Verteilte
Mehr5 Grundlagen der Java-Syntax
5 Grundlagen der Java-Syntax Es sollen nun einige Grundregeln besprechen, die in jeder Java-Programmdatei berücksichtigt werden müssen. 5.1 Grundsätzliches zur Syntax von Java Programmen Zunächst sollten
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()
Mehr1. Der Einstieg in Java. Was heißt Programmieren?
1. Der Einstieg in Java Lernziele: Am Ende dieses Kapitels sollen Sie wissen, aus welchen Bestandteilen ein Java-Programm besteht, Java-Programme übersetzen und ausführen können, Möglichkeiten der Kommentierung
Mehr6. Iteration (Schleifenanweisungen)
6. Iteration (Schleifenanweisungen) Java-Beispiel: TemperatureTable.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 9. Nov. 2015 2 Schwerpunkte While-Anweisung: "abweisende"
Mehrimport java.applet.applet; import java.awt.*; class WaitAux extends Thread { private Graphics gbuff; private Image buffer; private WaitingThread app;
import java.applet.applet; import java.awt.*; class WaitAux extends Thread { private Graphics gbuff; private Image buffer; private WaitingThread app; public WaitAux(Image b, WaitingThread a) {...} public
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE24-KlassenUndObjekteFort (Stand 28.09.2012) Aufgabe 1: Implementieren Sie eine Klasse Student. Die Klasse soll eine Methode immatrikulieren haben,
MehrParallele Programmierung in Java
PPJ-1 Parallele Programmierung in Java Prof. Dr. Uwe Kastens Sommersemester 2000 Vorlesung Parallele Programmierung in Java SS 2000 / Folie 01 PPJ-2 Ziele und Durchführung Die Studierenden sollen grundlegende
Mehr5.14 Generics. Xiaoyi Jiang Informatik I Grundlagen der Programmierung
Motivation für Generics: Containertypen speichern eine Anzahl von Elementen anderer Typen Wie definiert man die Containerklasse ArrayList? In der Definition könnte man als Elementtyp Object angeben maximale
MehrTutoraufgabe 1 (Programmanalyse):
Prof. aa Dr. M. Müller Programmierung WS15/16 C. Aschermann, J. Hensel, J. Protze, P. Reble Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 3 Studierenden aus der gleichen Kleingruppenübung
Mehr1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)
Praktische Informatik (Software) Vorlesung Softwareentwicklung 1 Prof. Dr. A. Ferscha Hauptklausur am 01. 02. 2001 Zuname Vorname Matr. Nr. Stud. Kennz. Sitzplatz HS / / / Punkte Note korr. Fügen Sie fehlende
MehrJava Schulung (Java 2 Java Development Kit 5 / 6)
2. Grundlagen der Objektorientierung 2.1 Klassen, Attribute, Methoden Klassen Eine Klasse beschreibt als Bauplan Gemeinsamkeiten einer Menge von Objekten ist also ein Modell, auf dessen Basis Objekte erstellt
MehrJava: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe
Java: Eine Übersicht Dennis Giffhorn Lehrstuhl für Programmierparadigmen Universität Karlsruhe Allgemeines Objektorientiert Syntaxfamilie von C/C++ Statisch getypt Entwickelt von Sun Microsystems class
MehrÜbungsaufgaben Java. Vorlesung Cloud Computing SoSe 2009. Cloud Computing SoSe 2009 Dr. M.Kunze 1
Übungsaufgaben Java Vorlesung Cloud Computing SoSe 2009 Cloud Computing SoSe 2009 Dr. M.Kunze 1 Übung J1 Installieren Sie das Java Software-Entwicklungspaket JDK 6 Update 13 http://java.sun.com/javase/downloads/index.jsp
MehrProgrammieren in Java
Datenstrukturen 2 Gruppierung von Daten Datentypen, die eine Menge an Daten gruppieren und auf dieser Gruppierung eine gewisse Logik bereitstellen werden Datenstrukturen genannt Bisher wurde zur Gruppierung
MehrJAVA - Zufallszahlen
Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 1 5. JAVA werden beim Programmieren erstaunlich oft gebraucht: Simulationen Spiele Aufbau von Testszenarien...
MehrEinführung in die Programmierung mit Java
Einführung in die Programmierung mit Java Martin Wirsing 2 Ziele Geschichte der OO-Programmiersprachen Warum Java als Programmiersprache verwenden? Ein einfaches Java-Programm erstellen, übersetzen und
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]...
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1
Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen
MehrJava-Implementierung der Priority-Queue und des Huffman-Algorithmus Effiziente Algorithmen SS12 Übung 4 Aufgabe 5 Johannes Hein
Übersicht Beschreibung der Datenstruktur Seite 1 Schnittstelle PriorityQueue Seite 2 Klasse PriorityQueueException Seite 3 Klasse Data Seite 4 Klasse PriorityQueueImpl Seite 5 Klasse Huffman Seite 8 Aufbau
MehrÜbungen Informatik I. JAVA - Einführung. elga Gabler, Holger Vogelsang, Christian Pape. Übungen Informatik 1 Folie 1
Übungen Informatik I JAVA - Einführung Übungen Informatik 1 Folie 1 Warum Java? Java ist derzeit die Programmiersprache für das Internet. Java ist ein Programmierkonzept der Zukunft. Objekt-orientierte
MehrUniversität Augsburg, Institut für Informatik Sommersemester 2003 Prof. Dr. Bernhard Bauer 18. Oktober 2003 Stefan Fischer, Dr.
Universität Augsburg, Institut für Informatik Sommersemester 2003 Prof. Dr. Bernhard Bauer 18. Oktober 2003 Stefan Fischer, Dr. Martin Müller Informatik II 2. Semesterklausur Prüfungsmodul Informatik II
MehrType Erasure in Java 5. Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe
Type Erasure in Java 5 Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe Warum Generics? Containerklassen in Java 1.4 sind generisch nutzbar aber typunsicher. Public class LinkedList
Mehrclass BahnTest2 { public static void main(string[] args) { Zug myice = new Zug("ICE Duisburg", 1200, 0, 50); BahnCardFahrer kunde2 = new BahnCardFahre
class BahnTest2 { public static void main(string[] args) { Zug myice = new Zug("ICE Duisburg", 1200, 0, 50); BahnCardFahrer kunde2 = new BahnCardFahrer(args[0], myice, (new Integer(args[1])).intValue());
MehrDas Monitorkonzept Brinch-Hansen
Das Monitorkonzept (nach Hoare/Brinch Brinch-Hansen 1974) Nur ein Prozess bzw. Thread kann zu einem bestimmten Zeitpunkt im Monitor aktiv sein => gegenseitiger Ausschluss, mutual exclusion. Geschützte
MehrProgrammieren in Java
17. Übung 1. Aufgabe Schreibe ein Programm, das eine Textdatei (z.b. *.java ) aus dem aktuellen Verzeichnis über eine TextArea auf ein Fenster des Bildschirms abbildet. Jede Zeile soll dabei durchnummeriert
Mehri n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging
Servlet Debugging Markus Völter, voelter@acm.org, www.voelter.de Bei der Arbeit mit Servlets kommt man recht schnell an den Punkt, an dem man Servlets vernünftig testen oder debuggen will. Mit Hilfe des
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
MehrInformatik B von Adrian Neumann
Musterlösung zum 7. Aufgabenblatt vom Montag, den 25. Mai 2009 zur Vorlesung Informatik B von Adrian Neumann 1. Java I Schreiben Sie ein Java Programm, das alle positiven ganzen Zahlen 0 < a < b < 1000
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Interfaces
10 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Interfaces Aber: Mehrfachvererbung von Klassen ist in Java nicht erlaubt. Ausweg Definition eines Interfaces, z.b.:
MehrEingabe und Ausgabe in Java. Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien
Eingabe und Ausgabe in Java Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien Eingabe Beispiel1 public class Input1 { public static void main(string[] args) { for (int i = 0; i < args.length;
MehrSystemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007
Systemprogrammierung Projekt: Java RMI Wintersemester 2006 / 2007 Systemprogrammierung 1. Einleitung 2. Einführung in RPC 3. RMI 4. Code Beispiele 5. Live Vorstellung 6. Ausblick 7. Fazit 2 1. Einleitung
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
Mehr