Vorlesung Informatik 1
|
|
- Maya Abel
- vor 7 Jahren
- Abrufe
Transkript
1 Vorlesung Informatik 1 Fachhochschule für Technik Esslingen Studiengang Wirtschaftsinformatik Teil 4: Bibliotheken Dr. rer. nat. Andreas Rau andreas.rau@hs-esslingen.de Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #1
2 Inhalt Dieser Teil der Vorlesung behandelt die wichtigsten Standardpakete von Java und die darin enthaltenen Klassen. Davon ausgenommen sind die Pakete und Klassen zur Oberflächenprogrammierung. Diese werden zu einem späteren Zeitpunkt eigenständig behandelt. Kein Mensch kann sich alle Details merken. Daher ist es beim Umgang mit den hier beschriebenen Klassen immer wieder wichtig und richtig, auf die Klassenreferenz zurückzugreifen um dort die Methoden der jeweiligen Interfaces und Klassen nachzuschlagen (Wink mit dem Zaunpfahl!). Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #2
3 Klassen für Datenstrukturen - Hintergrund Die fundamentale Datenstruktur in Java ist die Klasse. Diese stellt eine Erweiterung der in anderen Klassen bekannten Strukturen oder Records dar. Alle weiteren Datenstrukturen sind mit Hilfe von Klassen realisiert. Dies gilt auch für Arrays, die einfachste Datenstruktur. Jedoch wird der Einsatz von Arrays in Java durch besondere syntaktische Konstrukte unterstützt. Dadurch sind Arrays nicht direkt als Objekte erkennbar. Ungeachtet dessen spielt die Objekteigenschaft von Arrays an vielen, z.b. bei der Parameterübergabe, eine wichtige Rolle. Arrays sind aber nicht immer die beste Lösung. Deshalb gibt es in Java unter der Sammelbezeichnung "Collections" eine Reihe weiterer Klassen, die andere Datenstrukturen implementieren. Diese sind im Paket java.util untergebracht (Arrays sind Bestandteil des Kerns bzw. von java.lang). Kennzeichnend für alle Collection Klassen ist außerdem, dass Sie anders als Arrays nicht individuell typisiert sind, sondern Objekte verwalten und dabei auch verschiedene Typen mischen können. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #3
4 Eigenschaften von Datenstrukturen(1) Klassen wie die Collections in Java werden in anderen Programmiersprachen auch als Container bezeichnet. Dieser Begriff hat in Java jedoch bereits eine andere Bedeutung bzgl. grafischer Oberflächen. Bei der Charakterisierung dieser Klassen unterscheidet man oftmals zwischen der Schnittstelle ("wie kann die Datenstruktur genutzt werden?", "Wie verhält sich die Datenstruktur?") und der Implementierung ("Wie ist die Datenstruktur intern organisiert?"). Diese beiden Aspekte sind zunächst weitgehend voneinander unabhängig, d.h. man kann durch geeignete Kombinationen von Schnittstellen und Implementierungen maßgeschneiderte Container erzeugen. Historischer Hinweis: Collections waren bereits in Smalltalk-80 enthalten(!) Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #4
5 Eigenschaften von Datenstrukturen(2) Eine Datenstruktur kann durch folgende Eigenschaften charakterisiert werden: Zugriff Wahlfrei über Index oder Schlüssel Sequentiell durch "abklappern" Verhalten Fähigkeit automatisch zu wachsen oder zu schrumpfen Fähigkeit zum Einfügen in der Mitte Logische Organisation Mit / Ohne Duplikate Geordnet / ungeordnet Sortiert / unsortiert Physikalische Struktur Lineare Anordnung (statisch) Verzeigerung (dynamisch, verschiedene Strukturen) Dabei bestehen natürlich auch Abhängigkeiten zwischen den verschiedenen Eigenschaften nicht alle Kombinationen sind ohne weiteres möglich. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #5
6 In Java gibt es 3 große Familien von Collection Klassen Listen Sets Maps Collection Klassen(1) - Überblick Alle diese Klassen implementieren das Interface Collection und sind von der gemeinsamen Oberklasse AbstractCollection abgeleitet die einige elementare Methoden zur Verfügung stellt. Daneben gibt es noch die Klasse Collections die eine Reihe von nützlichen Hilfsmethoden implementiert. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #6
7 Collection Klassen(2) - Listen Als Listen bezeichnet man Klassen, die das Interface List implementieren. Dies sind die Klassen ArrayList, Vector, Stack und LinkedList. Die gemeinsame Oberklasse dieser Klassen ist AbstractList. Kennzeichnend für Listen ist, dass man Elemente leicht einfügen oder anhängen kann und direkt über einen Index auf Sie zugreifen kann. Diese gemeinsame Schnittstelle entspricht auch der Anschauung einer Liste. Die Elemente werden intern geordnet abgelegt. Die Klasse Stack bietet außerdem spezielle Zugriffsmethoden für die Betrachtung als Stapel. Jedoch bestehen wesentliche Unterschiede bzgl. der internen Implementierung: Während ArrayList und Vector ihre Elemente linear im Speicher ablegen (schneller Zugriff) sind diese bei der LinkedList explizit verzeigert (schnelles Einfügen*). vgl. Experimente zur Geschwindigkeitsmessung über System.currentTimeMillis() * Die Navigation zur Einfügestelle kann hier allerdings länger dauern (besser: Einfügen mit ListIterator)! Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #7
8 Collection Klassen(2a) - Listen List (Interface) AbstractList (Basisklasse) ArrayList LinkedList (Implementierung 1) (Implementierung 2) Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #8
9 Collection Klassen(2b) - Listen Implementierungsvariante 1: ArrayList verschieben angehängt eingefügt Schneller Zugriff über Indexberechnung Dynamisches Wachsen Einfaches Anhängen Einfügen durch Verschieben (langsam) Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #9
10 Collection Klassen(2c) - Listen Implementierungsvariante 2: LinkedList null null Langsamer Zugriff durch "Durchhangeln" Dynamisches Wachsen Einfaches Anhängen Einfügen durch Einklinken (schnell) Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #10
11 Collection Klassen(3) - Sets Als Sets bezeichnet man Klassen, die das Interface Set implementieren. Dies sind die Klassen HashSet und TreeSet. Die gemeinsame Oberklasse dieser Klassen ist AbstractSet. Kennzeichnend für Sets ist, dass keine doppelten Elemente gespeichert werden können. Die Elemente werden intern ungeordnet abgelegt. Es ist leicht Elemente einzufügen, zu entfernen und die Anwesenheit eines bestimmten Elements zu überprüfen. Dafür ist kein direkter Zugriff auf einzelne Elemente möglich. Diese gemeinsame Schnittstelle entspricht auch der Anschauung einer mathematischen Menge. Wieder bestehen wesentliche Unterschiede bzgl. der internen Implementierung der Elemente (unterschiedliche Implementierungen): Während die Klasse HashSet ihre Elemente in einer Tabelle verwalten sind diese beim TreeSet in einer Baumstruktur hinterlegt. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #11
12 Collection Klassen(3a) - Mengen Set (Interface) AbstractSet (Basisklasse) HashSet TreeSet (Implementierung 1) (Implementierung 2) Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #12
13 Collection Klassen(4) - Maps Als Maps bezeichnet man Klassen, die das Interface Map implementieren. Dies sind die Klassen HashMap, IdentityHashMap, TreeMap und WeakHashMap Die gemeinsame Oberklasse dieser Klassen ist AbstractMap und ist nicht von Collection abgeleitet. Kennzeichnend für Maps ist, dass über einen Schlüssel direkt auf Objekte zugegriffen werden kann. Dieser Schlüssel kann ein beliebiges Objekt sein. Die Elemente werden intern ungeordnet abgelegt. Es ist leicht Elemente einzufügen, zu entfernen und die Anwesenheit eines bestimmten Elements zu überprüfen. Diese gemeinsame Schnittstelle entspricht auch der Anschauung einer Zuordnungstabelle (Mapping). Ähnliche Klassen werden in anderen Programmiersprachen auch als Assoziative Arrays oder Dictionaries bezeichnet. Auch hier (gähn!) bestehen wesentliche Unterschiede bzgl. der internen Implementierung der Elemente (unterschiedliche Implementierungen): Während die Klassen HashMap, IdentityHashMap und WeakHashMap ihre Elemente in einer Tabelle verwalten sind diese bei der TreeMap in einer Baumstruktur hinterlegt. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #13
14 Collection Klassen(4a) - Maps Map (Interface) AbstractMap (Basisklasse) HashMap TreeMap (Implementierung 1) (Implementierung 2) Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #14
15 Einschub: Hashing Verfahren(1) Bei der Datenspeicherung mittels Hashing wird zunächst für jedes Objekt der sog. Hashwert berechnet. Anhand dieses Werts wird ähnlich wie der Index bei einem Array verwendet, um einen Speicherplatz auszuwählen. Da jedoch verschiedene Objekte den selben Hashwert haben können, ist an diesem Speicherplatz kein einzelnes Objekt sondern eine Liste von Schlüssel- Wertepaaren hinterlegt. Beim Zugriff wird diese Liste nach einem Paar durchsucht, dessen Schlüssel gleich dem angefragten Schlüssel ist. Dabei kann durch Sortierung und binäre Suche eine weitere Beschleunigung erreicht werden (lineare Suche: Zugriff in n/2 Schritten, binäre Suche: Zugriff in log(n)/log(2) Schritten). Damit dies funktioniert muss sichergestellt sein, dass gleiche Objekte auch denselben Hashwert haben. Dies muss beim Überschreiben der Methoden equals() bzw. hashcode() beachtet werden (siehe dazu auch die entsprechenden Beispielprogramme). Die Zugriffsgeschwindigkeit ist umso höher, je weniger Objekte denselben Hashwert haben. Damit kommt der Hashfunktion die diesen Wert berechnet eine wichtige Bedeutung zu (Anforderungen: schnelle Berechnung und breite Streuung). Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #15
16 Einschub: Hashing Verfahren(2) Zugriff Teil 1 mit index lt. hashcode() Zugriff Teil 2 durch Suche mit equals() Liste(n) mit Objekte die den gleichen hashcode haben interne Hashtable Wenn nicht "o1.equals( o2) => o1.hashcode() == o2.hashcode()", d.h. wenn gleiche Objekte unterschiedliche hashcodes haben ist funktioniert dieses zweischrittige Verfahren nicht! Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #16
17 Elementare Datentypen und Collections Wrapper Klassen Im Unterschied zu Arrays speichern Collection Klassen allgemeine Objekte. Dies bedeutet zunächst, daß beim Zugriff auf Elemente vor deren Verwendung i.d.r. ein cast auf den speziellen Objekttyp notwendig ist. Außerdem ist es nicht möglich, elementare Datentypen in einer Collection zu speichern. Ein ähnliches Problem stellt sich auch bei verallgemeinerten Algorithmen, die auf Objekten operieren und kann durchaus als Designfehler von Java betrachtet werden. In beiden Fällen müssen von elementaren Datentypen als Objekt verpackt werden. Um dies nicht immer wieder selbst tun zu müssen, steht für jeden elementaren Datentyp eine Wrapperklasse zur Verfügung. Die Namen der Wrapperklassen ergeben sich aus der großgeschriebenen Langform des Typnamens, z.b. int / Integer, boolean / Boolean. Instanzen dieser Klassen kapseln einen Wert des zugehörigen elementaren Datentyps und stellen daneben eine Reihe von Hilfsmethoden, u.a. zum Einlesen und Ausgeben von Werten zur Verfügung. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #17
18 Autoboxing Mit Java 5.0 packt der Compiler die Werte automatisch aus und ein. import java.util.*; public class NewSchool { // ab Java 1.5 public static void main( String[] args) { List l = new ArrayList(); l.add( 5); // Autobox-in int i = (Integer)l.get(0); // Autobox-out // new Integer(1); Integer A = 1; // new Integer(2); Integer B = 2; // int s = A.intValue() + B.intValue() int s = A+B; } } import java.util.*; public class OldSchool { // bis Java 1.4 public static void main( String[] args) { List l = new ArrayList(); l.add( new Integer( 5)); int i = ((Integer)l.get(0)).intValue(); int a = 5; int b = 6; int s = a+b; } } Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #18
19 Bearbeiten von Collections - Iteration Collections dienen nicht nur zum Verwalten sondern auch zum Bearbeiten von Elementen. Dabei kommt es häufig vor, daß eine Operation auf alle Elemente einer Collection angewendet werden soll. Bei Arrays würde man hierfür eine for- Schleife verwenden. for (int i=0; i<objects.length; i++) { // objects ist ein Array Object element = objects[i]; System.out.println( element); } Diese Iteration läßt sich für Collections folgendermaßen verallgemeinern. Iterator iter = objects.iterator(); // objects ist eine Collection while (iter.hasnext()) { Object element = iter.next(); System.out.println( element); } Dabei entspricht der Iterator dem Array-Index. Zu jeder Collection Klasse gibt es eine eigene Iteratorklasse die das Interface Iterator implementiert. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #19
20 Bearbeiten von Collections - Iteration Der Iterator ist dabei ein für den jeweiligen Typ der Collection spezifisches Objekt, wird aber genau wie die Collections selbst nur über das entsprechende Interface verwendet. Noch einfacher geht das ganze mit der neuen for-schleife: Object[] objects = { "la", "li", "lu" }; for (Object element : objects) { // objects ist ein Array System.out.println( element); } Diese Art der Iteration läßt sich 1:1 auf Collections anwenden List objects = new ArrayList(); objects.add( "la"); objects.add( "li"); objects.add( "lu"); for (Object element : objects) { // objects ist eine Collection System.out.println( element); } Ist doch genial, wie sich hier alles bisher gelernte zusammenfügt... Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #20
21 Collection Klassen (5) Vergleich mit Arrays Die wesentlichen Einschränkungen bei Arrays sind: feste Größe (Abhilfe: alle Collections) fester Datentyp für Elemente (Abhilfe: alle Collections*) numerischer Index (Abhilfe: Maps) Dies muss nicht immer von Nachteil sein. Gerade diese Eigenschaften sind es nämlich, die eine sehr effiziente Implementierung von Arrays ermöglichen. Man kann eben im Leben wie in der Programmierung einfach nicht alles haben (hier: Flexibilität und Geschwindigkeit). * Verwaltung über Klasse Object. Bei Entnahme von Objekten ist ein cast notwendig. Primitive Datentypen nur mit Hilfe von Wrapperklassen speicherbar. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #21
22 Collection Klassen (6) Illustration und Merkhilfe Arrays Listen Sets Maps a[0] a[1] a[2] l.get(0) l.get(1) l.get(2) Größe: beschränkt variabel variabel variabel Zugriff: wahlfrei variabel variabel variabel Struktur: geordnet geordnet ungeordnet ungeordnet Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #22
23 Collection Klassen(7) - Fazit Folgende Eigenschaften gelten für alle Collections Collections bieten "Datenstrukturen für alle Lebenslagen" Collections können mit beliebigen Objekten verwendet werden. Zu jeder Familie von Collections gibt es Interface und Basisklasse Variablen sollten stets mit Hilfe der Interfaces deklariert werden. Dies gilt auch für Übergabeparameter von Algorithmen. Da es normalerweise nur auf das Verhalten der Collection ankommt und dieses über das Interface voll zugänglich ist ermöglicht dies einen problemlosen Wechsel innerhalb der Varianten eines Collection-Typs (z.b. Ersatz von ArrayList durch LinkedList). Beispiel // problemloser Ersatz durch new LinkedList() List mylist = new ArrayList(); Die konkrete Klasse sollte also nur verwendet werden, wenn spezielle Eigenschaften der Klasse verwendet bzw. gefordert werden (kommt so gut wie nie vor). Die Basisklasse kann ggf. für eigene Implementierungen verwendet werden (kommt noch seltener vor). Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #23
24 Ein-/Ausgabe mit Streams - Hintergrund Die Flexibilität von Software gründet sich neben ihrer Anpassbarkeit darauf, dass man Sie mit unterschiedlichsten Daten füttern kann. Daher ist die Ein- und Ausgabe von Daten ein elementarer Bestandteil von Programmen. Doch Eingabe woher und Ausgabe wohin? Tastatur, Maus, Netzwerk, Laufwerke, Bildschirm, Drucker,... obwohl es sich hier physikalisch um unterschiedliche Geräte handelt, kann man sie alle logisch verallgemeinert als Datenquellen und -senken mit bestimmten Eigenschaften betrachten. Daraus folgt der Wunsch, diese Geräte auch in der Software möglichst gleich zu behandeln und ihre Gemeinsamkeiten zu einer einheitlichen Schnittstelle zusammenzufassen bzw. ihre Unterschiede dahinter zu verstecken. Dadurch steigt die Flexibilität der Software und es ist sehr einfach eine Datenquelle oder -senke gegen eine andere auszutauschen. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #24
25 Ein-/Ausgabe mit Streams - Konzept(1) Das Konzept zur Verallgemeinerung von Datenquellen und -senken sind (nach alter Unix-Tradition) sogenannte Datenströme oder Streams. Ein Stream ist zunächst einmal ein Kanal, der Daten liefern oder abtransportieren kann. Auf der elementarsten Ebene werden diese Daten als Folge von Bytes betrachtet. Eine wesentliche Eigenschaft des Stream Konzepts ist die Möglichkeit, mehrere Streams zu verketten, d.h. wie Rohre ineinanderzustecken. Die aufgesteckten Streams agieren quasi als Filter (dieser Begriff ist tatsächlich gebräuchlich) und erlauben es, den ursprünglichen Bytestrom als eine Folge von Zeichen, Zahlen oder Objekten zu interpretieren oder weitere Eigenschaften wie Pufferung, Kompression, Verschlüsselung o.ä. zu realisieren. Dies funktioniert sowohl bei der Eingabe als auch bei der Ausgabe von Daten. Quelle Stream (Bytes) Filter 1 (Zip) Filter 2 (Objects) read Senke Stream (Bytes) Filter 1 (Zip) Filter 2 (Objects) write Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #25
26 Ein-/Ausgabe mit Streams - Konzept(2) Die konkrete Datenquelle oder -senke für den grundlegenden Stream kann entweder ein Gerät (Tastatur/Bildschirm), eine Datei, das Netzwerk oder ein Objekt im Hauptspeicher (String oder Array) sein. Das Tolle ist, das die konkrete Datenquelle oder -senke mit Ausnahme der Streamerzeugung praktisch keinen Unterschied macht, da alle grundlegenden Streams die gleiche Schnittstelle besitzen und die nachfolgenden Filter mit jedem von Ihnen arbeiten können. Damit kann ein Programm auf ein und dieselbe Art und Weise mit Daten aus unterschiedlichsten Quellen arbeiten. Die Kombinationsmöglichkeiten der verschiedenen Filter ermöglichen dabei ein Höchstmaß an Flexibilität und Wiederverwendung. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #26
27 Stream Klassen(1) Die Stream Klassen in Java sind im Paket java.io untergebracht und lassen sich in InputStreams (für die Eingabe) und OutputStreams (für die Ausgabe) einteilen die jeweils von der gleichnamigen abstrakten(!) Basisklasse InputStream bzw. OutputStream abgeleitet sind. Diese Basisklasse definieren elementare Methoden für die Ein-/Ausgabe von Bytes. Ihre konkreten Subklassen wie z.b. FileInputStream implementieren diese Methoden für die Arbeit mit verschiedenen Datenquellen bzw. -senken. Daneben gibt es ein je eine weitere Klasse (z.b. FilterInputStream), die als abstrakte Basisklasse für diverse Filter dient. Diese erlauben die Bearbeitung des elementaren Bytestroms, z.b. Pufferung (z.b. BufferedInputStream), Komprimierung (z.b. ZipInputStream) oder "Interpretation" als Werte elementarer Datentypen (z.b. DataInputStream). Die Klassen zur Ein-/Ausgabe von Objekten, ObjectInputStream und ObjectOutputStream, sind eigentlich Filter, erben aber trotzdem direkt von den jeweiligen abstrakten Streamklassen. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #27
28 Stream Klassen(2) Zur Verkettung von Filtern bzw. Streams muss bei der darunterliegende Stream bei der Konstruktion des darüberliegenden angegeben werden. Quelle Stream (Bytes) Filter (Data) read Beispiel: import java.io.fileinputstream; import java.io.datainputstream; //... FileInputStream fi = new FileInputStream( "myfile.dat"); DataInputStream di = new DataInputStream( fi); double d = di.readdouble(); di.close(); Die Klasse System stellt mit den Klassenvariablen err, in und out drei Streams für die Ein-/Ausgabe über Tastatur und Bildschirm zur Verfügung. Die beiden Ausgabestreams sind in Wirklichkeit Filterketten, der Eingabestream ist direkt. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #28
29 Serialisierung Bei der Ein-/Ausgabe von Objekten muss unter anderem die Klasse sowie der Wert aller Attribute einzeln verarbeitet werden. Glücklicherweise muß man dies nicht manuell implementieren: Über das Interface Serializable können beliebige Klassen für die automatische Ein-/Ausgabe markiert werden. Beispiel public class Auto implements Serializable { //... } // in einer anderen Klasse: Auto a = new Auto( "Ford", "Fiesta"); FileOutputStream fos = new FileOutputStream( "objects.dat") ObjectOutputStream oos = new ObjectOutputStream( fos); oos.writeobject( a); oos.close(); Dieser automatische Vorgang kann bei Bedarf durch überschreiben der Methoden readobject() und writeobject() angepasst werden. Dies ist jedoch nur in Ausnahmefällen notwendig. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #29
30 Reader und Writer Die Ein-/Ausgabe von Zeichen ist wegen deren unterschiedlicher Kodierung nur in Ausnahmefällen direkt über Streams möglich. Während der westeuropäische ISO-Latin-1 Zeichensatz weitgehend dem ASCII Zeichensatz entspricht und mit einem Byte pro Zeichen auskommt, sind im allgemeinen Fall mit Unicode zwei oder mehr Bytes pro Zeichen notwendig. Daher gibt es in Java spezielle Klassen zur Ein-/Ausgabe von Zeichen, die sog. Reader und Writer die wiederum von zwei gleichnamigen abstrakten Basisklassen abgeleitet sind. Reader und Writer können Text zeichen- und/oder zeilenweise ein- und ausgeben und berücksichtigen dabei automatisch die jeweils gültige Kodierung. Die Systematik der darunterliegenden Klassen ist ähnlich wie bei den Streams: Es gibt direkte konkrete Subklassen für die Anbindung verschiedener Datenquellen und -senken sowie eine Zwischenklasse für Filter. Durch die Fokussierung auf Text ist jedoch die Vielfalt, insbesondere bei den Filtern, nicht so zahlreich. Reader bzw. Writer sind jedoch selbst auch Filter und können auf Streams und deren Filter "aufgesteckt" werden. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #30
31 Ein-/Ausgabe - Überblick Ein-/Ausgabe (I/O) Paket java.io Byteorientiert Zeichenorientiert Eingabe Ausgabe Eingabe Ausgabe (abstrakt) (abstrakt) (abstrakt) (abstrakt) InputStream OutputStream Reader Writer (konkret) (konkret) (konkret) (konkret) FileInputStream FileOutputStream FileReader FileWriter ByteArrayInputStream ByteArrayOutputStream CharArrayReader CharArrayWriter InputStreamReader OutputStreamWriter (filter) (filter) (filter) (filter) BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter DataInputStream DataOutputStream ObjectInputStreamObjectOutputStream Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #31
32 Ein-/Ausgabe - Fazit Streams und damit die zugehörigen Datenquellen und -senken können ähnlich wie Collections ausgetauscht werden, ohne das am Code viel geändert werden muss, da die Schnittstelle stets dieselbe bleibt. Aufbauend auf dieser gemeinsamen Schnittstelle können den elementaren Streams über Filter spezifische Eigenschaften flexibel aufgeprägt werden. Dabei lassen sich auch verschiedene Filter durch Verkettung kombinieren. Auf diese Art und Weise ist ein Höchstmaß an Flexibilität und Wiederverwendung möglich. Damit stellen die Streams und die zugehörigen Reader und Writer und Filter eine vielseitige, mächtige und erweiterbare Menge von Klassen dar. Der Aufbau der zugehörigen Klassenbibliothek folgt einer einfachen Systematik: Abstrakte Basisklassen zur Festlegung der elementaren Schnittstelle Konkrete Subklassen zur Anbindung verschiedener Datenquellen und -senken Abstrakte Subklasse für Filter Konkrete Subklassen zur Implementierung der Filter Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-bibliotheken.odp #32
Einstieg in die Informatik mit Java
1 / 15 Einstieg in die Informatik mit Java Streams Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick Ein-Ausgabe 2 Klassenhierarchie (Byteorientiert) 3 Klassenhierarchie
MehrDatenströme in Java. Zeichenkonvertierung
Datenströme in Java Arten von Strömen Ein- und Ausgabeoperationen sind in Java im Wesentlichen über Datenströme realisiert. Dabei werden zwei Arten von Datenströmen unterschieden; byteorientierte Ströme
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
MehrStreams. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java
Streams Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 4.7.07 G. Bohlender (IANM UNI Karlsruhe) Streams 4.7.07 1 / 7 Übersicht 1 Einführung
MehrGrundlagen der Informatik 0
Technische Universität Darmstadt 01.07.2013 Grundlagen der Informatik 0 Vorlesung 0 Java ist eine Programmiersprache Ilkay Baytekin Douglas Crockford http://media.smashingmagazine.com/wp-content/uploads/2012/04/doug-crockford-image.jpg
MehrVorlesung Informatik 2
Vorlesung Informatik 2 Fachhochschule für Technik Esslingen Studiengang Wirtschaftsinformatik Neues in Java 5.0 (Tiger) Dr. rer. nat. Andreas Rau http://www.fht-esslingen.de/~rau andreas.rau@fht-esslingen.de
MehrProgrammierkurs Java
Programmierkurs Java Java Generics und Java API (1/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Datenstrukturen In vielen Sprachen
MehrJava Input/Output System (IO)
Java Input/Output System (IO) Ziel: Schreiben und Lesen von Daten auf sequentielle Medien. Paket: java.io. ab Java 1.4 auch java.nio, hier nicht beru cksichtigt. Trennung in 2 Welten: - Byteorientierte
MehrVorlesung Programmieren
Vorlesung Programmieren Java I/O Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Java I/O: Input und Output mit Java Heute Ein-/Ausgabe
MehrDynamische Datenstrukturen Jiri Spale, Algorithmen und Datenstrukturen - Dynamische Datenstrukturen 1
Dynamische Datenstrukturen 2006 Jiri Spale, Algorithmen und Datenstrukturen - Dynamische Datenstrukturen 1 Dynamische Datenstrukturen Keine konstante Kardinalität Speicherzuweisung erfolgt während der
MehrJava I/O. Input / Output stream Library Regelt I/O über verschiedene Kanäle. Führt notwendige Umwandlungen/Konvertierungen aus
Java I/O Input / Output stream Library Regelt I/O über verschiedene Kanäle Filesystem Console Netzwerk Intern Führt notwendige Umwandlungen/Konvertierungen aus 1 Furchtbar viele Klassen BufferedInputStream
MehrVorlesung Programmieren. Java I/O: Input und Output mit Java. Ein-/Ausgabe von Daten. Java I/O. Heute. Grundlage fast aller Programme
Vorlesung Programmieren Java I/O Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer Java I/O: Input und Output mit Java Heute Ein-/Ausgabe
MehrSammlungen Listen Mengen Abbildungen Algorithmen Wrapper
Sammlungen Listen Mengen Abbildungen Algorithmen Wrapper Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 1 Einleitung Collections sind Datenstrukturen für Sammlungen von Daten Stacks Queues Priority
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
Mehr19 Collections Framework
Collection = Containterklasse, die andere Objekte enthält. Inhalte: Schnittstellen Implementierungen Algorithmen Vorteile: Einheitlicher Zugriff auf Containerobjekte. Abstraktion von den Implementierungsdetails.
MehrPROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker
I/O-Serialisierung und Multithreading PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker Dr.-Ing. Steffen Helke Technische Universität Berlin Fachgebiet Softwaretechnik 27. Mai 2013 Übersicht
Mehr19 Collections Framework
Collection = Containterklasse, die andere Objekte enthält. Inhalte: Schnittstellen Implementierungen Algorithmen Vorteile: Einheitlicher Zugriff auf Containerobjekte. Abstraktion von den Implementierungsdetails.
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
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
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
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)
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
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
MehrJohannes Unterstein - TINF16 - Java - Sommersemester 2017 JAVA. Wiederholung
JAVA Wiederholung 137 WIEDERHOLUNG ALLGEMEIN public static void main(string args[]) {...} Namenskonventionen: KlassenNamen beginnen mit Großbuchstaben Variablen- und Methoden-Namen mit kleinem Buchstaben
MehrStreams. V by WBR1&MOU2/BFH-TI. Berner Fachhochschule Hochschule für Technik und Informatik HTI
Ein- Ausgabe Streams Unterlagen zum Modul "OOP mit Java" V 3.0 2011 by WBR1&MOU2/BFH-TI Ein- Ausgabe, Streams V3.0 2011 by WBR1&MOU2/BFH-TI Definition: Berner Fachhochschule Streams Ein Stream ist eine
MehrAusnahmen. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik
Ausnahmen Zentralübung zur Vorlesung http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Inhalte der heutigen Vorlesung: Arten von Fehlern Auslösen von Ausnahmen Vermeiden von Ausnahmen Ausnahmeklassen
MehrAusnahmen. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Annabelle Klarl Zentralübung zur Vorlesung : http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Fehlerarten Bei der Programmierung können viele Arten von Fehlern auftreten: Syntaktische Fehler
MehrVorlesung Programmieren
Vorlesung Programmieren 15 Java API Prof. Dr. Ralf H. Reussner Version 1.0 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD), FAKULTÄT FÜR INFORMATIK
MehrAusnahmen. 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 Fehlerarten Bei der Programmierung können viele Arten von Fehlern auftreten:
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
MehrWo sind wir? Rudolf Berrendorf FH Bonn-Rhein-Sieg Programmiersprache Java 338
Wo sind wir? Java-Umgebung Lexikale Konventionen Datentypen Kontrollstrukturen Ausdrücke Klassen, Pakete, Schnittstellen JVM Exceptions Java Klassenbibliotheken Ein-/Ausgabe Collections Threads Applets,
MehrModellierung und Programmierung 1
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 27. Januar 2016 Lesen und Schreiben von Zeichen Reader read(); close();
MehrVorlesung Programmieren
Vorlesung 25.01.2007 Wintersemester 2006/2007 Computerlinguistik, Campus DU Überblick Seite 2 Datenströme: Ein und Ausgabe von Daten Java Collections Framework Eingabe/Ausgabe Seite 3 Lesen, Schreiben
MehrEinstieg in die Informatik mit Java
1 / 15 Einstieg in die Informatik mit Java Collections Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick Collections 2 Hierarchie von Collections 3 Verwendung
MehrJAVA für Einsteiger. Streams und Dateien. eden market Autor: Norman Lahme
JAVA für Einsteiger Streams und Dateien eden market Autor: Norman Lahme 1 Gliederung 1. Einleitung 2. Bildschirmausgabe und Tastatureingabe 3. Laden und Speichern von Tex ten 4. Laden und Speichern von
MehrAusnahmen. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung
Dr. Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung WS18/19 https://www.sosy-lab.org/teaching/2018-ws-infoeinf/ Fehlerarten Bei der Programmierung
MehrAusnahmen. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung
Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung https://www.sosy-lab.org/teaching/2017-ws-infoeinf/ WS17/18 Fehlerarten Bei der Programmierung
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:
MehrArten von Streams. Daten. Bytes (8-Bits) Java Programm. Daten. Java Programm. Characters (16 - Bits)
Datenströme Arten von Streams Daten 0 1 1 0 1 0 1 0 Java Programm Bytes (8-Bits) Daten 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 Java Programm Characters (16 - Bits) Byteströme(InputStream/OutputStream) I Java Programm
MehrWir wollen in einer Bank die Konten der Kunden modellieren (um sie dann entspr. zu verarbeiten
Noch ein Beispiel Wir wollen in einer Bank die Konten der Kunden modellieren (um sie dann entspr. zu verarbeiten public class Konto { private String kundenname; private double kontostand; private double
MehrJava Einführung Collections
Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...
MehrOCP Java SE 8. Collections
OCP Java SE 8 Collections Collections (Interfaces) Iterable Collection Set List Queue SortedSet Deque Collection List erlaubt Duplikate und null behält die Reihenfolge Set erlaubt keine Duplikate Queue
MehrGrundlagen der Programmierung! Kapitel 10: Ein- und Ausgabe! Ziele dieses Kapitels! Datei! Das Problem!
Grundlagen der Programmierung Dr. Christian Herzog Technische Universität München Wintersemester 2014/2015 Ziele dieses Kapitels Sie verstehen das Konzept der Ströme Sie können Klassen wie Reader, Writer,
MehrProgrammieren I. Kapitel 15. Ein und Ausgabe
Programmieren I Kapitel 15. Ein und Ausgabe Kapitel 15: Ein und Ausgabe Ziel: einen kleinen Einblick in die vielfältigen IO Klassen geben Grober Überblick Klasse File zur Verwaltung von Dateien Random
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
MehrNützliche Utility-Klassen des JDK
Nützliche Utility-Klassen des JDK java.util :, Properties, I18N, Scanner java.text : Ausgabeformatierung u.a. java.util.prefs : Hierarchische Konfigurationsdaten (1.5) java.util.logging : Aufzeichnung
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1
Kapitel 13 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1
Kapitel 12 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch
MehrIT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1
IT I: Heute abstrakte Methoden und Klassen Interfaces Interfaces List, Set und Collection 22.11.2018 IT I - VO 7 1 Wissensüberprüfung Überschreiben von Methoden: Aufruf der Methode der Oberklasse ist oft
MehrProgrammieren in Java
Programmieren in Java Vorlesung 05: Generics Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 19 Inhalt Generics
MehrAusnahmen. Dr. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Dr. Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-16-17/infoeinf WS16/17 Action required now 1. Smartphone: installiere die App "socrative
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Überblick Parametrisierte Datentypen mit Java Generics Java Collections Framework Parametrisierte
MehrInformatik B. Vorlesung 14 Serialisierung, Autoboxing. Dr. Ralf Kunze
Vorlesung 14 Serialisierung, Autoboxing 1 Serialisierung von Objekten Die Objekte innerhalb eines Java-Programmes sollen manchmal auch nach Beendigung der JVM verfügbar bleiben Objekte müssen ab und an
MehrInhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1
Inhaltsverzeichnis Grundlagen und Einführung (1. Band) 1 1 Einleitung und Vorwort 1 1.1 Vorwort zur 13. Auflage....................... 1 1.2 Vorwort zur 10. Auflage....................... 1 1.3 Voraussetzungen...........................
MehrProgrammieren in Java -Eingangstest-
Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit
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
MehrListe Programmieren Java Überblick
Liste Programmieren Java Überblick 1 Was ist Java? 2 Klassen und Objekte 3 Vererbung 4 Schnittstellen 5 Innere Klassen 6 Exceptions 8 Datenstrukturen und Algorithmen 9 Ein-/Ausgabe 10 Threads 11 GUI-Programmierung
MehrVorlesung Programmieren
Vorlesung Programmieren 12 Java API Jun.-Prof. Dr.-Ing. Anne Koziolek Version 1.1 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION
MehrKapitel 8: Serialisierbarkeit
Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 8: Serialisierbarkeit Folie 189 : Serialisierbarkeit Die Umwandlung eines komplexen Objektes in ein Byte-Array nennt
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
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
MehrVom objektorientierten Entwurf zur Implementierung in Java. 2. Dezember 2014
Vom objektorientierten Entwurf zur Implementierung in Java 2. Dezember 2014 Überblick Verwendung von Frameworks und Bibliotheken Was enthält die Java Standard Edition? Implementieren mit dem Java Collections
MehrEingabe und Ausgabe in Java. Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien
Eingabe und Ausgabe in Java Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien Eingabe Beispiel1 public class Input1 { public static void main(string[] args) { for (int i = 0; i < args.length;
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
MehrLösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am
Aufgabe 1 Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am 16.3.2002 Folgende Implementierung löst die gestellte Aufgabe : public interface Figur { public void anzeigen (); public
MehrFaulheit professionell: Fertige Datenbehälter. Das Java-Collections-Framework Typsicherheit Generische Klassen
Faulheit professionell: Fertige Datenbehälter Das Java-Collections-Framework Typsicherheit Generische Klassen Das Java Collections Framework Grundlegende Interfaces Das Interface List Das Interface List
MehrProgrammiermethodik 1. Klausur
Programmiermethodik 1. Klausur 27. 6. 2013 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 21 2 20 3 19 4 19 5 21 6 20 Gesamt 120 1 Seite 2 von 18 Aufgabe 1) Objekt-Orientierung und Vererbung
MehrWo sind wir? Rudolf Berrendorf FH Bonn-Rhein-Sieg Programmiersprache Java 313
Wo sind wir? Java-Umgebung Lexikale Konventionen Datentypen Kontrollstrukturen Ausdrücke Klassen, Pakete, Schnittstellen JVM Exceptions Java Klassenbibliotheken Ein-/Ausgabe Collections Threads Applets,
MehrADT: Java Collections und ArrayList
ADT: Java Collections und ArrayList Überblick der Klassen Object File Collections Map List Set ArrayList LinkedList SortedSet HashSet SortedSet Methode ArrayList Klasse I Beschreibung void add(int position,
MehrUmleitung von Datenströmen
Datenströme Filter und Pipes In UNIX eingeführte Abstraktion beim Datenaustausch Programme arbeiten als Erzeuger und/oder als Verbraucher von Datenströmen ==> Filter Die Erzeuger- und Verbraucherschnittstelle
MehrProgrammieren in Java
Datenstrukturen 2 Gruppierung von Daten Datentypen, die eine Menge an Daten gruppieren und auf dieser Gruppierung eine gewisse Logik bereitstellen werden Datenstrukturen genannt Bisher wurde zur Gruppierung
MehrObjektorientierte Programmierung. Kapitel 14: Interfaces
14. Interfaces 1/26 Objektorientierte Programmierung Kapitel 14: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2013/14 http://www.informatik.uni-halle.de/ brass/oop13/
MehrTU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.
TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. Übung zur Vorlesung Einführung in die Informatik für Ingenieure (MSE) Alexander van Renen (renen@in.tum.de)
MehrProgrammieren 2 Selbststudium Semesterwoche 6
Programmieren 2 Selbststudium Semesterwoche 6 1. Datenströme (Basis: Handout PRG2_SW6_OOP) 1. Gehen Sie nochmals die Kontrollfragen A durch. A.1. Ein JavaProgramm liest Daten aus einem???strom. InputStream
MehrWie entwerfe ich ein Programm?
Wie entwerfe ich ein Programm? Welche Objekte brauche ich? Flussdiagramme für Programmablauf Vorcode Testcode Hauptcode Wir spielen Lotto! Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 +
MehrDynamische Datenstrukturen
Dynamische Datenstrukturen B-Bäume größere Datenmengen verwalten Extern speichern Art der Speicherung berücksichtigen sonst kein optimaler Datenzugriff möglich Art der Speicherung großer Datenmengen Magnetplatten
MehrMapra: C++ Teil 4. Felix Gruber. 6. Mai IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6.
Mapra: C++ Teil 4 Felix Gruber IGPM, RWTH Aachen 6. Mai 2015 Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6. Mai 2015 1 / 22 Themen vom letzten Mal Kompilieren mit Makefiles Ein-/Ausgabe über Dateien
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
MehrJava I/O. Input / Output stream Library Regelt I/O über verschiedene Kanäle. Führt notwendige Umwandlungen/Konvertierungen aus
Java I/O Input / Output stream Library Regelt I/O über verschiedene Kanäle Filesystem Console Netzwerk Intern Führt notwendige Umwandlungen/Konvertierungen aus 1 Furchtbar viele Klassen BufferedInputStream
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
MehrInfo B VL 7: Input/Output
Info B VL 7: Input/Output Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 7: Input/Output p.174 Exkurs:
MehrNeuere Sprachelemente in Java
Softwaretechnik 1 Vorlesung Neuere Sprachelemente in Java Prof. Dr. Bernhard Rumpe Technische Universität Braunschweig http://www.sse.cs.tu-bs.de/ Seite 2 Neuerungen seit Java 5.0 Java Spracherweiterungen
MehrRechtsbelehrung. Java und OOP Das Buch Christian Silberbauer 144
Rechtsbelehrung Dieser Foliensatz ist urheberrechtlich geschützt. Änderungen an den Folien sind untersagt. Ausschließlich eine nicht-kommerzielle Nutzung ist kostenfrei. Andernfalls wird eine Gebühr fällig.
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
MehrOrganisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online
Organisatorisches Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Nächste Woche VO und UE am Dienstag, den 30.10.! UE im CR IL/IT Wissensüberprüfung am Zettel 25.10.2018 IT I - VO 3 1 Organisatorisches
MehrAbschnitt 10: Datenstrukturen
Abschnitt 10: Datenstrukturen 10. Datenstrukturen 10.1Einleitung 10.2 Peer Kröger (LMU München) Einführung in die Programmierung WS 16/17 829 / 867 Einleitung Überblick 10. Datenstrukturen 10.1Einleitung
MehrVerkettete Listen. Implementierung von einfach verketteten Listen. Implementierung von doppelt verketteten Listen
Verkettete Listen Verwendung von Listen in Java Das Prinzip des Iterators Implementierung von einfach verketteten Listen Implementierung von doppelt verketteten Listen Informatik II: Objektorientierte
MehrIT I: Heute. Klasse Object. equals, hashcode, tostring. HashSet IT I - VO 6 1
IT I: Heute Klasse Object equals, hashcode, tostring HashSet 14.11.2017 IT I - VO 6 1 Wissensüberprüfung Wie ruft man statische Methode auf? Gegeben Klasse Fix mit statischer Methode static boolean foxi(string
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
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,
MehrC# Programmierung. Eine Einführung in das.net Framework. C# Programmierung - Tag 2: Einstieg in die OOP
C# Programmierung Eine Einführung in das.net Framework C# Programmierung - Tag 2: Einstieg in die OOP 1/27/2012 1 Di Datentypen Arrays Operatoren Parameter Überladen Heap / Stack Klassen (un)boxing Tag
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:
MehrProgrammieren I. Kapitel 13. Listen
Programmieren I Kapitel 13. Listen Kapitel 13: Listen Ziel: eigene Datenstrukturen erstellen können und eine wichtige vordefinierte Datenstruktur( familie) kennenlernen zusammengehörige Elemente zusammenfassen
MehrJava Einführung IO (Eingabe/Ausgabe)
Java Einführung IO (Eingabe/Ausgabe) Inhalt dieser Einheit Ein-/Ausgabe: Arbeiten mit Verzeichnissen und Dateien Schreiben und Lesen von Dateien bzw. Datenströmen Fehlerbehandlung beim Schreiben und Lesen
MehrTeil II) Objektorientierte Implementierung 10) Verfeinern von UML-Assoziationen mit dem Java-2 Collection Framework
Teil II) Objektorientierte Implementierung 10) Verfeinern von UML-Assoziationen mit dem Java-2 Collection Framework Prof. Dr. rer. nat. Uwe Aßmann Institut für Software- und Multimediatechnik Lehrstuhl
Mehr