Objektorientierte Softwareentwicklung

Größe: px
Ab Seite anzeigen:

Download "Objektorientierte Softwareentwicklung"

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

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

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Gliederung 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

Mehr

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf

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

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

Grundlagen der Informatik Generische Klassen

Grundlagen 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

Mehr

Fehler die bei der Programmerstellung passieren können teilweise vom Compiler erkannt werden

Fehler 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

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

Teil II. Objektorientierte Programmierung und objektorientierter Entwurf

Teil 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

Mehr

Exceptions. Prof. Dr. Margarita Esponda SS 2012. M. Esponda-Argüero

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

Mehr

Dr. Monika Meiler. Inhalt

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

Mehr

System.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/

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

Mehr

Vorlesung 09: Mengen. Peter Thiemann SS 2010

Vorlesung 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

Mehr

equals und hashcode SortedSet NavigableSet Assoziative Container Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 32

equals 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

Mehr

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

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

Mehr

Java Generics & Collections

Java 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

Mehr

Objektorientierte Programmierung

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

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

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

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

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

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

Mehr

Kapitel 6. Vererbung

Kapitel 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

Mehr

Schnittstellen implementieren am Beispiel Suchbaum

Schnittstellen 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

Mehr

Kapitel 6. Vererbung

Kapitel 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

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

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

Mehr

Studentische Lösung zum Übungsblatt Nr. 7

Studentische 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

Mehr

Vorlesung Programmieren

Vorlesung 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

Mehr

Kapitel 6. Vererbung

Kapitel 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

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

Vorlesung Programmieren

Vorlesung 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

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

Datenstrukturen in Java

Datenstrukturen 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

Mehr

Programmieren in Java

Programmieren 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

Mehr

Objektorientierte Programmierung

Objektorientierte 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

Mehr

Java für Computerlinguisten

Java 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

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

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Ü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

Mehr

Informatik II. /* c) Baumstruktur in einen String schreiben und zurueckgeben */ public String tostring() {

Informatik 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

Mehr

Inf 12 Aufgaben 14.02.2008

Inf 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

Mehr

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

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

Mehr

5.13 Umgang mit Fehlern

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

Mehr

Programmieren in Java

Programmieren 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

Mehr

Aufgabenblatt Nr. 5 Generizität und TicTacToe

Aufgabenblatt 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

Mehr

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

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

Mehr

von Anja Austermann Drag and Drop

von 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

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

Datenbankanwendungsprogrammierung Crashkurs Java

Datenbankanwendungsprogrammierung Crashkurs Java Datenbankanwendungsprogrammierung Crashkurs Java Denny Priebe Datenbankanwendungsprogrammierung p. Unterschiede zu C, C++ typedefs, Präprozessor Strukturen, Unions globale Funktionen Mehrfachvererbung

Mehr

Distributed Computing Group

Distributed 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

Mehr

Generische Datenstrukturen

Generische 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

Mehr

3 Objektorientierte Konzepte in Java

3 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

Mehr

Generische Typen in Java 1.5. Die Erweiterung der Java Language Specification

Generische 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

Mehr

Grundlagen der Informatik Ausnahmebehandlung & Threads

Grundlagen 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

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

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

Mehr

Folge 18 - Vererbung

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

Mehr

Einführung in die. objektorientierte Programmierung

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

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

14. Tutorium zu Programmieren

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

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

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

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

Vererbung & Schnittstellen in C#

Vererbung & 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

Mehr

3 Objektorientierte Konzepte in Java

3 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

Mehr

Versuchsziele Kenntnisse in der Anwendung von: Sortieren mit Klassen Benutzung von generischen Klassen o Definition o Sortierung.

Versuchsziele 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

Mehr

12) Generische Datenstrukturen

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

Mehr

Beispiel: DB-Mock (1/7)

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

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

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

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte 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/

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume

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

Mehr

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Informatik 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

Mehr

3. Konzepte der objektorientierten Programmierung

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

Mehr

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

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

Java Real-Time Specification

Java 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

Mehr

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Einfache 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"

Mehr

Betreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung

Betreutes 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

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

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das 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

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

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

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

Mehr

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

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: 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,

Mehr

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen 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

Mehr

Spec# 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 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

Mehr

Java Einführung Methoden in Klassen

Java 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

Mehr

Software Engineering Klassendiagramme Einführung

Software 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

Mehr

Abschnitt 9: Schnittstellen: Interfaces

Abschnitt 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

Mehr

Java für C++ Programmierer

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

Mehr

Programmdokumentation

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

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

Remote Method Invocation

Remote 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

Mehr

Objekt-Orientierte Programmierung

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

Mehr

Vorlesung Informatik II

Vorlesung 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

Mehr

LeJOS: Mindstorms in Java programmieren

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

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

Mehr

Dr. Monika Meiler. Inhalt

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

Mehr

Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06

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

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

Prinzipien Objektorientierter Programmierung

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

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