CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)
|
|
- Nelly Lichtenberg
- vor 8 Jahren
- Abrufe
Transkript
1 CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Klassenbibliothek Kollektionen Anforderungen der Kollektionen an ihre Elemente Iteratoren Seite 1
2 Klassenbibliothek Seite 2
3 Java = Sprache + Bibliothek Java = Sprachkern + Klassenbibliothek Klassenbibliothek Sammlung von vordefinierten Klassen für allgemeine wiederkehrende Aufgaben Java Klassenbibliothek definiert als <Java Versionsbezeichnung> API Specification z.b. Java Platform Standard Edition 6.0 API Specification siehe java.sun.com/docs, realisiert in den Java-Distributionen z.b. JDK (Java Development Kit 1.6.0) organisiert in Pakete java.applet... viele viele weitere Pakete mit vielen Klassen... org.xml.sax.helpers Seite 3
4 Klassenbibliothek Klassenbibliothek Organisiert in Pakete Beispiel-Pakete jeweils mit einer Beispiel-Klasse und einer Beispiel-Methode javax.swing JOptionsPane JOptionsPane.showMessageDialog java.lang Integer Integer. parseint java.util Arrays Arrays.sort Seite 4
5 Klassenbibliothek wichtige Pakete der Klassenbibliothek java.lang enthält Dinge von fundamentaler Bedeutung, z.b.: Integer Math Object... java.util allgemein verwendbare Hilfsklassen (Utilities) speziell für die Arbeit mit Feldern und anderen Kollektionen, z.b.: Arrays Collections ArrayList HashSet... java.awt, javax.swing enthält Nützliches zur Konstruktion graphischer Oberflächen Seite 5
6 Klassenbibliothek: API Doku immer bereit halten! Seite 6
7 Kollektionen Seite 7
8 Kollektionen Kollektionen (Collection): Abstrakte Datentypen zur Verwaltung von Elementen in Java nicht als vordefinierte Sprachelemente verfügbar, sondern als Bestandteil der Standard-Bibliothek Beispiele: Mengen, Listen, Abbildungen Java-Klassenbibliothek Paket java.util enthält Schnittstellen und Klassen zum Umgang mit Kollektionen Collection Framework: Zusammenhängendes System aus Klassen- und Schnittstellendefinitionen in der Klassenbibliothek Kollektionstypen der Java-Klassenbibliothek gibt es in drei Grund-Varianten List Set Map Listen Mengen Abbildungen Seite 8
9 Kollektionen: Liste ArrayList (java.util.arraylist) Als Typ einer Variablen oder eines Parameters möglichst ein Interface verwenden! Eine Klasse die den ADT Liste auf Basis von Arrays implementiert import java.util.arraylist; import java.util.list; jede Art Integer-Liste ist willkommen public final class Test { public static void lister(list<integer> l){ for (Integer i : l) System.out.println(i); jede Art Integer-Liste ist als Wert erlaubt public static void main(string[] args) { List<Integer> l = new ArrayList<Integer>(); l.add(5); lister(l); eine Array-basierte Implementierung von ArrayList als List-Implementierung Seite 9 Liste erzeugen
10 Kollektionen: Liste import import import import import java.io.file; java.util.arraylist; java.util.collections; java.util.list; javax.swing.jfilechooser; Beispiel: MP3-Dateien in einem Verzeichnis sortiert auflisten public final class MusicCollection { private MusicCollection() { private static File choosefile(string msg) { JFileChooser fc = new JFileChooser(); fc.setfileselectionmode(jfilechooser.directories_only); int returnval = fc.showdialog(n ull, msg); if (returnval == JFileChooser.APPROVE_OPTION) { ret urn fc.getselectedfile(); else { retur n n ull; public static void main(string[] args) { File directory = choosefile("verzeichnis mit Musik"); Liste erzeugen: Größe nach Bedarf! Element zu Liste hinzu fügen List<String> songs = new ArrayList<String>(); for (String filename : directory.list()) { if (filename.endswith(".mp3")) { songs.add(filename.trim()); Collections. sort (songs); Liste sortieren for (String song : songs) { String[] splited = song.split("\\s+-\\s+"); Liste durchlaufen if (splited.length >= 2) { System.out.println("Interpret : "+splited[0]+"\n\ttitel: "+ splited[1]); else { System.out.println(song); Seite 10
11 <<interface>> Kollektionen: Liste List java.util.list, java.util.arraylist, ArrayList java.util.linkedlist LinkedList... List<Integer> l = new Liste(); List<Integer>();... ein Interface hat keine Objekte!... List<Integer> l = null; l = new ArrayList<Integer>(); l = new LinkedList<Integer>();... eine Variable mit Interface-Typ kann mit allen passenden Implementierungen belegt werden public void m(list<integer> l){... l. listmethode m( new ArrayList<Integer>() );... m( new LinkedList<Integer>() );... eine Methode mit Parameter mit InterfaceTyp kann mit allen passenden ParameterImplementierungen umgehen Seite 11
12 <<interface>> Kollektionen: Liste List java.util.list<e> ArrayList generischer ADT Liste Verwendung LinkedList Datentyp mit Listeneigenschaft-Eigenschaft: linear sortierte Folge mit Sortierung unter der Kontrolle der Anwendung Liste: Konzept / ADT-Sicht 1) 2) 3) 4) 5) 6) A B C D K L java.util Interface List<E> Liste: Benutzer-kontrollierte Folge von Elementen: Die Position von x in einem List-Typ hängt davon ab, wohin die Anwendung es positioniert. Seite 12
13 <<interface>> Kollektionen: Liste List java.util.arraylist<e> ArrayList ist die Array-Implementierung (Datenstruktur Feld/Array) eines generischen ADT Liste LinkedList Verwendung Datentyp mit Listeneigenschaft-Eigenschaft: linear sortierte Folge mit Sortierung unter der Kontrolle der Anwendung Datenstruktur Array: schnelles indiziertes Zugreifen, kompakte Speicherung Einfügen nicht häufig 1) 2) 3) 4) Liste Konzept / 5) ADT-Sicht 6) A B C D K L Liste Datenstruktur-Sicht: Array-Implementierung Seite 13 java.util Class ArrayList<E> LinkedList wenn oft indiziert zugegriffen und selten eingefügt / entfernt wird. A B C D K L
14 <<interface>> Kollektionen: Liste List java.util.linkedlist<e> ArrayList ist die Zeiger-Implementierung (Datenstruktur verkettete Liste) eines generischen ADT Liste LinkedList Verwendung Datentyp mit Listeneigenschaft-Eigenschaft: linear sortierte Folge mit Sortierung unter der Kontrolle der Anwendung Datenstruktur verkettete Liste: schnelles Einfügen / Entfernen an beliebigen Positionen 1) 2) 3) 4) Liste 5) Konzept / ADT-Sicht 6) A B C D K L java.util Class LinkedList<E> LinkedList wenn oft eingefügt / entfernt und selten indiziert zugegriffen wird. A B C D K L Liste Datenstruktur-Sicht: Implementierung als verkettete Liste Seite 14
15 Kollektionen: List, ArrayList und LinkerdList ArrayList Array-basierte Listenimplementierung schneller Zugriff / weniger Speicherbedarf aufwendiges Einfügen / Entnehmen (Umkopieren, eventuell neu anlegen) List-Interface ArrayList LinkedList Durch Referenzen verkettete Elemente Zugriff langsam / mehr Speicherplatz Einfügen / Entnehmen schnell List-Interface LinkedList Seite 15
16 Kollektionen: Abbildung (Map) <<interface>> Map java.util.map<k,v> TreeMap generischer ADT Abbildung HashMap Beispiel: HashMap<String, Integer> map = new HashMap<String, Integer>(); //Werte eintragen map.put("peter", 4711); map.put("inge", 8150); map.put("klaus", 2222); java.util Interface Map<K,V> //Wert zu eine Schluessel System.out.println( "Klaus hat die Nr: " + map.get("klaus") ); Seite 16
17 Kollektionen: Abbildung (Map) File directory = choosefile("verzeichnis mit Musik"); Map<String, List<String>> songdirectory = new HashMap<String, List<String>>(); for (String filename : directory.list()) { if (filename.endswith(".mp3")) { int idot = filename.lastindexof('.'); filename = filename.substring(0, idot); Abb: Interpret ~> Liste der Titel String[] splited = filename.trim().split("\\s+-\\s+"); String interpret = null; String titel = null; if (splited.length >= 2) { interpret = splited[0]; titel = splited[1]; for (int i = 2; i < splited.length; i++) { titel = splited[1] + splited[i]; else { interpret = "Unbekannt"; titel = filename.trim(); List<String> songs = songdirectory.get(interpret); if (songs == null) { songs = new LinkedList<String>(); Liste der Titel von interpret songdirectory.put(interpret, songs); songs.add(titel); songdirectory.put(interpret, songs); for (String i : songdirectory.keyset()) { System.out.println("Interpret : " + i); for (String t : songdirectory.get(i)) { System.out.println("\t" + t); Menge der Schlüssel der Abb. (die Interpreten) Beispiel: MP3-Dateien in einem Verzeichnis sortiert nach Interpret ausgeben Seite 17
18 Kollektionen: Abbildung (Map) <<interface>> Map java.util.treemap<k,v> TreeMap ist die Baum-Implementierung (Datenstruktur Baum) eines generischen ADT Abbildung HashMap Verwendung Datentyp mit Abbildungstyp-Eigenschaft: Abbildung von K-Objekten auf V-Objekte (Key, Value) z.b. Name (String) Telefonnummer (Integer) Datenstruktur Baum: schnelles Einfügen und Suchen sortierte Steicherung Abbildung: Konzept / ADT-Sicht A B C D K L X Y Z U V W java.util Class TreeMap<K,V> C Z K V A X Abbildung, Datenstruktur-Sicht: BaumImplementierung Seite 18 B Y D U L W
19 Kollektionen: Abbildung (Map) <<interface>> Map java.util.hashmap<k,v> TreeMap ist die Hash-Implementierung (Datenstruktur Hash-Tabelle) eines generischen ADT Abbildung Verwendung Datentyp mit Abbildungstyp-Eigenschaft: HashMap Abbildung von K-Objekten auf V-Objekte (Key, Value) z.b. Name (String) Telefonnummer (Integer) java.util Class HashMap<K,V> Datenstruktur Hash-Tabelle: schnelles Einfügen und Suchen Abbildung: Konzept / ADT-Sicht A B C D K L X Y Z U V W HashCode der Keys Abbildung, datsnstrutur-sicht: Hash-TabellenImplementierung Seite 19 D U C Z K V A X B Y L W
20 Kollektionen: Menge (Set) <<interface>> Set java.util.set<e> TreeSet generischer ADT Menge (keine Duplikate, Verzicht auf Benutzer-gesteuerte Reihenfolge der Elemente) HashSet Beispiel: Set<Integer> primzahlen = new TreeSet<Integer>(); Scanner scan = new Scanner(System.in); java.util Interface Set<E> for (int i = 0; i < 10; i++) { Integer z = scan.nextint(); if (prim(z)) { primzahlen.add(z); A C K D L B Sets nimmt man nicht nur, wenn man Mengen benötigt, sondern auch, wenn Dinge sortiert aufbewahrt werden sollen, ihre Sortierung aber rein intern sein kann. D.h. wenn für die Anwendung die Art (Reihenfolge) der Speicherung nicht interessant ist und die Implementierung darum nach eigenen Vorstellungen speichern darf. Das macht eventuell ein sehr effizientes (weil von der Bibliothek implementiertes) Suchen und Einfügen möglich. Seite 20 Menge: Konzept / ADT-Sicht
21 Kollektionen: Menge (Set) <<interface>> Set java.util.treeset<e> TreeSet ist die Baum-Implementierung (Datenstruktur Baum) eines generischen ADT Menge (~ BaumMenge von oben) HashSet Verwendung Datentyp mit Mengen-Eigenschaft (keine Duplikate) Verwendung einer Menge statt Liste: java.util mit interner Sortierung Class TreeSet<E> schnelles Suchen C K A Menge: Konzept / ADT-Sicht A C K D L B Menge, Datenstruktur-Sicht: BaumImplementierung Seite 21 B D L
22 Kollektionen: Menge (Set) <<interface>> Set java.util.hashset<e> ist die Hash-Implementierung (Datenstruktur Hash-Tabelle) eines generischen ADT Menge Verwendung Datentyp mit Mengen-Eigenschaft Datenstruktur Hash-Tabelle: schnelles Einfügen, Entfernen und Suchen keine interne Sortierung HashCode der Elemente Menge: Konzept / ADT-Sicht A C K D L B Menge Datenstruktur-Sicht: Hash-TabellenImplementierung Seite 22 TreeSet HashSet java.util Class HashSet<E> D C K A L B
23 Helferklasse Collections Collections Helfer-Klasse aus java.util arbeitet auf Kollektionen (z.b. ArrayList) vergleichbar mit der Klasse Arrays für Felder List<Integer> l = new ArrayList<Integer>();... l fuellen... // l sortieren: Collections.sort(l); // l ausgeben: System.out.println(a.toString()); Seite 23
24 Helferklasse Arrays Arrays Helfer-Klasse aus java.util mit statischen Methoden ist kein Array! Collections Helfer-Klasse aus java.util mit statischen Methoden ist keine Kollektion! Collection Basis-Interface für List und Set Kollektion, Kollektions-Typen Kollektion, Collection: Sammelbegriff für vordefinierte Klassen der Bibliothek Alternativen zu array definiert im Paket java.util Beispiel einner Kollektionsklasse: ArrayList Seite 24
25 Collections Framework: Übersicht Framework (Rahmen): System vorgegebener Definitionen in die eigene Implementierungen eingepasst werden. aus Die Interfaces Set / List / Map /... beschreiben Funktionalitäten, die auf unterschiedliche Art in Klassen implementiert sind. Collection Set... Map List ArrayList LinkedList Seite LinkedHashMap...
26 Collections Framework: Namenskonvention Namenskonvention: Implementierungs-Art Implementiertes Interface Beispiele: ArrayList LinkedList HashMap TreeMap HashSet TreeSet Seite 26
27 Collections: Referenz-Semantik In einer Kollektion werden stets nur Referenzen gespeichert ArrayList<Integer> l = new ArrayList<Integer>(); l.add( 128 ); l.add( 128 ); l if ( l.get(0) == l.get(1) ) System.out.println( l.get(0)+" = "+l.get(1) ); else System.out.println( l.get(0)+"!= "+l.get(1) ); if ( l.get(0).equals(l.get(1)) ) System.out.println( l.get(0)+" equals "+l.get(1) ); else System.out.println( l.get(0)+"!equals "+l.get(1) ); Ausgabe: Seite 27 null != equals 128
28 Generische und nicht generische Kollektionen generische Kollektion keine primitiven Typen hier! (ab Java 5) Kollektion mit festgelegtem ElementTyp. Element-Typ nicht primitiv! nicht generische Kollektion Element-Typ wird nicht explizit angegeben Kollektion kann Elemente unterschiedlichen Typs aufnehmen. Keine primitiven Typen in Kollektionen! ArrayList<Integer> l = new ArrayList<Integer>(); l.add(1); l.add("hallo"); ArrayList l = new ArrayList(); l.add(1); //l.add(new Integer(1)); l.add("hallo"); Autoboxing: automatische Konversion int => Integer Im Normalfall (kein Typenmix) generische Kollektionen verwenden! Seite 28
29 Nun, wer hat denn brav sein equals implementiert? Kollektionen: Anforderungen an die Elemente Seite 29
30 Hashing Hashing: Methode zur Speicherung von Zuordnungen: Schlüssel Wert Das Hashverfahren beruht auf einer Schlüsseltransformation. Dem Schlüssel (beliebiges Objekt) wird dabei eine Schlüsselwert (int-wert) zugeordnet Die Speicheradresse eines Datensatzes wird ohne zusätzliche Hilfsstrukturen aus dem Schlüsselwert berechnet. (Beispielsweise als Index in einem Array, der Hashtabelle.) Die Beziehung zwischen Schlüsselwert und Speicheradresse wird durch eine Hashfunktion hergestellt. Die Anwendung dieser Funktion auf den Schlüsselwert ergibt die Speicheradresse Seite 30 java.util Class HashMap<K,V> java.util Class HashSet<E> ''Hallo'' => hash(''hallo'') = 4711 => hashtable[4711] -> ''Hallo''
31 Hashing: Anforderungen an die Element-Typen java.util.hashset<e> java.util.hashmap<k,v> E bzw. K sollten die Methode equals implementieren E bzw. K sollten die Methode hashcode implementieren beide Methoden sollten verträglich sein: x.equals(y) => x.hashcode() == y.hashcode() gleiche Elemente haben den gleichen Hash-Code java.util Class HashMap<K,V> java.util Class HashSet<E> siehe API-Doku zu java.lang Interface Comparable<T>: It is strongly recommended (though not required) that natural orderings be consistent with equals. This is so because sorted sets (and sorted maps) without explicit comparators behave "strangely" when they are used with elements (or keys) whose natural ordering is inconsistent with equals. In particular, such a sorted set (or sorted map) violates the general contract for set (or map), which is defined in terms of the equals method. Seite 31
32 Hashing: Anforderungen an die Element-Typen Definition einer hashcode-methode Der Hashcode eines Objekts darf nur von den für equals relevanten Objektvariablen beeinflusst werden Objekte die gleich sind (entspr. equals) müssen den gleichen hash-code liefern Der Hashcode eines Objekts kann beispielsweise wie folgt berechnet werden: Berechne den Hashcode jeder relevanten Objektvariablen f wie folgt: boolean f => (f? 1 : 0) byte f, int f, short f => (int) f long f => f^(f>>>32)) float f => Float.floatToBits(f) double f => Double.doubleToLongBits(f)^(Double.doubleToLongBits(f)>>>32) AClass f => (f == 0? 0 : f.hashcode()) Atype[] f => Verfahre mit den Elementen wie mit Objektvariablen Berechne den Hashcode des Objekts aus dem seiner Felder mit int res = 1 für jeden Hashcode c eines Felds res = 31 * res + c Seite 32
33 equals / hashcode Wer equals sagt, der muss auch hashcode sagen! public class Person { private String vorname; private String nachname; public Person(String vorname, String nachname){ this.vorname = vorname; this.nachname = nachname; public String tostring(){ return vorname+" "+nachname; public boolean equals(object o){ if (!(o instanceof Person) ) return false; Person p = (Person)o; if (vorname.equals(p.vorname) && nachname.equals(p.nachname)) return true; else return false; public int hashcode(){ return 31*vorName.hashCode() +nachname.hashcode(); Seite 33 Selbst definierte Klassen, die als Schlüssel (Key) einer HashMap oder Element eines HashSet auftreten, sollen equals und hashcode konsistent definieren. Vordefinierte Klassen von Java erfüllen diese Anforderung.
34 Trees: Anforderungen an die Element-Typen java.util.treeset<e> java.util.treemap<k,v> E bzw. K sollte die Schnittstelle Comparable implementieren damit ein sortierter Suchbaum aufgebaut werden kann die Methode equals von E bzw. K sollte dazu passen x.equals(y) <=> x.compareto(y) == 0 was gleich ist, sollte die gleiche Ordnungsposition haben und umgekehrt Seite 34 java.util Class TreeSet<E> java.util Class TreeMap<K,E>
35 Vergleichbarkeit java.lang interface Comparable<T> int compareto(t o) allgemeine Vergleichbarkeit x.compareto(y) < 0 x.compareto(y) = 0 x.compareto(y) > 0 x < y x == y x > y <, >, == ist nur auf wenigen primitiven Typen definiert. Instanzen von Klassen werden mit compareto verglichen. Diese Methode ist auf Klassen Standard-Klassen wie Integer, String,... vordefiniert. Eine Klasse erklärt, dass ihre Objekte vergleichbar, sind sie also compareto zur Verfügung stellt, indem sie die Schnittstelle Comparable implementiert. z.b: class C implements Comparable<C> {... int compareto(c c) { Seite 35
36 Übersicht: Anforderungen an die Element-Typen java.util.arraylist<e> E sollte die Methode equals implementieren java.util.linkedlist<e> E sollte die Methode equals implementieren java.util.treeset<e> E sollte die Schnittstelle Comparable implementieren die Methode equals sollte dazu passen java.util.hashset<e> E sollte die Methoden equals und dazu passend hashcode implementieren java.util.treemap<k,v> K sollte die Schnittstelle Comparable implementieren die Methode equals sollte dazu passen java.util.hashmap<k,v> K sollte die Methoden equals und dazu passend hashcode implementieren Seite 36
37 equals / compareto : Beispiel 1 public class Person implements Comparable<Person> { private String vorname; private String nachname; public Person(String vorname, String nachname) { this.vorname = vorname; this.nachname = nachname; public String tostring() {return vorname + " " + nachname; public boolean equals(object o) { if (!(o instanceof Person)) return false; Person p = (Person) o; if (vorname.equals(p.vorname) && nachname.equals(p.nachname)) return true; else return false; public int compareto(person p) { return nachname.compareto(p.nachname)!= 0? nachname.compareto(p.nachname) : vorname.compareto(p.vorname); public static void main(string[] args) { TreeSet<Person> s = new TreeSet<Person>(); s.add(new Person("Minni", "Maus")); s.add(new Person("Peter", "Pan")); s.add(new Person("Micky", "Maus")); s.add(new Person("Charly", "Brown")); for ( Person p : s) System.out.println(p); Seite 37 Selbst definierte Klassen, die als Element einer sortierten Menge (TreeSet) oder als Schlüssel einer sortierten Abbildung (TreeMap) auftreten, sollen equals und compareto konsistent definieren. Vordefinierte Klassen von Java erfüllen diese Anforderung. Selbst geschriebene Klassen sollten sie auch erfüllen! 36
38 equals / compareto / hashcode : Beispiel 2 (1) /** * Zweidimensionale Vektoren. * Ein Objekt dieser Klasse realisiert einen Vektor in der Ebene in karthesischer Darstellung. * * Achtung: Diese Klasse hat eine natuerliche Ordung die nicht konsistent ist mit equals! * Note: This class has a natural ordering that is inconsistent with equals! */ final class VektorK_A implements Comparable<VektorK_A> { private double x; private double y; public VektorK_A(double x, double y) { this.x = x; this.y = y; public double length() { return Math.sqrt(x*x + y*y); // tostring wird eigentlich immer definiert! public String tostring(){ return "<" + this.x + ", " + this.y + public int compareto(vektork_a v) { return (int) (this.length() - v.length()); public boolean equals(vektork_a v) { return x == v.x && y == v.y; public boolean equals(object o) { if (o instanceof VektorK_A) { return this.equals((vektork_a) o); else { return false; equals und compareto sollten consistent sein. Sie müssen aber nicht. Seite 38
39 equals / compareto / hashcode :Beispiel 2 (2) /* * (non-javadoc) java.lang.object#hashcode() * Einfaches Muster fuer hashcode: * Verarbeite den Hashcode jedes Feldes (= Objektvariale), das bei * Gleichheit eine Rolle spielt * (und NUR DIESE! Gleiches muss den gleichen Hashcode liefern). * Handelt es sich um einen primitiven Typ, dann nimm eine * Hilfsroutine wie Double.doubleToLongBits public int hashcode() { final int prime = 31; long hash = 1; hash = hash * prime + Double.doubleToLongBits(x) % Integer.MAX_VALUE; hash = hash * prime + Double.doubleToLongBits(y) % Integer.MAX_VALUE; return (int) hash;... Seite 39
40 Kollektion Iterator Iteratoren Seite 40
41 Iterator Iterator Mechanismus zum Durchlaufen einer Kollektion explizite Nutzung implizite Nutzung mit foreach-schleife ArrayList<Integer> l = new ArrayList<Integer>(); l.add(1); l.add(2); l.add(3); iterierbare Kollektion oder Feld for ( int i : l ) System.out.println(i); implizite Nutzung eines Iterators Iterator<Integer> iter = l.iterator(); while ( iter.hasnext() ) { System.out.println( iter.next() ); explizite Nutzung eines Iterators Seite 41
42 Iteratoren und das Collections-Framwork Java Kollektionen sind iterierbar sie können Iteratoren erzeugen mit dem man sie durchlaufen kann public interface Collection<E> extends Iterable<E>{... public interface List<E> extends Collection<E>{... public class ArrayList<E>extends AbstractList<E> implements List<E>,RandomAccess, Cloneable, Serializable {... Iterable Iterable Collection iterator():iterator iterator():iterator Iterator Iterator next():object next():object hasnext():boolean hasnext():boolean... Map List Set <<use>> ArrayList iterierbar Seite 42 LinkedList... LinkedHashMap nicht iterierbar
43 Iteratoren und das Collections-Framwork Java Kollektionen sind iterierbar Iterable : sie können Iteratoren erzeugen: Methode iterator ~> Iterator Iterator : mit dem man sie durchlaufen kann hasnext / next ArrayList<Integer> l = Iterator Iterator new ArrayList<Integer>(); next():object next():object hasnext():boolean hasnext():boolean l.add(1); l.add(2); l.add(3); Iterator<Integer> iter = l.iterator(); <<use>> Iterable Iterable Collection iterator():iterator iterator():iterator List while ( iter.hasnext() ) { System.out.println( iter.next() ); automatische Umwandlung durch den Compiler for ( int i : l ) System.out.println(i); ArrayList Seite 43
44 Iteratoren und das Collections-Framwork Listen java.util.arraylist<e> java.util.linkedlist<e> iterierbar mit Iterator Iterator<E> iterator() iterierbar mit Listen-Iterator (Durchlauf in beide Richtungen) ListIterator<E> listiterator() Mengen java.util.treeset<e> java.util.hashset<e> iterierbar mit Iterator Iterator<E> iterator() Abbildungen java.util.treemap<k,v> java.util.hashmap<k,v> nicht iterierbar aber Set<K> keyset() liefert die (iterierbare) Menge der Schlüssel Seite 44
45 Collections-Framwork verwenden Schnittstelle auswählen Implementierungsvariante (Datenstruktur) auswählen Anforderungen an Elementtypen prüfen / erfüllen Seite 45
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]...
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrProgrammierkurs Java
Programmierkurs Java Java Generics und Java API (2/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer #2 Listen Bisher: Collections
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)
MehrSoftware Engineering Klassendiagramme Assoziationen
Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen
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"
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/
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
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
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
MehrDas Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala
Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:
MehrInstitut für Programmierung und Reaktive Systeme 26. April 2013. Programmieren II. 10. Übungsblatt
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 26. April 2013 Programmieren II 10. Übungsblatt Hinweis: Insgesamt werden in diesem Semester fünf
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113
MehrInformatik II. Vordefinierte Datenstrukturen. - Abbildungen Map. Seite 1 Th Letschert, THM
Informatik II Vordefinierte atenstrukturen - Listen List - bbildungen Map - Mengen Set Seite 1 Th Letschert, THM atenstrukturen atenstrukturen Sprachelemente zur strukturierten Speicherung von aten atentyp
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
MehrJava Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
MehrTeil V. Generics und Kollektionen in Java
Teil V Generics und Überblick 1 Parametrisierbare Datenstrukturen in Java 2 Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 5 1 Parametrisierbare Datenstrukturen in Java Motivation für
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
MehrSchein-/Bachelorklausur Teil 2 am Zulassung: Mindestens 14 Punkte in Teilklausur 1 und 50% der Übungspunkte aus dem 2. Übungsblock.
Schein-/Bachelorklausur Teil 2 am 13.02.2007 Zulassung: Mindestens 14 Punkte in Teilklausur 1 und 50% der Übungspunkte aus dem 2. Übungsblock. Alle Studiengänge außer Bachelor melden sich über die Lehrstuhlwebseite
MehrFachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6
Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in
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
MehrProf. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)
Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen
MehrCS1005 Objektorientierte Programmierung
CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Kollektionen der Java-API Listen Abbildungen Mengen Seite 1 Th Letschert Datenstrukturen Datenstrukturen Sprachelemente zur strukturierten
MehrKlausur zur Einführung in die objektorientierte Programmierung mit Java
Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-
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
MehrCS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)
CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Datentypen und Datenstrukturen Selbst definierte Datenstrukturen Innere Klassen Seite 1 Typen: 1. Kasper 2. Prinzessin 3. Großmutter
MehrJava Einführung Abstrakte Klassen und Interfaces
Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer
MehrEinführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005
Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der
MehrInnere Klassen in Java
Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird
MehrJAVA KURS COLLECTION
JAVA KURS COLLECTION COLLECTIONS Christa Schneider 2 COLLECTION Enthält als Basis-Interface grundlegende Methoden zur Arbeit mit Collections Methode int size() boolean isempty() boolean contains (Object)
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,
MehrModellierung und Programmierung 1
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {
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
MehrJavakurs FSS Lehrstuhl Stuckenschmidt. Tag 4 ArrayList, PriorityQueue, HashSet und HashMap
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 4 ArrayList, PriorityQueue, HashSet und HashMap Array List Dynamisches Array ArrayList vertritt ein Array mit variabler Länge Kapazität passt sich automatisch
MehrInstitut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode
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
MehrEndTermTest PROGALGO WS1516 A
EndTermTest PROGALGO WS1516 A 14.1.2016 Name:................. UID:.................. PC-Nr:................ Beachten Sie: Lesen Sie erst die Angaben aufmerksam, genau und vollständig. Die Verwendung von
Mehr19 Collections Framework
Collection = Containterklasse, die andere Objekte enthält. Inhalte: Schnittstellen Implementierungen Algorithmen Vorteile: Einheitlicher Zugriff auf Containerobjekte. Abstraktion von den Implementierungsdetails.
MehrMengen und Multimengen
Überblick 21. Datenstrukturen 21.1 Einleitung 21.2 Listen 21.3 Assoziative Speicher 21.4 Bäume 21.5 Mengen 21.6 Das Collections-Framework in Java 21 Datenstrukturen 5 Mengen Einf. Progr. (WS 08/09) 870
MehrVerhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
MehrComputeranwendung und Programmierung (CuP)
Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag
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
MehrII.4.4 Exceptions - 1 -
n 1. Unterklassen und Vererbung n 2. Abstrakte Klassen und Interfaces n 3. Modularität und Pakete n 4. Ausnahmen (Exceptions) n 5. Generische Datentypen n 6. Collections II.4.4 Exceptions - 1 - Ausnahmen
Mehr368 4 Algorithmen und Datenstrukturen
Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist
MehrAufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen
Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen Aufgabenblatt 4 Aufgabe 1 1. Erläutern Sie in eigenen Worten die Begriffe Datenstruktur, Datentyp und abstrakter Datentyp. Nutzen Sie das Beispiel
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
MehrProgrammiertechnik II
Datentypen in Java Primitive Typen in Java Wertesemantik (keine Referenzsemantik) Vordefinierte Hüllklassen (etwa java.lang.float) Integrale Typen: char, byte, short, int, long Gleitkommatypen: float,
Mehr19 Collections Framework
Collection = Containterklasse, die andere Objekte enthält. Inhalte: Schnittstellen Implementierungen Algorithmen Vorteile: Einheitlicher Zugriff auf Containerobjekte. Abstraktion von den Implementierungsdetails.
MehrAlgorithmen & Datenstrukturen 1. Klausur
Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse
MehrII.4.6 Collections - 1 -
1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.6 Collections - 1 - Typische Datenstrukturen
MehrPropädeutikum Programmierung in der Bioinformatik
Propädeutikum Programmierung in der Bioinformatik Java Collections Thomas Mauermeier 15.01.2019 Ludwig-Maximilians-Universität München Collections? Was ist eine Collection? Container für mehrere Objekte
MehrPakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).
Paketdeklaration Paketdeklaration package Bezeichner ; Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API). Ein
MehrSuchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Suchbäume Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative
MehrHeute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.
Heute Nachbetrachtung Wissensüberprüfung Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.2015 IT I - VO 9 1 Organisatorisches Zwischentest findet am 16.12. von 17:30 bis
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
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
Mehr12 Collections Framework. Interfaces Maps and Collections. Collection Interface. Überblick. Collection = Containterklasse, die andere Objekte enthält.
Collection = Containterklasse, die andere Objekte enthält. Inhalte: Schnittstellen Implementierungen Algorithmen Interfaces Maps and Collections Iterable Collection Map Vorteile: Set List Queue SortedMap
MehrProgrammiertechnik II
Programmiertechnik II Datentypen Primitive Typen in Java Wertesemantik (keine Referenzsemantik) Vordefinierte Hüllklassen (etwa java.lang.float) Integrale Typen: char, byte, short, int, long Gleitkommatypen:
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E
MehrKapitel 4: Bäume i. 1. Einleitung. 2. Ein Datenmodell für Listen. 3. Doppelt-verkettete Listen. 4. Bäume. 5. Das Collections-Framework in Java
Kapitel 4: Bäume i 1. Einleitung 2. Ein Datenmodell für Listen 3. Doppelt-verkettete Listen 4. Bäume 5. Das Collections-Framework in Java Prof. Dr. Peer Kröger: EiP (WS 18/19) Teil 11: Datenstrukturen
MehrFolge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12
Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben
MehrAufgabenblatt Nr. 5 Generizität und TicTacToe
Aufgabenblatt Nr. 5 Generizität und TicTacToe 1 Generische Sortier-Methode 1.1 Aufgabe: Entwickeln einer generischen Sortiermethode für Objekte mit der Schnittstelle Comparable Ihnen ist aus der Vorlesung
MehrAlgorithmen und Datenstrukturen CS1017
Algorithmen und Datenstrukturen CS1017 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Datenstrukturen I: Lineare Sequenzen / Listen Datenstrukturen für Sequenzen Sequenzen in der Java-API:
MehrIn vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut.
Binäre Suchbäume Tries (Folie 182, Seite 58 im Skript) In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut. In Tries entspricht die ite Verzweigung dem iten Zeichen des Schlüssels.
MehrAbstrakte Datentypen und Java
Abstrakte Datentypen und Java ƒ hehueolfn ƒ 5HDOLVLHUXQJYRQ$'7 NRQNUHWH'DWHQW\SHQ %HLVSLHO5DWLRQDOH=DKO ƒ 3DUDPHWULVLHUWH'DWHQW\SHQ %HLVSLHO)HOG6RUWLHUWHV)HOG ƒ 6FKQLWWVWHOOHQNRQ]HSW ƒ :LFKWLJH'DWHQW\SHQLQ-DYD
MehrÜbung 9 - Lösungsvorschlag
Universität Innsbruck - Institut für Informatik Datenbanken und Informationssysteme Prof. Günther Specht, Eva Zangerle Besprechung: 15.12.2008 Einführung in die Informatik Übung 9 - Lösungsvorschlag Aufgabe
MehrProblem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe
Maximale Größe?! Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um Dynamische Anpassung der Größe Praktische Informatik I, HWS 2009, Kapitel 10 Seite
MehrEinführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005
Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm
MehrJavakurs zu Informatik I. Henning Heitkötter
Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,
MehrApplet Firewall und Freigabe der Objekte
Hauptseminar Applet Firewall und Freigabe der Objekte Nachweis von Sicherheitseigenschaften für JavaCard Jin Zhou Ein Überblick über diesen Vortrag Applet Firewall Kontext JCRE Entry Point Objekt Shareable
MehrTypumwandlungen bei Referenztypen
Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei
MehrÜbersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15
Übersicht Schleifen Schleifeninvarianten Referenztypen, Wrapperklassen und API CoMa I WS 08/09 1/15 CoMa I Programmierziele Linux bedienen Code umschreiben strukturierte Datentypen Anweisungen und Kontrollstrukturen
MehrObjektorientierte Programmierung. Kapitel 21: Einführung in die Collection Klassen
Stefan Brass: OOP (Java), 21. Collection Klassen 1/30 Objektorientierte Programmierung Kapitel 21: Einführung in die Collection Klassen Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester
MehrPraktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Marcel Preuß, Iman Kamehkhosh, Marc Bury, Diana Howey Übungsblatt
MehrJava Kurs für Anfänger Einheit 4 Klassen und Objekte
Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse
MehrGebundene Typparameter
Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte
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
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
MehrProgrammieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek
Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es
MehrDer Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.
Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.
MehrInfo B VL 14: Java Collections/Reflections
Info B VL 14: Java Collections/Reflections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 14: Java Collections/Reflections
MehrC# im Vergleich zu Java
C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung
MehrPraktische Übung 'JUnit-Test'
Praktische Übung 'JUnit-Test' Starten Sie für die folgende Übung Eclipse und laden Sie das Testprojekt von folgender URL: http://pi.informatik.uni-siegen.de/berlik/swt/currency.zip Darin ist die Klasse
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
MehrJavadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
Mehr5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu
Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten
MehrBinäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen
Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders
MehrHashmap: Video Erklärung
Hashmap Hashmap: Video Erklärung Definition und Motivation Array: Zugriff über Index=Zahl Wert(Value) Schlüssel(Key) Maier, Klaus 21 Array Hashtag: Zugriff über einen nichtnumerischen Wert 06431 92310
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........................
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für
MehrFelder. November 5, 2014
Felder Universität Bielefeld AG Praktische Informatik November 5, 2014 Felder: Datenstrukturen mit konstantem Zugriff Felder nennt man auch, Vektoren, Matrizen,... Konstanter Zugriff heisst: Zugriff auf
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
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
MehrMengen und Multimengen
Überblick 17. Datenstrukturen 17.1 Einleitung 17.2 Listen 17.3 Assoziative Speicher 17.4 Bäume 17.5 Mengen 17.6 Das Collections-Framework in Java 17.7 Zusammenfassung 17 Datenstrukturen 5 Mengen Informatik
MehrObjektorientierte Programmierung mit C++ Vector und List
Vector und List Ziel, Inhalt Wir lernen die Klassen vector und list aus der Standard-C++ Library kennen und anwenden. In einer Übung wenden wir diese Klassen an um einen Medienshop (CD s und Bücher) zu
Mehr