Vorlesung Informatik 1

Größe: px
Ab Seite anzeigen:

Download "Vorlesung Informatik 1"

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

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

Mehr

Datenströme in Java. Zeichenkonvertierung

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

Mehr

Info B VL 14: Java Collections/Reflections

Info 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

Mehr

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

Mehr

Grundlagen der Informatik 0

Grundlagen 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

Mehr

Vorlesung Informatik 2

Vorlesung 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

Mehr

Programmierkurs Java

Programmierkurs 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

Mehr

Java Input/Output System (IO)

Java 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

Mehr

Vorlesung Programmieren

Vorlesung 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

Mehr

Dynamische Datenstrukturen Jiri Spale, Algorithmen und Datenstrukturen - Dynamische Datenstrukturen 1

Dynamische 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

Mehr

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

Mehr

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

Mehr

Sammlungen Listen Mengen Abbildungen Algorithmen Wrapper

Sammlungen 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

Mehr

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

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

Mehr

19 Collections Framework

19 Collections Framework Collection = Containterklasse, die andere Objekte enthält. Inhalte: Schnittstellen Implementierungen Algorithmen Vorteile: Einheitlicher Zugriff auf Containerobjekte. Abstraktion von den Implementierungsdetails.

Mehr

PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker

PROG 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

Mehr

19 Collections Framework

19 Collections Framework Collection = Containterklasse, die andere Objekte enthält. Inhalte: Schnittstellen Implementierungen Algorithmen Vorteile: Einheitlicher Zugriff auf Containerobjekte. Abstraktion von den Implementierungsdetails.

Mehr

12 Collections Framework. Interfaces Maps and Collections. Collection Interface. Überblick. Collection = Containterklasse, die andere Objekte enthält.

12 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

Mehr

Abstrakte Datentypen und Java

Abstrakte 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

Mengen und Multimengen

Mengen 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

Mehr

JAVA KURS COLLECTION

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

Mehr

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

Mehr

Mengen und Multimengen

Mengen 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

Mehr

Johannes Unterstein - TINF16 - Java - Sommersemester 2017 JAVA. Wiederholung

Johannes 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

Mehr

Streams. V by WBR1&MOU2/BFH-TI. Berner Fachhochschule Hochschule für Technik und Informatik HTI

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

Mehr

Ausnahmen. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik

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

Mehr

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

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

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 15 Java API Prof. Dr. Ralf H. Reussner Version 1.0 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD), FAKULTÄT FÜR INFORMATIK

Mehr

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

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

Mehr

Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der 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 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

Mehr

Wo sind wir? Rudolf Berrendorf FH Bonn-Rhein-Sieg Programmiersprache Java 338

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

Mehr

Modellierung und Programmierung 1

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

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung 25.01.2007 Wintersemester 2006/2007 Computerlinguistik, Campus DU Überblick Seite 2 Datenströme: Ein und Ausgabe von Daten Java Collections Framework Eingabe/Ausgabe Seite 3 Lesen, Schreiben

Mehr

Einstieg in die Informatik mit Java

Einstieg 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

Mehr

JAVA für Einsteiger. Streams und Dateien. eden market Autor: Norman Lahme

JAVA 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

Mehr

Ausnahmen. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

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

Mehr

Ausnahmen. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

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

Mehr

Algorithmen und Datenstrukturen CS1017

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

Mehr

Arten von Streams. Daten. Bytes (8-Bits) Java Programm. Daten. Java Programm. Characters (16 - Bits)

Arten 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

Mehr

Wir wollen in einer Bank die Konten der Kunden modellieren (um sie dann entspr. zu verarbeiten

Wir 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

Mehr

Java Einführung Collections

Java Einführung Collections Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...

Mehr

OCP Java SE 8. Collections

OCP 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

Mehr

Grundlagen der Programmierung! Kapitel 10: Ein- und Ausgabe! Ziele dieses Kapitels! Datei! Das Problem!

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

Mehr

Programmieren I. Kapitel 15. Ein und Ausgabe

Programmieren 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

Mehr

Teil V. Generics und Kollektionen in Java

Teil 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

Mehr

Nützliche Utility-Klassen des JDK

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

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

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

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1

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

Mehr

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

Mehr

Programmieren in Java

Programmieren 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

Mehr

Ausnahmen. Dr. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

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

Mehr

Software Entwicklung 1

Software 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

Mehr

Informatik B. Vorlesung 14 Serialisierung, Autoboxing. Dr. Ralf Kunze

Informatik 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

Mehr

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

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

Mehr

Programmieren in Java -Eingangstest-

Programmieren 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

Mehr

Programmierkurs Java

Programmierkurs 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

Mehr

Liste Programmieren Java Überblick

Liste 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

Mehr

Vorlesung Programmieren

Vorlesung 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

Mehr

Kapitel 8: Serialisierbarkeit

Kapitel 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

Mehr

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen

Aufgabenblatt 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

Mehr

Schein-/Bachelorklausur Teil 2 am Zulassung: Mindestens 14 Punkte in Teilklausur 1 und 50% der Übungspunkte aus dem 2. Übungsblock.

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

Mehr

Vom objektorientierten Entwurf zur Implementierung in Java. 2. Dezember 2014

Vom 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

Mehr

Eingabe und Ausgabe in Java. Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien

Eingabe und Ausgabe in Java. Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien Eingabe und Ausgabe in Java Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien Eingabe Beispiel1 public class Input1 { public static void main(string[] args) { for (int i = 0; i < args.length;

Mehr

Propädeutikum Programmierung in der Bioinformatik

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

Mehr

Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am

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

Mehr

Faulheit professionell: Fertige Datenbehälter. Das Java-Collections-Framework Typsicherheit Generische Klassen

Faulheit 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

Mehr

Programmiermethodik 1. Klausur

Programmiermethodik 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

Mehr

Wo sind wir? Rudolf Berrendorf FH Bonn-Rhein-Sieg Programmiersprache Java 313

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

Mehr

ADT: Java Collections und ArrayList

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

Mehr

Umleitung von Datenströmen

Umleitung 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

Mehr

Programmieren in Java

Programmieren in Java Datenstrukturen 2 Gruppierung von Daten Datentypen, die eine Menge an Daten gruppieren und auf dieser Gruppierung eine gewisse Logik bereitstellen werden Datenstrukturen genannt Bisher wurde zur Gruppierung

Mehr

Objektorientierte Programmierung. Kapitel 14: Interfaces

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

Mehr

TU 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. 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)

Mehr

Programmieren 2 Selbststudium Semesterwoche 6

Programmieren 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

Mehr

Wie entwerfe ich ein Programm?

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

Mehr

Dynamische Datenstrukturen

Dynamische 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

Mehr

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

Mehr

Java Generics & Collections

Java Generics & Collections Java Praktikum Effizientes Programmieren (Sommersemester 2015) Dennis Reuling Agenda 1 2 3 1 / 30 Praktikum Effizientes Programmieren (Sommersemester 2015) Java Subtyping Teil 1 2 / 30 Praktikum Effizientes

Mehr

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

Mehr

II.4.6 Collections - 1 -

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

Mehr

Info B VL 7: Input/Output

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

Mehr

Neuere Sprachelemente in Java

Neuere 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

Mehr

Rechtsbelehrung. Java und OOP Das Buch Christian Silberbauer 144

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

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 4 ArrayList, PriorityQueue, HashSet und HashMap

Javakurs 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

Mehr

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

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

Mehr

Abschnitt 10: Datenstrukturen

Abschnitt 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

Mehr

Verkettete Listen. Implementierung von einfach verketteten Listen. Implementierung von doppelt verketteten Listen

Verkettete 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

Mehr

IT I: Heute. Klasse Object. equals, hashcode, tostring. HashSet IT I - VO 6 1

IT 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

Mehr

Hashmap: Video Erklärung

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

Mehr

Programmiertechnik II

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

Mehr

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

Mehr

Programmiertechnik II

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

Mehr

Programmieren I. Kapitel 13. Listen

Programmieren 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

Mehr

Java Einführung IO (Eingabe/Ausgabe)

Java 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

Mehr

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