FAKULTÄT FÜR INFORMATIK

Größe: px
Ab Seite anzeigen:

Download "FAKULTÄT FÜR INFORMATIK"

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

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

Mehr

Java Game Development Fabian Birzele Programmierpraktikum 2008 / 2009

Java 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

Mehr

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de

AK-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

Mehr

Java-Schulung Grundlagen

Java-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

Mehr

5. Threads, Serverprozesse und Benachrichtigungen

5. 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

Mehr

Parallele Prozesse. Prozeß wartet

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

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. 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

Mehr

Beispiel für überladene Methode

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

Mehr

Synchronisation in Java. Invisible Web

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

Mehr

U08 Entwurfsmuster (II)

U08 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

Mehr

Thread-Konzept in objektorientierten Programmiersprachen. Threads. Threads in Java

Thread-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

Mehr

Java Einführung Abstrakte Klassen und Interfaces

Java 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

Mehr

Musterlösungen zur Klausur Informatik 3

Musterlö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

Mehr

Einführung in Javadoc

Einfü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:

Mehr

2.2 Prozesse in Java

2.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

Mobile und Verteilte Datenbanken

Mobile 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

Mehr

Objektorientierte Programmierung

Objektorientierte 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

Mehr

Abgabe: (vor 12 Uhr) Aufgabe 12.1 (P) Siedlerspiel

Abgabe: (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,

Mehr

Java-Programmierung. Remote Method Invocation - RMI

Java-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

Mehr

Universität Paderborn Prof. Dr. Stefan Böttcher. Kapitel 3: Java Applets

Universitä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

Mehr

Teilprüfung Software- und Internettechnologie Programmierkurs 1 Wintersemester 2005/2006

Teilprü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:.................................

Mehr

Programmieren I + II Regeln der Code-Formatierung

Programmieren 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

Mehr

Nebenläufigkeit mit Java

Nebenlä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

Mehr

Schritt 1 - Ein Spielfeld

Schritt 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

Mehr

Institut fu r Informatik

Institut 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 )

Mehr

Verteilte Systeme CS5001

Verteilte 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,

Mehr

Ausgewählte Implementierungsprobleme

Ausgewä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,

Mehr

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

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

Mehr

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Anleitung. 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

Mehr

Kapitel 5. Monitore und Synchronisationsbedingungen

Kapitel 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

Mehr

8. Generics Grundlagen der Programmierung 1 (Java)

8. 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.

Mehr

JAVA Kommentieren mit Javadoc

JAVA 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

Mehr

Repetitorium Informatik (Java)

Repetitorium 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:

Mehr

2A Basistechniken: Weitere Aufgaben

2A 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

Mehr

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Abteilung 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

Mehr

Mobile und Verteilte Datenbanken

Mobile 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

Mehr

Versuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore.

Versuchsziele 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

Mehr

JAVA für Nichtinformatiker - Probeklausur -

JAVA 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

Mehr

FAKULTÄT FÜR INFORMATIK

FAKULTÄ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,

Mehr

Gebundene Typparameter

Gebundene Typparameter Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte

Mehr

Musterlö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 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

Mehr

Java - Programmierung - Objektorientierte Programmierung 1

Java - 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

Mehr

Zur Erinnerung: Threads. Threadverwaltung. Threads: Prioritäten. Beispiel Flugbuchungsprogramm. Nichtdeterminismus

Zur 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

Mehr

Allgemeine Hinweise:

Allgemeine 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,

Mehr

Theorie zu Übung 8 Implementierung in Java

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

Mehr

Programmieren I. Dokumentation mit Javadoc Heusch 10.4 Ratz Institut für Angewandte Informatik

Programmieren 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

Mehr

Repetitorium Informatik (Java)

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

Mehr

JAVA - Methoden

JAVA - 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

Mehr

12. Threads in Java. Sequentielle Abarbeitung (2) Beispiel: Thread (1) Sequentielle Abarbeitung (1)

12. 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

Mehr

Variablen manipulieren per JDI

Variablen 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

Mehr

Stapel (Stack, Keller)

Stapel (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).

Mehr

Erreichbarkeit von Klassenelementen. Daten verstecken und kapseln

Erreichbarkeit 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,

Mehr

Programmieren in Java

Programmieren 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

Mehr

Graphische Benutzungsoberflächen

Graphische 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

Mehr

Einstieg in die Informatik mit Java

Einstieg 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

Mehr

AuD-Tafelübung T-B5b

AuD-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

Mehr

Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel

Praktikum 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

Mehr

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

DHBW 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;

Mehr

Große Übung Praktische Informatik 1

Groß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,

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 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

Mehr

Grundlagen der Objektorientierung

Grundlagen 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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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 Ü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. ! 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

Mehr

Einführung in die Programmierung

Einfü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

II.3.1 Rekursive Algorithmen - 1 -

II.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 -

Mehr

Applets Belebung von Webseiten. Dipl.-Ing. Wolfgang Beer

Applets 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,

Mehr

VS4 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 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

Mehr

5 Grundlagen der Java-Syntax

5 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

Mehr

Einführung in die Programmierung Blockkurs Java

Einfü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()

Mehr

1. Der Einstieg in Java. Was heißt Programmieren?

1. 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

Mehr

6. Iteration (Schleifenanweisungen)

6. 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"

Mehr

import 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; 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

Mehr

Programmierkurs Java

Programmierkurs 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,

Mehr

Parallele Programmierung in Java

Parallele 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

Mehr

5.14 Generics. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

5.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

Mehr

Tutoraufgabe 1 (Programmanalyse):

Tutoraufgabe 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

Mehr

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

1. 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

Mehr

Java Schulung (Java 2 Java Development Kit 5 / 6)

Java 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

Mehr

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe

Java: 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 Ü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

Mehr

Programmieren in Java

Programmieren 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

Mehr

JAVA - Zufallszahlen

JAVA - 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...

Mehr

Einführung in die Programmierung mit Java

Einfü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

Mehr

Java Einführung Collections

Java 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]...

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

Einfü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

Mehr

Java-Implementierung der Priority-Queue und des Huffman-Algorithmus Effiziente Algorithmen SS12 Übung 4 Aufgabe 5 Johannes Hein

Java-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. 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

Mehr

Universitä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. 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

Mehr

Type 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 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

Mehr

class 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 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());

Mehr

Das Monitorkonzept Brinch-Hansen

Das 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

Mehr

Programmieren in Java

Programmieren 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

Mehr

i 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

i 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

Mehr

Innere Klassen in Java

Innere 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

Mehr

Informatik B von Adrian Neumann

Informatik 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

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Interfaces

FH 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.:

Mehr

Eingabe 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 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;

Mehr

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Systemprogrammierung. 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

Mehr

Einfü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 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