Objektorientierte Softwareentwicklung
|
|
- Catharina Richter
- vor 6 Jahren
- Abrufe
Transkript
1 Objektorientierte Softwareentwicklung Part 6 Exceptions und Collections Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur (siehe Part 1) erstellt. Darüber hinaus sind Teile direkt aus der Vorlesung von Prof. Dr.-Ing. Faustmann (ebenfalls HWR Berlin) übernommen worden. Für die Bereitstellung dieses Vorlesungsmaterials möchte ich mich an dieser Stelle noch einmal recht herzlich bedanken OO A/D/P Prof. Dr. Andreas Schmietendorf 1
2 Übersicht zum Inhalt Exceptions -Ausnahmebehandlung - Grundlagen & Begriffe - Behandlung von Exceptions Collections -Datenstrukturen - Traditionellen Collections (seit dem JDK 1.0) - Java Collections Framework (JCF seit dem JDK 1.2) Prof. Dr. Andreas Schmietendorf 2
3 Exceptions -Ausnahmebehandlung OO A/D/P Prof. Dr. Andreas Schmietendorf 3
4 Grundlagen & Begriffe Die Ausnahmebehandlung ist ein Mechanismus zur strukturierten Behandlung von Fehlern während der Programmausführung. Beispiele für Laufzeitfehler: - Array-Zugriff außerhalb der definierten Grenzen - Zugriff auf eine Datei die nicht gefunden wird Exception Bezeichnung der eigentlichen Ausnahme die durch ein Programm zur Laufzeit verursacht wird Bezeichnungen im Java-Sprachgebrauch - Auslösen einer Ausnahme throwing - Reaktion auf eine Ausnahme catching Prof. Dr. Andreas Schmietendorf 4
5 Grundlagen & Begriffe Grundprinzip des Exception Mechanismus in Java: 1. Ein Laufzeitfehler oder eine vom Entwickler gewollte Bedingung löst eine Ausnahme aus. 2. Die Behandlung kann im Programmteil, wo die Ausnahme aufgetreten ist erfolgen, oder weitergegeben werden. 3. Wird die Ausnahme weitergegeben, so hat der Empfänger der Ausnahme erneut die Möglichkeit diese zu behandeln, oder selbst weiter zu geben. 4. Findet keine Behandlung der Ausnahme statt, so führt eine Ausnahme zum Programmabbruch und zur Ausgabe einer Fehlermeldung Prof. Dr. Andreas Schmietendorf 5
6 Behandlung von Ausnahmen Die try-catch-anweisung: Die Behandlung von Ausnahmen geschieht durch einen try-catch- Block: - try enthält Anweisungen bei deren Ausführung ein Fehler des Typs Ausnahmetyp auftreten kann. - catch Tritt ein Fehler des Typs Ausnahmetyp ein, wird die normale Programmausführung unterbrochen und mit der ersten Anweisung nach der catch-klausel fortgesetzt. Hier steht Code zum angemessenen Reagieren auf den auf den Fehler. try{ Anweisung(en); } catch(ausnahmetyp x){ } Anweisung(en); Prof. Dr. Andreas Schmietendorf 6
7 Behandlung von Ausnahmen Eine spezialisierte Methode für eine gegebene Basis ist parseint(string, int radix). Diese ist gut für z.b. Hexadezimalzahlen mit der Basis parseint("0", 10) 0 - parseint("473", 10) parseint("-0", 10) 0 - parseint("-ff", 16) parseint(" ", 2) parseint(" ", 10) parseint(" ", 10) Prof. Dr. Andreas Schmietendorf 7
8 Behandlung von Ausnahmen Problembeispiel 1: Integer parseint(string s, int n) versucht den String s in eine Dezimalzahl zu konvertieren unter der Annahme, s stellt eine Zahl zur Basis n dar. Falls dies nicht möglich ist, wird eine NumberFormatException ausgelöst. int i, base = 0; for(base=10; base>=2; --base){ } i = Integer.parseInt( 40, base); System.out.println( 40 zur Basis +base+ = +i); Das Programm endet mit einem Fehler, sobald base den Wert 4 erreicht: Exception in thread main java.lang.numberformatexception: 40 at java.lang.integer.parseint(compiled Code) at Test.main(Compiled Code) Prof. Dr. Andreas Schmietendorf 8
9 Behandlung von Ausnahmen Problembeispiel 1: 40 zur Basis 10 = zur Basis 9 = zur Basis 8 = zur Basis 7 = zur Basis 6 = zur Basis 5 = 20 Exception in thread "main" java.lang.numberformatexception: For input string: "40" at java.lang.numberformatexception.forinputstring(unknown Source) at java.lang.integer.parseint(unknown Source) at TestExc.main(TestExc.java:12) Prof. Dr. Andreas Schmietendorf 9
10 Behandlung von Ausnahmen Lösung mit Ausnahmebehandlung 1: Der fehlerverursachende Programmteil wird in eine try-anweisung eingeschlossen: int i, base = 0; try{ for(base=10; base>=2; --base){ i = Integer.parseInt( 40, base); System.out.println( 40 zur Basis +base+ = +i); }}catch(numberformatexception e){ System.out.println( 40 ist keine Zahl zur Basis +base); } Das Programm gibt nun unter der Kontrolle des Entwicklers eine Fehlermeldung aus Prof. Dr. Andreas Schmietendorf 10
11 Behandlung von Ausnahmen Lösung mit Ausnahmebehandlung 2: public class TestExc { } public static void main(string[] args) { // TODO Auto-generated method stub int i, base = 0; try{ for(base=10; base>=2; --base){ i = Integer.parseInt("40", base); System.out.println("40 zur Basis "+base+" = "+i); } }catch(numberformatexception e){ System.out.println("40 ist keine Zahl zur Basis "+base); } } Prof. Dr. Andreas Schmietendorf 11
12 Behandlung von Ausnahmen Lösung mit Ausnahmebehandlung 3: Zwar ist 40 immer noch keine Zahl zur Basis 4, aber das Programm fängt den Fehler ab und gibt eine entsprechende Fehlermeldung heraus. 40 zur Basis 10 = zur Basis 9 = zur Basis 8 = zur Basis 7 = zur Basis 6 = zur Basis 5 = ist keine Zahl zur Basis Prof. Dr. Andreas Schmietendorf 12
13 Behandlung von Ausnahmen Verwenden von Fehlerobjekten: Neben der Ausnahme wird auch ein konkretes Fehlerobjekt im catch-block gefangen. Fehlerobjekte sind Instanzen der Klasse Throwable oder einer ihrer Unterklassen. Sie enthaltenen Informationen über die Art des aufgetretenen Fehlers.... }catch(numberformatexception e){ System.out.println(e); // Aufruf von tostring() System.out.println(e.getMessage()); // expliziter Fehlertext e.printstacktrace(); // Auszug aus dem Laufzeit-Stack } printstacktrace wird durch das Java-Laufzeitsystem aufgerufen bevor das Programm beendet wird, sofern dieser von keiner Methode behandelt wurde Prof. Dr. Andreas Schmietendorf 13
14 Behandlung von Ausnahmen Fortfahren im Programm: Das Auftreten eines Fehlers und die Behandlung dieser Ausnahme muss nicht notwendigerweise zu Ende des Programms führen. Die weitere Ausführung des Programms findet dann nach dem letzten catch- Block statt. try{ Anweisung(en); } catch(ausnahmetyp x){ Anweisung(en); } Anweisung(en); Prof. Dr. Andreas Schmietendorf 14
15 Behandlung von Ausnahmen Umgang mit mehreren Fehlertypen: Innerhalb eines try-blocks können auch verschiedene Ausnahmen auftreten. Das Programm kann darauf reagieren, indem es mehr als eine catch-klausel verwendet. Eine catch-anweisung fängt die Fehlerobjekte ab, die zu dem angegebenen Fehlertyp zuweisungskompatibel sind. Dazu zählen Fehler der angegebenen Klasse und all ihrer Unterklassen. Beispiel: catch(exception e){...} fängt Fehler vom allgemeinen Typ Exception, aber auch Fehler von spezialisierten Typen wie NumberFormatEXception Prof. Dr. Andreas Schmietendorf 15
16 Behandlung von Ausnahmen Abschließende Arbeiten in der Behandlung: Soll als Abschluss eines try-blocks, unabhängig davon, ob eine Ausnahme aufgetreten ist oder nicht, Programmcode ausgeführt werden, kann das in einer finally-klausel geschehen: try{ Anweisung(en); } catch(ausnahmetyp x){ Anweisung(en); } finally{ Anweisung(en); } Die finally-klausel kann dazu dienen, Aufräumarbeiten durchzuführen, wie z.b. Dateien schließen und sonstige Ressourcen freigeben Prof. Dr. Andreas Schmietendorf 16
17 Behandlung von Ausnahmen Weitergabe von Exceptions: Eine Ausnahme, die in einem Programmstück auftaucht, muss entweder behandelt oder weitergegeben werden (Catch-or-Throw- Regel). Die Behandlung einer Ausnahme erfolgt durch den entsprechenden catch-ereignishandler des try-blocks. Die Weitergabe einer Ausnahme, ohne sie zu behandeln, kann durch ein fehlendes try-catch-konstrukt erfolgen. Dazu ist im Methodenkopf eine throws-klausel zu ergänzen, die den Fehlertyp kennzeichnet: public boolean isprim(int n) throws ArithmeticException { } Prof. Dr. Andreas Schmietendorf 17
18 Behandlung von Ausnahmen Prof. Dr. Andreas Schmietendorf 18
19 Behandlung von Ausnahmen Ausnahmen erzeugen und werfen: Beispiel public boolean isprim(int n) throws ArithmeticException{ if (n <= 0) { throw new ArithmeticException("isPrim: Param. <= 0"); } if (n == 1) { return false; } for (int i = 2; i <= n/2; ++i) { if (n % i == 0) { return false; } } return true; } Prof. Dr. Andreas Schmietendorf 19
20 Übung 6-1 Beschreiben Sie den Programmablauf, je nachdem welche Fehlersituation eintritt (kein Fehler, Exception1, Exception2, Exception3, Exception4)! Die Methode a1() kann die Exceptions 1, 2, und 3 werfen, Methode a2() zusätzlich die Exception 4. public void f() throws Exception3, Exception4 { try{ a1(); }catch(exception1 e){ a2(); }catch(exception2 e){ a3(); }finally{ a4(); } a5(); } Prof. Dr. Andreas Schmietendorf 20
21 Übung 6 1 Implementierungsansatz Prof. Dr. Andreas Schmietendorf 21
22 Behandlung von Ausnahmen Prof. Dr. Andreas Schmietendorf 22
23 Behandlung von Ausnahmen Eigene Fehlerklassen verwenden: Gegebenenfalls treten Fehler auf, die von den Standardfehlerklassen nicht adäquat beschrieben werden. Dafür können eigene Ausnahmeklassen von z.b. Exception abgeleitet werden: class FileFormatException extends IOException{ public FileFormatEXception(){} public FileFormatEXception(String s){ super(s); } } Nun kann auch ein eigenes Ausnahmeobjekt geworfen werden: throw new FileFormatException(); Prof. Dr. Andreas Schmietendorf 23
24 Übung 6-2 Erstellen Sie eine Klasse Bruch, die einen Zähler und einen Nenner verwaltet. Legen Sie Konstruktoren für einen (Übergabe von Zähler, Nenner = 1) und zwei Parameter (Zähler und Nenner) an. Programmieren Sie außerdem eine Methoden Bruch div(bruch, Bruch), mit der zwei Brüche geteilt werden können. Erweitern Sie die von Ihnen erstellte Klasse Bruch um eine Ausnahmebehandlung: Bei der Division durch 0 wird eine Exception ausgelöst. Betroffen von dieser Maßnahme sind einer der beiden Konstruktoren und die div-methode. Definieren Sie dazu eine eigene Fehlerklasse DivisionByZero, die Sie von der Fehlerklasse ArithmeticException ableiten. Testen Sie die Ausnahmebehandlung, indem Sie Fehler provozieren! Prof. Dr. Andreas Schmietendorf 24
25 Behandlung von Ausnahmen Tips zur Verwendung von Ausnahmen: Ausnahmen werden manchmal häufiger als notwendig eingesetzt. Dabei steht der Aufwand, einen Fehler zu analysieren dem einfachen Weiterleiten einer Ausnahme entgegen. Die Behandlung einer Ausnahme nimmt jedoch fast immer Zeit in Anspruch. So kann bei übermäßigem Gebrauch von Ausnahmen und Behandlungscode der eigentliche Programmcode drastisch gebremst werden Prof. Dr. Andreas Schmietendorf 25
26 Behandlung von Ausnahmen Ausnahmen ersetzen keinen Test: Ausnahmebehandlung ist nicht dazu gedacht, einfache Tests zu ersetzen. Beispiel: Ob ein Stack leer ist, kann direkt abgefragt werden. Dazu wird keine Ausnahme benötigt, die zunächst gefangen werden muss! if (!s.empty()){ } s.pop(); // schnelle Prüfung try{ s.pop(); } catch(emptystackexception e){} // Ausnahme fangen // dauert laenger Prof. Dr. Andreas Schmietendorf 26
27 Übung 6-3 Prüfen Sie die Geschwindigkeit der Ausnahmebehandlung in einem Experiment: Importieren Sie java.util.*. Legen Sie einen Stack an (Stack s = new Stack()) und vergleichen Sie die Zeit, die jeweils benötigt wird, um eine Million mal auf einem leeren Stack zu lesen (s.pop()). Vergleichen Sie den expliziten Test (s.empty()) mit dem Fangen der Ausnahme EmptyStackException, die s.pop() liefert, falls s leer ist. Die Zeit können Sie mit new Date().getTime() auslesen. Zwischen zwei Programmanweisungen können Sie einfach die Differenz dieser Werte bilden, um die vergangenen Millisekunden zu ermitteln Prof. Dr. Andreas Schmietendorf 27
28 Collections -Datenstrukturen OO A/D/P Prof. Dr. Andreas Schmietendorf 28
29 Collections -Einführung Collections sind Datenstrukturen, die eine Menge von Daten aufnehmen und verarbeiten können. Sie kapseln den Zugriff auf abgelegte Daten mit Hilfe von Methoden. Typische Collections sind Stacks, Queues, Listen und Bäume. In Java existieren seit dem JDK 1.0 die traditionellen Collections Vector, Stack, Dictionary, HashTable und BitSet. Seit dem JDK 1.2 wird das Java Collections Framework (JCF) angeboten. Es enthält die Schnittstellen List, Set und Map mit diversen Implementierungen. Die klassischen Collections sind nicht typsicher, da nur Referenzen auf den allgemeinen Typ Object gespeichert werden! Ab Java 5 (JDK 1.5) stehen auch typsichere Collection-Klassen zur Verfügung Prof. Dr. Andreas Schmietendorf 29
30 Collections Klasse Vector Ein Vector ist eine lineare Liste, die Elemente beliebigen Typs enthalten kann und deren Länge zur Laufzeit beliebig veränderbar ist. Anlegen eines Vectors: public Vector() Konstruktor public final boolean isempty()prüfung, ob Liste leer ist public final int size() Anzahl der Elemente in der Liste Einfügen von Elementen: Einfügen am Ende public void addelement(object obj) Einfügen an beliebiger Stelle public void insertelementat(object obj, int index) Prof. Dr. Andreas Schmietendorf 30
31 Collections Klasse Vector Zugriff auf Elemente eines Vectors: Liefert erstes Element public Object firstelement() Liefert letztes Element public Object lastelement() Liefert Element an Position index public Object elementat(int index) Sequentieller Zugriff auf Elemente des Vectors mittels Iterator - Iterator für traditionelle Collection-Klassen durch Interface Enumeration - Methoden des Interfaces Enumeration : hasmoreelements prüfen auf weitere Elemente nextelement setzen des Zeigers auf das nächste Element - Methode elements innerhalb der Klasse Vector liefert Enumerator Prof. Dr. Andreas Schmietendorf 31
32 Collections Klasse Vector Folgendes Beispiel zeigt die Verwendung eines Iterators, der wie eine Laufvariable eingesetzt werden kann: Vector v = new Vector(); v.addelement( Eins ); v.addelement( Zwei ); Iterator it = v.iterator(); // Definition des Iterators if(it.hasnext()){ } // Prüfung, ob weitere Elemente // vorhanden sind System.out.println((String)it.next()); // Naechstes Element ausgeben Prof. Dr. Andreas Schmietendorf 32
33 Übung 6-4 Erweitern Sie das im Rahmen der Übung 2-2 erstellte Programm um die Abspeicherung der Artikelobjekte innerhalb eines Vectors. Experimentieren Sie mit den unterschiedlichen Methoden zum Ablegen eines Objektes im Vector: - addelement(object obj); - insertelementat(obj obj, int index); Legen Sie 5 Artikel-Objekte im Vector ab und lesen Sie diese mittels der folgenden Methoden wieder aus: - firstelement(); - lastelement(); - elementat(int index); Verwenden Sie einen Iterator zum sequentiellen Auslesen aller Elemente des Vectors Enumeration en = v.elements(); Prof. Dr. Andreas Schmietendorf 33
34 Collections Klasse Stack Der Stack realisiert das LIFO-Prinzip (last-in-first-out). Er ist von Vector abgeleitet und besitzt somit die gleichen Methoden! public Stack() public Object push(object obj) public Object pop() public Object peek() public boolean empty() public int search(object o) Konstruktor Anfügen eines neuen Elements Liefert oberstes Element und entfernt es Liefert oberstes Element Prüfung, ob Stack leer ist Distanz zwischen gefundenem und oberstem Stack-Element Prof. Dr. Andreas Schmietendorf 34
35 Collections Klasse Hashtable Konkretisierung der abstrakten Klasse Dictionary - Abbildung von Schlüsseln auf Werte - Ermittelung der Schlüssel auf Basis der Hash-Funktion - Über den Schlüssel kann später der Wert wieder aufgefunden werden Konkrete Merkmale von Hashtable - Kapazität Anzahl der insgesamt ablegbaren Elemente - Ladefaktor Anzeige bei welchen Füllgrad die Hash-Tabelle vergrößert werden muss (erfolgt automatisch) Prof. Dr. Andreas Schmietendorf 35
36 Collections Klasse Hashtable Anlegen einer Instanz der Klasse Hashtable Hashtable t = new Hashtable(); Einfügen des Schlüssel-Wert-Paares. Liefert null, falls Schlüssel bisher nicht vorhanden ist. Ansonsten wird der Wert ausgetauscht und der alte Wert zurückgeliefert. public Object put(object key, Object value) Liefert den zum Schlüssel passenden Wert. Null, falls der Schlüssel nicht vorhanden ist. public Object get(object key) Weitere Methoden: Public boolean contains(object value) Public boolean containskey(object key) Prof. Dr. Andreas Schmietendorf 36
37 Collections Klasse Hashtable Verwendung von Iteratoren zur Auflistung von Schlüsseln und Werten public Enumeration elements() public Enumeration keys() Beispiel der Verwendung eines Iterators: Hashtable myhash = new Hashtable(); myhash.put( Schmietendorf, schmiete@fhw-berlin.de ) myhash.put( Maier, maier@fhw-berlin.de ) // Ausgabe Enumeration en = myhash.keys(); while (en.hasmoreelements()){ } String alias = (String)en.nextElement(); System.out.println(alias + + myhash.get(alias)); Prof. Dr. Andreas Schmietendorf 37
38 Übung 6-5 Verändern Sie Ihre Implementierung aus der Übung 6 4 so, dass die Artikel nicht mehr in einem Vektor, sondern in einer HashTable verwaltet werden. Wählen Sie als Schlüssel die Artikelnummer. Aufgaben: - Legen Sie wiederum 5 Artikel innerhalb der Hashtabelle ab - Greifen Sie direkt über den Schlüssel auf einzelne Elemente zu - Prüfen Sie ob ein spezieller Artikel in der Hash-Tabelle vorhanden ist - Iterieren Sie durch die Hash-Tabelle mit Hilfe des keys-iterators Bedarf an Wrapper-Klassen: Long l1 = new Long(myArtikelA.getNr()); Prof. Dr. Andreas Schmietendorf 38
39 Kritik am Collection-Konzept des JDK in der Version 1.0 Geringe Vielseitigkeit gegenüber anderen OO-Programmiersprachen Relativ schlechte Performance - Die meisten Methoden sind synchronized (setzen von Sperren) - Benötigtes Typecasting je Zugriff auf Elemente des Typs Object Schwächen der Implementierung - Keine Sortier- und Suchfunktionen - Methodennamen des Enumeration-Interfaces - Implementierung der Klasse Stack, abgeleitet von Vector (zu mächtig) Überarbeitetes Collection-Konzept im Rahmen des JDK Prof. Dr. Andreas Schmietendorf 39
40 Collections Java Collections Framework (JCF) Vorteile des Java Collections Framework: Wenige Interfaces für Sammlungsabstraktionen Je 2 Implementierungen sind bereits vorhanden Weitere spezifische Collections können selbst erstellt werden. Variantenbildung (z.b. nicht änderbar ) durch optionale Verpackung Nachteil (auch hier): Alle Sammlungen arbeiten per polymorphen Zugriff auf konkreten Objekten. Demnach sind sie nicht typsicher und können prinzipiell auch verschiedene Typen zu einem Zeitpunkt verwalten. Das JCF ist im Paket java.util enthalten Prof. Dr. Andreas Schmietendorf 40
41 Collections Java Collections Framework (JCF) Schnittstellen des JCF: Eine List ist eine beliebig große Liste von Elementen beliebigen Typs, der Zugriff kann wahlfrei oder sequentiell erfolgen. Ein Set ist eine Sammlung von Elementen ohne Duplikate auf die mit typischen Mengenoperationen zugegriffen werden kann. Ein Map ist eine Sammlung von Schlüssel-Wert-Paaren ohne Schlüsselduplikate. SortedSet/SortedMap Immer sortierte Sammlungen <<interface>> Set <<interface>> SortedSet <<interface>> Collection <<interface>> List <<interface>> Map <<interface>> SortedMap Prof. Dr. Andreas Schmietendorf 41
42 Collections Java Collections Framework (JCF) ACHTUNG: Aus Performancegründen sind die Collections des JCF durchgängig unsynchronisiert. Wird von mehr als einen Thread auf eine Collection zugegriffen, so sind die Zugriffe durch den Programmierer entsprechend zu synchronisieren. ggf. Quelle von Programmfehlern und Dateninkonsistenzen Prof. Dr. Andreas Schmietendorf 42
43 Collections Java Collections Framework (JCF) Schnittstellen des Basisinterfaces Collection: int size() boolean isempty() boolean contains(object o) Iterator iterator() Object[] toarray() Object[] toarray(object[] a) boolean add(object o) boolean remove(object o) boolean containsall(collection c) boolean addall(collection c) // Einfügen aller Elemente boolean removeall(collection c) // Löschen aller enthaltenen boolean retainall(collection c) // Löschen außer enthaltene void clear() // Löschen aller Elemente boolean equals(object o) int hashcode() Prof. Dr. Andreas Schmietendorf 43
44 Collections Java Collections Framework (JCF) Implementierungen Technik: Hash- Table Resizable Array Balanced Tree Verkettete Liste Set HashSet TreeSet Interfaces List ArrayList LinkedList Map HashMap TreeMap Prof. Dr. Andreas Schmietendorf 44
45 Collections Java Collections Framework (JCF) Das List-Interface spezifiziert eine Sammlung mit Reihenfolge und Positionsbegriff (ähnlich einem Array): interface List extends Collection{ Object get(int index); Object set(int index, Object obj); // Zugriff wie bei // einem Array void add(int index, Object obj); // verschiebt Rest +1 Object remove(int index); // verschiebt Rest -1 ListIterator listiterator(); // Vor-/Rücklauf } Prof. Dr. Andreas Schmietendorf 45
46 Collections Java Collections Framework (JCF) Zum Durchlaufen einer Collection wird das Interface Iterator eingesetzt: boolean hasnext() Object next() void remove() // löscht das zuletzt geholte Element Für eine List gibt es zusätzlich das Interface ListIterator, mit dem auch ein Rückwärtslaufen in der Liste möglich ist: boolean hasprevious() Object previous() int nextindex() int previousindex() void add(object o) void set(object o) // naechster bzw. vorheriger Index // des Iterators // Einfügen vor dem naechsten Element // Ersetzt Element next bzw. previous Prof. Dr. Andreas Schmietendorf 46
47 Collections Java Collections Framework (JCF) Durchlaufen einer Collection (ArrayList): import java.util.*; public class TestList{ public static void main(string[] args) { ArrayList list = new ArrayList(); //Füllen der Liste for (int i = 1; i <= 20; ++i){ list.add("" + i); } Iterator it = list.iterator(); while (it.hasnext()) { String s = (String) it.next(); if (s.startswith("1")) { it.remove(); } } // Löschen von Elementen // über Iterator it = list.iterator(); // Ausgeben der while (it.hasnext()) { //verbleibenden Elemente System.out.println((String) it.next()); } } } Prof. Dr. Andreas Schmietendorf 47
48 Übung 6-6 Verwenden Sie im Rahmen des Programms auf der letzten Folie das Interface ListIterator - Ausgabe der verbleibenden Elemente in umgekehrter Reihenfolge - Fügen Sie mittels void add (Object o) Elemente in die Liste ein - Ersetzen Sie mittels void set (Object o) Elemente der Liste - Welchen Wert liefert previousindex() beim Aufruf am Anfang des Iterators? - Welchen Wert liefert nextindex() wenn es am Ende des Iterators aufgerufen wird? Wie ist folgende Methode zu programmieren? static void tauschen(java.util.list l, int index1, int index2) Prof. Dr. Andreas Schmietendorf 48
49 Collections Java Collections Framework (JCF) In der Klasse java.util.collections gibt es folgende statische Methoden: auf der Collection List: sort(list l) shuffle(list l) reverse(list l) binarysearch(list l, Object obj) Sortieren (MergeSort) Reihenfolge der Elemente durcheinander bringen Reihenfolge der Elemente umdrehen Suchen in sortierter Liste mit Aufwand O(log n) auf Collection: min(collection c) max(collection c) Kleinster Wert der Sammlung Größter Wert der Sammlung Prof. Dr. Andreas Schmietendorf 49
50 Collections Java Collections Framework (JCF) Beispiel: Anwendung binäre Suche (max. Aufwand log(n)): public class Comp { public static void main(string[] args) { //Konstruieren des Sets ArrayList s = new ArrayList(); s.add("kiwi"); s.add("zitrone"); s.add("ananas"); s.add("kirsche"); s.add("banane"); //Sortierte Ausgabe Collections.sort(s); System.out.println(Collections.binarySearch(s,"Zitrone")); Iterator it = s.iterator(); while (it.hasnext()) { System.out.println((String)it.next()); }} Prof. Dr. Andreas Schmietendorf 50
51 Collections Java Collections Framework (JCF) In der Collections-Klasse kann für eine Liste auch eine erweiterte sort-methode aufgerufen werden: static void sort(list list, Comparator c) Diese Möglichkeit, eine Liste zu sortieren, benutzt ein Objekt des Typs Comparator. Comparator ist ein Interface, das lediglich eine einzige Methode compare definiert: public int compare(object o1, Object o2) Werden nun verschiedene von Comparator abgeleitete Klassen angelegt, können auch verschiedene Sortierkriterien realisiert werden Prof. Dr. Andreas Schmietendorf 51
52 Collections Java Collections Framework (JCF) Beispiel: Anwendung Comparator-Objekt: public class TestComparator { public static void main(string[] args) { //Konstruieren des Sets List s = new List(); s.add("kiwi"); s.add("zitrone"); s.add("ananas"); //Rückwärts sortierte Ausgabe Collections.sort(s, new ReverseStringComparator()); Iterator it = s.iterator(); while (it.hasnext()) { System.out.println((String)it.next()); } } } class ReverseStringComparator implements Comparator { public int compare(object o1, Object o2) { return ((String)o2).compareTo((String)o1); } } Prof. Dr. Andreas Schmietendorf 52
53 Übung 6-7 Experimentieren Sie mit den statischen Methoden der Klasse java.util.collections. - Sortieren - Mischen der Elemente - Suche nach Elementen - Suche nach dem kleinsten und größten Wert Erweitern Sie Ihre Artikelverwaltung um die Möglichkeit, die Artikel nach verschiedenen Kriterien zu sortieren. Geben Sie die Artikel (in Abhängigkeit einer Nutzerauswahl) jeweils sortiert nach Bezeichnung, Artikelnummer und Preis aus! Prof. Dr. Andreas Schmietendorf 53
Java Schulung. Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen. Prof. Dr. Nikolaus Wulff
Java Schulung Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen Prof. Dr. Nikolaus Wulff Collections in Java 2 Java 2 Collections: http://java.sun.com/products/jdk/1.2/docs/guide/collections/index.html
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
MehrGliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions
try-catch Schlüsselworte try-catch e Schlüsselwort Schlüsselwort selbst erstellte ermöglichen die Behandlung von Fehlern, die zur Laufzeit entstehen. try-catch in C: Fehler führt immer zum Abbruch des
MehrBeispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf
16 Exceptions Zur Behandlung unerwarteter Situationen bietet Java Unterstützung in Form von Exceptions oder Ausnahmen. Den Sinn von Exceptions können wir Ihnen an einem kleinen Beispiel klarmachen. Nehmen
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]...
MehrGrundlagen der Informatik Generische Klassen
Grundlagen der Informatik Generische Klassen Generische Klassen, das Java-Collection-Framework und mehr Generische Programmierung Beobachtung: In vielen Problemstellungen hängt der grundsätzliche Aufbau
MehrFehler die bei der Programmerstellung passieren können teilweise vom Compiler erkannt werden
Exceptions Fehler die bei der Programmerstellung passieren können teilweise vom Compiler erkannt werden int a; double b=10; a = 10 * b; System.out.println(a); Fehler die während der Programmausführung
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
MehrTeil II. Objektorientierte Programmierung und objektorientierter Entwurf
Teil II Objektorientierte Programmierung und objektorientierter Entwurf 39 Kapitel 8 Robuste Programme durch Ausnahmebehandlung Ziele: Lernen, robuste Programme zu schreiben Ausnahmen als Objekte verstehen
MehrExceptions. Prof. Dr. Margarita Esponda SS 2012. M. Esponda-Argüero
Exceptions Prof. Dr. Margarita Esponda SS 2012 1 Ausnahmen Eine Ausnahme (Exception) ist ein Fehler oder ein nicht geplantes Ereignis, das während der Ausführung eines Programms vorkommt und dessen normalen
MehrDr. Monika Meiler. Inhalt
Inhalt 11 Dynamische Verwaltung großer Datenmengen... 11-2 11.1 Einige spezielle Klassen des Paketes java.lang.*... 11-2 11.1.1 Klasse Throwable, Exception und Error... 11-2 11.1.2 Klasse Object... 11-7
MehrSystem.out.println("lO : "+lo); Nähere Informationen zur API. System.out.println("dO : "+do); http://java.sun.com/j2se/1.5.0/ } docs/api/java/math/
Online Test Datum Montag der 19.01.2009 Uhrzeit Von 8.15 bis 9.45 Raumbelegung Wird noch bekannt gegeben (Aushang) Bewertung Maximale Punktzahl 20 Bestanden bei 50% Zum Bestehen des Praktikums muss der
MehrVorlesung 09: Mengen. Peter Thiemann SS 2010
Vorlesung 09: Mengen Peter Thiemann Universität Freiburg, Germany SS 2010 Peter Thiemann (Univ. Freiburg) JAVA 1 / 43 Inhalt Mengen HashSet LinkedHashSet CopyOnWriteArraySet EnumSet SortedSet NavigableSet
Mehrequals und hashcode SortedSet NavigableSet Assoziative Container Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 32
Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 32 equals und hashcode SortedSet NavigableSet Assoziative Container 2 / 32 HashSet mit eigener Klasse Wie kann man einen
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 12. Fehler und Ausnahmen
1 Kapitel 12 Ziele 2 Fehlerquellen in Programmen und bei der Programmausführung kennenlernen Das Java-Konzept der Ausnahmen als Objekte verstehen Ausnahmen auslösen können Ausnahmen behandeln können Fehlerhafte
MehrJava Generics & Collections
Java Praktikum Effizientes Programmieren (Sommersemester 2015) Dennis Reuling Agenda 1 2 3 1 / 30 Praktikum Effizientes Programmieren (Sommersemester 2015) Java Subtyping Teil 1 2 / 30 Praktikum Effizientes
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)
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()
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
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
MehrBäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.
Universität Osnabrück 1 Bäume 3 - Objektorientierte Programmierung in Java Vorlesung 10: Collections 4 Einführung Bäume sind verallgemeinerte Listenstrukturen Lineare Liste Jedes Element hat höchstens
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
MehrSchnittstellen implementieren am Beispiel Suchbaum
Motivation Informatik mit Java und BlueJ Schnittstellen implementieren am Beispiel Suchbaum von Bernhard Rosing Schreiben Sie eine Klasse Person, deren Instanzen in ein TreeSet (Suchbaum) eingefügt werden
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
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
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
MehrVorlesung Programmieren
Vorlesung Programmieren 15 Java API Prof. Dr. Ralf H. Reussner Version 1.0 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD), FAKULTÄT FÜR INFORMATIK
MehrKapitel 6. Vererbung
Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen
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,
MehrVorlesung Programmieren
Vorlesung 25.01.2007 Wintersemester 2006/2007 Computerlinguistik, Campus DU Überblick Seite 2 Datenströme: Ein und Ausgabe von Daten Java Collections Framework Eingabe/Ausgabe Seite 3 Lesen, Schreiben
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
MehrDatenstrukturen in Java
Datenstrukturen in Java SEP 350 Datenstrukturen Datenstrukturen ermöglichen Verwaltung von / Zugriff auf Daten (hier: Objekte) Datenstrukturen unterscheiden sich duch Funktionalität Implementierung modulares
MehrProgrammieren in Java
Programmieren in Java Fehlerbehandlung und Ein- und Ausgabe Titel der Präsentation 2 Fehler = Exceptions? Die Exception- bzw. Ausnahmebehandlung in Java ist eine spezielle Form der Fehlerbehandlung Typischerweise
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
MehrJava für Computerlinguisten
Java für Computerlinguisten 2. Objektorientierte Programmierung Christian Scheible Institut für Maschinelle Sprachverarbeitung 28. Juli 2009 Christian Scheible Java für Computerlinguisten 28. Juli 2009
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
MehrÜbersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung
Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des
MehrInformatik II. /* c) Baumstruktur in einen String schreiben und zurueckgeben */ public String tostring() {
Universität Augsburg, Institut für Informatik Sommersemester 2006 Prof. Dr. Werner Kießling 08. Juni. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5 Aufgabe 1: Cloneable Tree.java Informatik II
MehrInf 12 Aufgaben 14.02.2008
Inf 12 Aufgaben 14.02.2008 Übung 1 (6 Punkte) Ermitteln Sie eine mathematische Formel, die die Abhängigkeit der Suchzeit von der Anzahl der Zahlen N angibt und berechnen Sie mit Ihrer Formel die durchschnittliche
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
Mehr5.13 Umgang mit Fehlern
5.13 Umgang mit Fehlern Klassifikation von Fehlern: Syntaxfehler: Lexikalische Fehler: Falsche oder unbekannte Worte String s neu String("Max"); Falsche Anordnung von Anweisungen: Falscher Typ: import
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
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
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
Mehrvon Anja Austermann Drag and Drop
von Anja Austermann Drag and Drop »Drag and Drop«ist die Bezeichnung für den Datentransfer zwischen unterschiedlichen Anwendungen mit grafischer Benutzeroberfläche. Zur Zeit arbeitet Drag and Drop in Java
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
MehrDatenbankanwendungsprogrammierung Crashkurs Java
Datenbankanwendungsprogrammierung Crashkurs Java Denny Priebe Datenbankanwendungsprogrammierung p. Unterschiede zu C, C++ typedefs, Präprozessor Strukturen, Unions globale Funktionen Mehrfachvererbung
MehrDistributed Computing Group
JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird
MehrGenerische Datenstrukturen
Generische Datenstrukturen Prof. Dr. rer. nat. habil. Uwe Aßmann Lehrstuhl Softwaretechnologie Fakultät für Informatik TU Dresden Softwaretechnologie, Prof. Uwe Aßmann 1 2 Trends in der Softwareentwicklung
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und
MehrGenerische Typen in Java 1.5. Die Erweiterung der Java Language Specification
Generische Typen in Java 1.5 - Seminarvortrag 1/26 Generische Typen in Java 1.5 Die Erweiterung der Java Language Specification Seminarvortrag von Heiko Minning, mi3795 bei Prof. Dr. Uwe Schmidt, FH-Wedel
MehrGrundlagen der Informatik Ausnahmebehandlung & Threads
Grundlagen der Informatik Ausnahmebehandlung & Threads Prof. Dr. Bernhard Schiefer (basierend auf Unterlagen von Prof. Dr. Duque-Antón) bernhard.schiefer@fh-kl.de http://www.fh-kl.de/~schiefer Inhalt Ausnahmebehandlung
MehrGrundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
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,
MehrEinführung in die. objektorientierte Programmierung
Einführung in die objektorientierte Programmierung Teil 3 Vererbung Modul WI111: Objektorientierte Programmierung Fachrichtung Wirtschaftsinformatik Prof. Dr. Gert Faustmann Fachbereich Berufsakademie
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
Mehr14. Tutorium zu Programmieren
14. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2009 by IPD Snelting
MehrSynchronisation in Java. Invisible Web
Synchronisation in Java Studienprojekt Invisible Web Tang Zhihong Synchronisation in Java Synchronisationsproblem Monitore Wait und notify PipedInputStream und PipedOutputStream Synchronisation von Collections
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:
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
MehrVererbung & Schnittstellen in C#
Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
MehrVersuchsziele Kenntnisse in der Anwendung von: Sortieren mit Klassen Benutzung von generischen Klassen o Definition o Sortierung.
Hochschule Harz Programmierung1 Tutorial 11: FB Automatisierung und Informatik Dipl.-Inf. Dipl.-Ing. (FH) M. Wilhelm Programmierung 1 für MI / WI Thema: Sortieren und generische Klassen Versuchsziele Kenntnisse
Mehr12) Generische Datenstrukturen
12) Generische Datenstrukturen Prof. Dr. rer. nat. habil. Uwe Aßmann Lehrstuhl Softwaretechnologie Fakultät für Informatik TU Dresden Version 09-0.2, 24.11.08 Softwaretechnologie, Prof. Uwe Aßmann 1 mpfohlene
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
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
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. 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/
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume
1 Kapitel 13 Ziele 2 Den Begriff des Baums in der Informatik kennenlernen als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf n verstehen und schreiben können Verschiedene Möglichkeiten
MehrInformatik 11 Kapitel 2 - Rekursive Datenstrukturen
Fachschaft Informatik Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Michael Steinhuber König-Karlmann-Gymnasium Altötting 15. Januar 2016 Folie 1/77 Inhaltsverzeichnis I 1 Datenstruktur Schlange
Mehr3. Konzepte der objektorientierten Programmierung
3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung
MehrKapitel 9. Inner Classes. 9.1 Wiederholung: Iteratoren. Ausführen einer Operation auf allen Elementen einer Containerklasse
Kapitel 9 Inner Classes 9.1 Wiederholung: Iteratoren Ausführen einer Operation auf allen Elementen einer Containerklasse (zb Liste, Baum,...) vgl. map/f old in der funktionalen Programmierung. Aber: higher-order
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:
MehrJava Real-Time Specification
Ausgewählte Kapitel eingebetteter Systeme Java Real-Time Specification Tobias Distler 05.07.2006 Java und Echtzeit? Problem Nichtdeterministisches Verhalten der Garbage Collection Weitere Nachteile Scheduling
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"
MehrBetreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung
SS 2011 Fakultät für Angewandte Informatik Lehrprofessur für Informatik 15.06.2011 Prof. Dr. Robert Lorenz Betreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung Programmieraufwand für geübte
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
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
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
MehrJDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.
JDBC in 5 Schritten JDBC (Java Database Connectivity) ist eine Sammlung von Klassen und Schnittstellen, mit deren Hilfe man Verbindungen zwischen Javaprogrammen und Datenbanken herstellen kann. 1 Einrichten
MehrPersistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten)
Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) O/R Mapping - Objekte (Attribute) - 1:1, 1:n, n:m Beziehungen - Vererbungen (- Interfaces)
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
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
MehrSpec# Einführung. Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba
Spec# Einführung Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba Inhalt Einführung in C# Das Spec# System Die Konstrukte Vererben der Verträge System Architektur Einführung
MehrJava Einführung Methoden in Klassen
Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding
MehrSoftware Engineering Klassendiagramme Einführung
Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt
MehrAbschnitt 9: Schnittstellen: Interfaces
Abschnitt 9: Schnittstellen: Interfaces 9. Schnittstellen: Interfaces 9.1 Die Idee der Schnittstellen 9.2 Schnittstellen in Java 9.3 Marker-Interfaces 9.4 Interfaces und Hilfsklassen 9.5 Zusammenfassung
MehrJava für C++ Programmierer
Java für C++ Programmierer Alexander Bernauer bernauer@inf.ethz.ch Einführung in die Übungen zu Informatik II (D ITET) FS2010 ETH Zürich Ziel Allgemeiner Überblick Kennenlernen der Suchbegriffe Warum Java?
MehrProgrammdokumentation
Programmdokumentation Der 1. Abgabe am 29.10.1998 über das 1. und 2. Programm INHALTSVERZEICHNIS: 1 ERSTES PROGRAMM: RECHNUNGSERSTELLUNG... 2 1.1 MODULARISIERUNG UND DATENSTRUKTUR... 2 1.1.1 Grundidee:
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
MehrRemote Method Invocation
Remote Method Invocation Aufruf von Methoden über die Grenzen der VM hinweg. Javaprozesse der rufenden und gerufenen Methode können auf verschiedenen Hosts laufen. Eine RMI-Applikation besteht aus dem
MehrObjekt-Orientierte Programmierung
Objekt-Orientierte Programmierung Ein OO-Programm modelliert eine Anwendung als eine Welt von Objekten, die miteinander in Beziehung stehen ( später). Ein Objekt kann andere Objekte erzeugen. Ein Objekt
MehrVorlesung Informatik II
Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 02. JAVA: Erstes Programm 1 Das erste Java-Programm
MehrLeJOS: Mindstorms in Java programmieren
LeJOS: Mindstorms in Java programmieren Alexander Koller Softwareprojekt "Sprechende Roboter" 30. April 2004 Überblick Warum Java? Was ist LeJOS? Motoren steuern Auf Sensoreingaben reagieren Wie geht's
Mehr// Zeigt den insgesamt einbezahlten Betrag auf der Bank. // Muss 1600 GE sein. System.out.println("Current Bank balance: " + b.
/ Testtreiberklasse, welche das Bankensystem testet. Es werden neue Bankkonten angelegt und Geld deponiert, abgehoben und transferiert. public class Main { / Main Methode fuehrt bestimmte Testfaelle aus.
MehrDr. Monika Meiler. Inhalt
Inhalt 5 Referenzdatentypen - Felder... 5-2 5.1 Eindimensionale Felder - Vektoren... 5-3 5.1.1 Vereinbarung... 5-3 5.1.2 Referenzen sind keine Felder... 5-4 5.1.3 Kopieren eindimensionaler Felder... 5-6
MehrMusterlösung Übungsblatt 2 Netzprogrammierung WS 05/06
Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06 Aufgabe 1 Bitte schreiben Sie ein RMI Objekt, das eine Person repräsentiert. Es soll die folgende Schnittstelle implementieren: public interface Person
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
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........................
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
Mehr