Programmieren 2 Selbststudium Semesterwoche 6



Ähnliche Dokumente
Programmieren I. Kapitel 15. Ein und Ausgabe

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

Java: Vererbung. Teil 3: super()

Programmieren in Java

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Große Übung Praktische Informatik 1

Einführung in die Programmierung

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Software Engineering Klassendiagramme Assoziationen

Zählen von Objekten einer bestimmten Klasse

Objektorientierte Programmierung. Kapitel 12: Interfaces

Modellierung und Programmierung 1

Arbeiten mit UMLed und Delphi

Einführung in die Java- Programmierung

Informatik Grundlagen, WS04, Seminar 13

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Programmierkurs Java

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Programmieren in Java

Anleitung über den Umgang mit Schildern

Objektorientierte Programmierung

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Einführung in Javadoc

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Javakurs zu Informatik I. Henning Heitkötter

Abschnitt 12: Strukturierung von Java-Programmen: Packages

Software Engineering Klassendiagramme Einführung

Problemstellung. Object1:Klasse1. Object2:Klasse2 att1: Klasse1 att2: 9. att1: att2: 17. Klasse1 att1 att2 Klasse2 att1 att2

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Einführung in die Programmierung (EPR)

1 Mathematische Grundlagen

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

EndTermTest PROGALGO WS1516 A

Testklausur 1 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten

Vorlesung Informatik II

Computeranwendung und Programmierung (CuP)

Übung Grundlagen der Programmierung. Übung 05: Arrays. Abgabetermin: xx.xx.xxxx. Java-Programm Testplan Testergebnisse

5. Tutorium zu Programmieren

Delegatesund Ereignisse

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

4. AuD Tafelübung T-C3

Graphic Coding. Klausur. 9. Februar Kurs A

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

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

Statuten in leichter Sprache

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 18

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Erfahrungen mit Hartz IV- Empfängern

I.1 Die Parrot Assemblersprache

Grundlagen von Python

Übung: Verwendung von Java-Threads

Studentische Lösung zum Übungsblatt Nr. 7

WebService in Java SE und EE

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Übung 9 - Lösungsvorschlag

Einführung in die Programmierung

Vererbung & Schnittstellen in C#

Algorithmen und Datenstrukturen

Objektorientierte Programmierung

IT-SICHERHEIT IM UNTERNEHMEN Mehr Sicherheit für Ihre Entscheidung

Testen mit JUnit. Motivation

Professionelle Seminare im Bereich MS-Office

teamsync Kurzanleitung

CodeSaver. Vorwort. Seite 1 von 6

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Institut für Programmierung und Reaktive Systeme 25. August Programmier-Labor Übungsblatt. int binarysearch(int[] a, int x),

Remote Method Invocation

Das Leitbild vom Verein WIR

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Schnellanleitung: Verbuchung von Studien- und Prüfungsleistungen

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Typumwandlungen bei Referenztypen

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

2. Semester, 2. Prüfung, Lösung

Anleitung für die Teilnahme an den Platzvergaben "Studio II, Studio IV und Studio VI" im Studiengang Bachelor Architektur SS15

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Abwesenheitsnotiz im Exchange Server 2010

Informatik GK 12 Klassen Klassen programmieren in Delphi am Beispiel der konkreten Klasse Auto

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 15. Oktober 2005 Dr. Alfons Huhn, Timotheus Preisinger

Tutorium 5 - Programmieren

Datenbanken Kapitel 2

SMS/ MMS Multimedia Center

Viele Bilder auf der FA-Homepage

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Transkript:

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 A.2. Ein JavaProgramm schreibt Daten in einen???strom. OutputStream A.3. Welche 2 Arten von Datenströmen unterscheidet Java? Wie sind die entsprechenden Klassen benannt? Byte-Datenströme (InputStream, OutputStream) Zeichen-Datenströme (Reader, Writer) A.4. Wie heissen die beiden Klassen, welche den I/O mit elementaren Datentypen unterstützen? DataInputStream DataOutputStream A.5. Wie schaltet man bei Java programmiertechnisch Datenströme hintereinander? FileInputStream >>> DataInputStream >>> Programm (read() Methode) Programm >>> DataOutputStream >>> FileOutputStream (write() Methode) A.6. In welcher Beziehung stehen die Klassen FileReader und InputStreamReader? FileReader erweitert InputStreamReader (Beziehung: Einfache Vererbung) FileReader implementiert zusätzliche Methoden zur Erleichterung des File Handlings. 2. Konsultieren Sie die J2SE API Dokumentation und schreiben Sie von folgenden Klassen je 3 wichtige Methoden auf: FileInputStream Wichtige Methoden: read(), close() http://java.sun.com/j2se/1.4.2/docs/api/java/io/fileinputstream.html DataInputStream Wichtige Methoden: read(), readboolean(), readdouble(), readchar(), readfloat(), readint() http://java.sun.com/j2se/1.4.2/docs/api/java/io/datainputstream.html 3. Konsultieren Sie die J2SE API Dokumentation und schreiben Sie von folgenden Klassen je 3 wichtige Methoden auf: BufferedWriter Wichtige Methoden: write(), close(), flush(), newline() http://java.sun.com/j2se/1.4.2/docs/api/java/io/bufferedwriter.html PrintWriter Wichtige Methoden: print(), close(), flush() http://java.sun.com/j2se/1.4.2/docs/api/java/io/printwriter.html FileWriter Wichtige Methoden: Nur Konstruktoren implementiert; alle Methoden geerbt http://java.sun.com/j2se/1.4.2/docs/api/java/io/filewriter.html Seite 1 von 7

2. Dateien (Basis: Handout PRG2_SW6_OOP, Sourcecode zu den Beispielen) 4. Gehen Sie nochmals die Kontrollfragen B durch. B.1. Inwiefern unterscheiden sich binäre Dateien und Text Dateien? Binäre Dateien: Folge von Bytes, beliebige Daten speicherbar. Text Dateien: Folge von Unicode-Zeichen. Das File ist mit einem Texteditor lesbar. B.2. Was versteht man im Zusammenhang mit Dateien unter "Random Access"? Beim "wahlfreien Zugriff" kann jede beliebige Stelle einer Datei direkt angesprungen werden ohne dabei die Datei "sequentiell" durchlaufen zu müssen. B.3. Wie öffnet man in Java eine Datei? File afile = new File("dateiname.txt"); FileInputStream afileinputstream = new FileInputStream(aFile); DataInputStream adatainputstream = new DataInputStream(aFileInputStream); B.4. Beim Lesen einer binären Datei liefert read() ein Byte bzw. einen Wert 0 255 zurück. Wie wird EOF signalisiert? Java Doku: "The next byte of data, or -1 if the end of the file is reached" B.5. Was bewirkt die Methode flush()? Flush() fordert die sofortige Leerung aller Buffer in der Kette von Writers und OutputStreams. 5. Führen Sie die main()-methode der Klasse WriteBinaryFile2 aus. Inspizieren Sie die Datei "data2.bin" mit einem einfachen TextEditor/Viewer. Führen Sie die main()-methode der Klasse ReadBinaryFile2 aus. Inhalt der Datei data2.bin: Wird die Datei data2.bin mit ReadBinaryFile2 gelesen, sehen wir folgendes Terminal Output: Seite 2 von 7

6. Schreiben Sie eine neue Klasse WriteBinaryFile3 (basierend auf WriteBinaryFile2), die NEU der Reihe nach 2 intwerte, 3 floatwerte und 4 charwerte in eine Datei "data3.bin" hineinschreibt. import java.io.*; public class WriteBinaryFile3 public static void main(string[] args) String filename = "data3.bin"; File afile = new File(fileName); if (!afile.exists()) try FileOutputStream afileoutputstream = new FileOutputStream(aFile); // DataOutputStream unterstützt elementare Datentypen DataOutputStream adataoutputstream = new DataOutputStream(aFileOutputStream); // 2 int Werte adataoutputstream.writeint(2); adataoutputstream.writeint(100); adataoutputstream.writeint(200); // 3 float Werte adataoutputstream.writeint(3); adataoutputstream.writefloat(100.53f); adataoutputstream.writefloat(200.64f); adataoutputstream.writefloat(300.78f); // 4 char Werte adataoutputstream.writeint(4); adataoutputstream.writechar('a'); adataoutputstream.writechar('b'); adataoutputstream.writechar('c'); adataoutputstream.writechar('d'); afileoutputstream.close(); catch (IOException e) //... Seite 3 von 7

7. Schreiben Sie eine neue Klasse ReadBinaryFile3 (basierend auf ReadBinaryFile2), welche die Datei "data3.bin" bzw. dieses proprietäre FileFormat wieder ordentlich einlesen kann. import java.io.*; public class ReadBinaryFile3 public static void main(string[] args) String filename = "data3.bin"; File afile = new File(fileName); if (afile.exists()) try FileInputStream afileinputstream = new FileInputStream(aFile); DataInputStream adatainputstream = new DataInputStream(aFileInputStream); // Einlesen der int Werte int numberofint = adatainputstream.readint(); for (int i = 0; i < numberofint; i++) System.out.println("readInt()="+aDataInputStream.readInt()); // Einlesen der float Werte int numberoffloat = adatainputstream.readint(); for (int i = 0; i < numberoffloat; i++) System.out.println("readFloat()="+aDataInputStream.readFloat()); // Einlesen der char Werte int numberofchar = adatainputstream.readint(); for (int i = 0; i < numberofchar; i++) System.out.println("readChar()="+aDataInputStream.readChar()); afileinputstream.close(); catch (IOException e) //... 3. Objekt Serialisierung (Basis: Handout PRG2_SW6_OOP, Source Code zu den Beispielen) 8. Gehen Sie nochmals die Kontrollfragen C durch. C.1. Wozu dient die Objekt-Serialisierung? Unter Serialisierung versteht man eine Abbildung von Objekten auf eine externe sequenzielle Darstellungsform. Serialisierung kann für das Erreichen von Persistenz für ein Objekt verwendet werden, aber auch in verteilten Softwaresystemen spielt Serialisierung eine bedeutende Rolle. Übliche Speichermedien sind nur in der Lage, Datenströme zu speichern. Um Persistenz für ein Objekt zu erreichen, kann es serialisiert werden. Hier wird der komplette Zustand des Objektes, inklusive aller referenzierten Objekte, in einen Datenstrom umgewandelt, der anschließend auf ein Speichermedium geschrieben wird. Nach der Serialisierung liegt ein Objekt mehrfach vor: als externe Darstellung (zum Beispiel als Datei) und im Arbeitsspeicher. Wird nach der Serialisierung eine Änderung am Objekt im Arbeitsspeicher vorgenommen, hat dieses keine Auswirkung auf das serialisierte Objekt in der externen Darstellung. Die Umkehrung der Serialisierung, also die Umwandlung eines Datenstroms in Objekte, wird als Deserialisierung bezeichnet. Seite 4 von 7

Eine Spezialität der Programmiersprache Java ist die Markierung von serialisierbaren Objekten über die Implementierung der Markierungsschnittstelle java.io.serializable. Quelle: http://de.wikipedia.org/wiki/serialisierung C.2. Was für Variablen werden nicht serialisiert? Statische Attribute (Klassenvariablen) Transiente Instanzvariablen (Modifier: transient) Konstanten C.3. Welches Interface muss eine Klasse implementieren, damit ihre Objekte serialisierbar sind? Interface java.io.serializable C.4. Was ist das Besondere an diesem Interface? Normalerweise geben Interfaces gewisse Designvorgaben vor. Serializable ist jedoch nur ein Markierungsinterface und erzwingt deshalb keine Methoden. Es dient lediglich zur Markierung einer Klasse, dass diese fähig ist, serialisiert zu werden. C.5. Was für Objekte nennt man persistent? Persistenz ist ein Begriff aus der Informatik, der die Fähigkeit bezeichnet, Daten (oder Objekte) in nichtflüchtigen Speichermedien wie Dateisystemen oder Datenbanken zu speichern. Objekte, die ausserhalb eines Laufzeitsystems existieren (ausserhalb JVM), werden persistente Objekte genannt. http://de.wikipedia.org/wiki/persistenz_(informatik) C.6. Das Serialisieren eines bestimmten Objektes kann zahlreiche weitere Objekt-Serialisierungen nach sich ziehen. Erklären Sie. Wenn ein persistentes Objekt wieder in das Programm geladen wird (=Deserialisierung), müssen zwingend auch alle vom Objekt abhängigen Objekte mitgeladen werden! Beim Serialisieren wird demzufolge nicht nur das gewünschte Objekt sondern auch alle indirekt referenzierten Objekte serialisert. C.9. Spielen Sie das Beispiel in den Unterlagen selber bzw. führen Sie die main()-methode der Klasse DemoSerialization aus und inspizieren Sie die Datei "matrix.dat" mit einem Editor. Datei matrix.dat im Notepad: Seite 5 von 7

C.10. Erweitern Sie die main()-methode so, dass NEU 2 Matrizen (unterschiedlich gross) serialisiert und wieder zurück gelesen werden. Hat's geklappt? import java.io.*; public class DemoSerialization public static void main(string[] args) try Matrix m1 = new Matrix(3, 3); m1.setelt(0, 0, 1); m1.setelt(1, 1, 2); m1.setelt(2, 2, 3); m1.print(); Matrix m2 = new Matrix(2, 8); m2.setelt(0, 0, 1); m2.setelt(0, 1, 2); m2.setelt(0, 2, 3); m2.setelt(0, 3, 4); m2.print(); FileOutputStream afileoutputstream = new FileOutputStream("matrix.dat"); ObjectOutputStream aobjectoutputstream = new ObjectOutputStream(aFileOutputStream); // Matrix Objekte in den Stream schrieben aobjectoutputstream.writeobject(m1); aobjectoutputstream.writeobject(m2); afileoutputstream.close(); /////////////////////////////////////////// FileInputStream afileinputstream = new FileInputStream("matrix.dat"); ObjectInputStream aobjectinputstream = new ObjectInputStream(aFileInputStream); // Matrix Objekte aus dem Stream lesen Object o1 = aobjectinputstream.readobject(); Object o2 = aobjectinputstream.readobject(); afileinputstream.close(); Matrix mobj1 = (Matrix)o1; mobj1.print(); Matrix mobj2 = (Matrix)o2; mobj2.print(); catch(exception e) System.out.println("Exception: " + e.getmessage()); Seite 6 von 7

4. Binäre und Text Dateien (Basis: Handout PRG2_SW6_OOP, Sourcecode zu den Beispielen) 11. Studieren Sie die Programmier-Pattern im letzten Teil des Handouts. 12. Führen Sie die main()-methoden aller Klassen aus. Inspizieren Sie zwischendurch die Dateien mit einem Editor. 5. Ordnung muss sein! (Basis: Handout PRG2_SW6_DAT) 13. Gehen Sie nochmals die Kontrollfragen A, B und C durch. Seite 7 von 7