Vorlesung Informatik II

Größe: px
Ab Seite anzeigen:

Download "Vorlesung Informatik II"

Transkript

1 Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 14. Java - Datenhaltung 2: Textdateien und Objektserialisierung 1

2 Ein-/Ausgabe mit Text Speichern als Text Man überlege sich ein Textformat zur Abspeicherung der durch Objekte und Assoziationen repräsentierten Daten und schreibe den Text in eine Textdatei beim Laden müssen die Objekte rekonstruierbar sein: Benutze Trennzeichen zwischen Attributwerten 2

3 Ein-/Ausgabe mit Text Speichern als Text Man überlege sich ein Textformat zur Abspeicherung der durch Objekte und Assoziationen repräsentierten Daten und schreibe den Text in eine Textdatei Auf die Daten kann nur durch einen Benutzer zugegriffen werden Daten müssen komplett in den Arbeitsspeicher passen Speicherung kann beliebig oft während einer Sitzung erfolgen. Änderungen zwischen zwei Speicherungen gehen bei Systemausfall verloren Kann von Programmen, denen das Format bekannt ist, interpretiert werden 3

4 Ein-/Ausgabe mit Text Zum Speichern und Laden von Text benutzt man Datenströme Die Java API stellt Klassen zur Verfügung zur Repräsentation von Textdateien zur Repräsentation von Datenströmen ( Dateien zur Repräsentation von Dialogen (Auswahl von 4

5 Ein-/Ausgabe mit Text Zum Speichern und Laden von Text benutzt man Datenströme Byte-Datenströme: Laden byte x = ds.read() Byte-Datenstrom ds Datei 1 Byte 5

6 Ein-/Ausgabe mit Text Zum Speichern und Laden von Text benutzt man Datenströme Byte-Datenströme: Speichern byte b =...; ds.write(b) Byte-Datenstrom ds Datei 1 Byte 6

7 Ein-/Ausgabe mit Text Zum Speichern und Laden von Text benutzt man Datenströme Zeichen-Datenströme: Laden char x = ds.read() red Dekodierung Byte Zeichen-Datenstrom ds Datei 7

8 Ein-/Ausgabe mit Text Zum Speichern und Laden von Text benutzt man Datenströme Zeichen-Datenströme: Speichern char x =...; ds.write(x) red Kodierung Byte Zeichen-Datenstrom ds Datei 8

9 Ein-/Ausgabe mit Text Zum Speichern und Laden von Text benutzt man Datenströme Datenströme hintereinanderschalten: Laden char x = ds.read() red Dekodierung Zeichen-Datenstrom ds Byte-Datenstrom (Speichern analog umgekehrt) 9

10 Ein-/Ausgabe mit Text Zum Speichern und Laden von Text benutzt man Datenströme Gepufferte Datenströme: Laden String x = ds.readln() D i e \n D e r n \ D e r Gepufferter Datenstrom ds Zeichen-Datenstrom (Speichern analog umgekehrt) 10

11 Ein-/Ausgabe mit Text Dateiauswahl über vordefinierte Dialogklasse FileDialog Modales Dialog-Fenster für Auswahl/Generierung einer Datei Konstruktor public FileDialog(Frame parent, String title, int ( mode Parameter mode Werte: FileDialog.LOAD, FileDialog.SAVE 11

12 Ein-/Ausgabe mit Text Dateiauswahl über vordefinierte Dialogklasse FileDialog Modales Dialog-Fenster für Auswahl/Generierung einer Datei Methoden: Setzen/Lesen von Pfad und Datei (siehe API) String getfile() Gibt Dateinamen zurück (ohne Pfad), falls Datei ausgewählt Gibt null zurück, falls keine Datei gewählt oder abgebrochen String getdirectory() Gibt Pfad der ausgewählten Datei zurück 12

13 Ein-/Ausgabe mit Text Dateiauswahl über vordefinierte Dialogklasse FileDialog Beispiel Speichern (Code Teil der Ereignisbehandlung in einem Fenster): FileDialog fd = new FileDialog(this,"Speichern unter", FileDialog.SAVE); fd.setvisible(true); if (fd.getfile()!=null){ try{ File f = new File(fd.getDirectory()+fd.getFile());... } 13

14 Ein-/Ausgabe mit Text Java-interne Repräsentation einer Datei mit Klasse File Repräsentation von Dateien und Ordnern Erfordert Import des java.io Pakets Konstruktor (keine physikalische Datei, sondern nur Java-Objekt!) File(String filename) Parameter filename unveränderlicher Dateiname mit absolutem Pfad oder Pfad relativ zum Projektordner Syntax ist Systemabhängig! (API lesen) 14

15 Ein-/Ausgabe mit Text Java-interne Repräsentation einer Datei mit Klasse File Repräsentation von Dateien und Ordnern Erfordert Import des java.io Pakets Methoden boolean exists() Gibt true zurück, falls Datei physikalisch existiert boolean isdirectory(): Gibt true zurück, falls Datei physikalisch existiert und einen Ordner repräsentiert 15

16 Ein-/Ausgabe mit Text Java-interne Repräsentation einer Datei mit Klasse File Repräsentation von Dateien und Ordnern Erfordert Import des java.io Pakets Methoden String getname() gibt Dateiname zurück (ohne Pfad) String getabsolutepath() gibt Dateiname zurück mit absolutem Pfad String[] list(): gibt Datei- und Ordnernamen in einem Ordner zurück (oder null) 16

17 Ein-/Ausgabe mit Text Java-interne Repräsentation einer Datei mit Klasse File Repräsentation von Dateien und Ordnern Erfordert Import des java.io Pakets Methoden File[] listfiles() gibt File-Objekte in einem Ordner zurück (oder null) String getfiletype() gibt Endung )einschließlich. ) zurück 17

18 Ein-/Ausgabe mit Text Java-interne Repräsentation einer Datei mit Klasse File Beispiel Speichern (Fortsetzung) (Code Teil der Ereignisbehandlung in einem Fenster): try{ File f = new File(fd.getDirectory()+fd.getFile()); PrintWriter p = new PrintWriter( new OutputStreamWriter( new FileOutputStream(f))); Iterator it = <DatenContainer>.iterator(); while(it.hasnext()){ p.println("neu");... 18

19 Ein-/Ausgabe mit Text Schreiben in physikalische Datei über Ausgabe-Datenströme Zum Schreiben von Bytes, Zeichen oder Zeilen in Dateien Datenströme bilden Vererbungshierarchie OutputStream FileOutputStream FilterOutputStream ObjectOutputStream BufferedOutputStream PrintStream DataOutputStream

20 Ein-/Ausgabe mit Text Klasse FileOutputStream Zum Schreiben einzelner Bytes in eine Datei (z.b. für Bilddateien) Konstruktor: public FileOutputStream(File file) throws FileNotFoundException Stellt Verbindung zu Datei her; Datei wird ggf. kreiert Ausnahme, falls - Datei existiert, aber ein Ordner ist - Datei nicht existiert und nicht kreiert werden kann - Datei existiert und nicht geöffnet werden kann

21 Ein-/Ausgabe mit Text Klasse FileOutputStream Zum Schreiben einzelner Bytes in eine Datei (z.b. für Bilddateien) Methoden: void write(byte[] b) throws IOException Schreibt Bytes void close() throws IOException Leert den Strom, schließt den Strom, gibt Resourcen frei Achtung: ohne close gehen Ausgabedaten verloren! u.v.m.

22 Ein-/Ausgabe mit Text Klasse ObjectOutputStream Für Objektserialisierung später Klasse PrintStream Methoden werfen keine Ausnahmen Der Standard-Ausgabestrom ist von diesem Typ

23 Ein-/Ausgabe mit Text Schreiben in physikalische Datei über Ausgabe-Datenschreiber Zum formatierten Schreiben von Zeichen in Dateien Datenschreiber bilden Vererbungshierarchie Writer OutputStreamWriter BufferedWriter PrintWriter

24 Ein-/Ausgabe mit Text Klasse OutputStreamWriter Zum Umwandeln von Zeichen in Bytes bzgl. einer Codierung Konstruktor: public OutputStreamWriter(OutputStream out) Umwandlung nach Standard-Codierung (Systemabhängig!) Methoden: void close() throws IOException void write(int c) throws IOException u.v.m.

25 Ein-/Ausgabe mit Text Klasse PrintWriter Zum formatierten Schreiben von Zeichen (z.b. Zeilenweise) Konstruktor: public PrintWriter(Writer out) Implementiert alle PrintStream-Methoden Methoden erzeugen keine Ausnahmen

26 Ein-/Ausgabe mit Text Beispiel Speichern (Fortsetzung) (Code Teil der Ereignisbehandlung in einem Frame): try{... Iterator it = <DatenContainer>.iterator(); while(it.hasnext()){ p.println("neu"); <Datenklasse> o = it.next(); p.println(o.get<attribut>());... } p.println("ende"); p.close(); } catch(exception ex){...} 26

27 Ein-/Ausgabe mit Text Beispiel Laden (Code Teil der Ereignisbehandlung in einem Frame): FileDialog fd = new FileDialog(this,"Öffnen", FileDialog.LOAD); fd.setvisible(true); try{ BufferedReader r = new BufferedReader( new InputStreamReader( new FileInputStream( fd.getdirectory()+fd.getfile()))); <DatenContainer> con = <DatenContainer>.instance(); String line = r.readline();... 27

28 Ein-/Ausgabe mit Text Laden von physikalischer Datei über Eingabe-Datenströme Zum Laden von Bytes, Zeichen oder Zeilen aus Dateien Datenströme bilden Vererbungshierarchie InputStream FileInputStream FilterInputStream ObjectInputStream BufferedInputStream DataInputStream

29 Ein-/Ausgabe mit Text Klasse FileInputStream Zum Lesen einzelner Bytes aus einer Datei Konstruktor: public FileInputStream(String filename) throws FileNotFoundException Stellt Verbindung zu existierender Datei her Ausnahme, falls - Datei existiert, aber ein Ordner ist - Datei nicht existiert - Datei existiert, aber nicht geöffnet werden kann

30 Ein-/Ausgabe mit Text Klasse FileInputStream Zum Lesen einzelner Bytes aus einer Datei Methoden: int read() throws IOExeption Liest Bytes void close() throws IOExeption Schließt den Strom, gibt Resourcen frei u.v.m. (auf Ausnahmen achten!)

31 Ein-/Ausgabe mit Text Klasse ObjectInputStream Zur Deserialisierung später

32 Ein-/Ausgabe mit Text Laden von physikalischer Datei über Eingabe-Datenlesern Zum (effizienten) Laden von Zeichen aus Dateien Datenleser bilden Vererbungshierarchie Reader InputStreamReader BufferedReader

33 Ein-/Ausgabe mit Text Klasse InputStreamReader Zum Umwandeln von Bytes in Zeichen bzgl. einer Codierung Konstruktor: public InputStreamReader(InputStream in) Umwandlung nach Standard-Codierung (Systemabhängig!) Methoden: int read() throws IOException boolean ready() throws IOException (lesebereit?) u.v.m.

34 Ein-/Ausgabe mit Text Klasse BufferedReader Zum zeilenweisen effizienten Lesen von Zeichen Konstruktor: public BufferedReader(Reader in) Gepufferter Zeichenstrom Methoden: String readln() throws IOException (Lesen einer Zeile) boolean ready() throws IOException u.v.m.

35 Ein-/Ausgabe mit Text Beispiel Laden (Fortsetzung) (Code Teil der Ereignisbehandlung in einem Frame):... <DatenContainer> con = <DatenContainer>.instance(); String line = r.readline(); while(!line.equals("ende"){ if(line.equals("neu")){ <Datenklasse> o = new <Datenklasse>(); o.set<attribut>(r.readline());... con.add<datenklasse>(o); line = r.readline(); } } r.close();... 35

36 Entkoppelung (Wiederholung) Bisher: Code zum Laden und Speichern in Fensterklassen Jetzt: Laden/Speichern ausgliedern in Datenhaltungsschicht (eigene Klasse Datei) 36

37 Entkoppelung (Wiederholung) Jetzt: Laden/Speichern ausgliedern in Datenhaltungsschicht Zugriff nur über Fachkonzeptschicht <Container> -daten<container> -root WurzelContainer -root -store <<interface>> Datenhaltung <Container> -daten<container> Datei 37

38 Entkoppelung (Wiederholung) Jetzt: Laden/Speichern ausgliedern in Datenhaltungsschicht Spezifizierung der Schnittstelle <<interface>> Datenhaltung +load(out d:wurzelcontainer) + save(in d:wurzelcontainer) +add(in o:object) +delete(in o:object) +modify(in o:object) Laden und Speichern aller Objekte einer Klasse Speichern, Löschen und Modifizieren einzelner Objekte (leer implementiert) 38

39 Entkoppelung (Wiederholung) Jetzt: Laden/Speichern ausgliedern in Datenhaltungsschicht Implementierung der Schnittstelle Datei - filename:string +Datei(filename:String) +load(out d:wurzelcontainer) + save(in d:wurzelcontainer) +add(in o:object) +delete(in o:object) +modify(in o:object) 39

40 Entkoppelung (Wiederholung) Jetzt: Laden/Speichern ausgliedern in Datenhaltungsschicht Konstruktor import java.io.*; public class Datei{ private String filename; public Datei(String file){ filename = file; }... } 40

41 Entkoppelung (Wiederholung) Jetzt: Laden/Speichern ausgliedern in Datenhaltungsschicht Objekt-bezogene Methoden leer implementieren... public void add(object o){} public void delete(object o){} public void modify(object o){} 41

42 Entkoppelung (Wiederholung) Jetzt: Laden/Speichern ausgliedern in Datenhaltungsschicht Laden und Speichern... public void save(wurzelcontainer d){ <Code wie vorhin für alle DatenContainer im WurzelContainer> } public void load(wurzelcontainer d){ <Code wie vorhin für alle DatenContainer im WurzelContainer> } 42

43 Entkoppelung (Wiederholung) Daten aus Textdatei laden: Überblick GUI starten In GUI DatenContainer-Objekt con leer initialisieren In GUI über Befehl Laden )Schaltfläche oder Menü-Item) FileDialog öffnen und dort Datei (filename) wählen In GUI con.load(filename) aufrufen In load Datei-Objekt store mit filename initialisieren In load Aufruf store.load(this) starten 43

44 Entkoppelung (Wiederholung) Daten in Textdatei speichern: Überblick In GUI über Befehl Speichern )Schaltfläche oder Menü-Item) FileDialog öffnen und dort Datei (filename) wählen )ggf. Unterscheidung Speichern / Speichern unter ) In GUI con.save(filename) aufrufen In save für Datei-Objekt store Attribut filename setzen In save Aufruf store.save(this) starten 44

45 Ein-/Ausgabe mit Objektserialisierung Speichern durch Serialisierung Ein Objekt wird mit seinen Attributwerten und Beziehungen zu anderen Objekten unter Beibehaltung seiner Klasse als Byte- Strom in einer Datei gespeichert. Dasselbe passiert mit allen mit diesem Objekt in Beziehung stehenden anderen Objekten. Man braucht ein Wurzelobjekt zur Verwaltung aller Objekte Serialisierung des Wurzelobjekts führt zur Serialisierung aller Objekte (Beispiel: Klasse WurzelContainer) Das serialisierte Objekt kann mit allen in Beziehung stehenden Objekten wieder deserialisiert werden: Objekte werden wieder im Arbeitsspeicher erzeugt 45

46 Ein-/Ausgabe mit Objektserialisierung Speichern durch Serialisierung Ein Objekt wird mit seinen Attributwerten und Beziehungen zu anderen Objekten unter Beibehaltung seiner Klasse als Byte- Strom in einer Datei gespeichert. Dasselbe passiert mit allen mit diesem Objekt in Beziehung stehenden anderen Objekten. Auf die Daten kann nur durch einen Benutzer zugegriffen werden Daten müssen komplett in den Arbeitsspeicher passen Speicherung kann beliebig oft während einer Sitzung erfolgen. Änderungen zwischen zwei Speicherungen gehen bei Systemausfall verloren Datendatei nicht von anderen Programmen interpretierbar 46

47 Ein-/Ausgabe mit Objektserialisierung Implementierung in Java: API-Schnittstelle Serializable Klassen, deren Objekte serialisiert werden sollen, müssen die ( vererbt Schnittstelle Serializable implementieren (wird Die Schnittstelle Serializable besitzt keine Operationen oder Attribute 47

48 Ein-/Ausgabe mit Objektserialisierung Implementierung in Java: Modifizierer transient Attribute, die nicht serialisiert werden sollen/müssen, deklariert man als transient: <Sichtbarkeit> transient <meinattribut>; Das betrifft Attribute, die keine Daten der Anwendung repräsentieren Beispiel: Attribut store der Klasse WurzelContainer 48

49 Ein-/Ausgabe mit Objektserialisierung Klasse ObjectOutputStream Schreibt primitive Datentypen und Objekte in einen OutputStream. Ein Objekt wird mit allen referenzierten Objekten, deren Klassen die Schnittstelle Serializable implementieren, geschrieben Konstruktor ObjectOutputStream(OutputStream out) 49

50 Ein-/Ausgabe mit Objektserialisierung Klasse ObjectOutputStream Schreibt primitive Datentypen und Objekte in einen OutputStream. Ein Objekt wird mit allen referenzierten Objekten, deren Klassen die Schnittstelle Seriazable implementieren, geschrieben Methoden void close() throws IOException Leert und schließt den Strom, gibt alle Ressourcen frei final void writeobject(object obj) throws IOException Schreibt obj ohne transiente und statische Attribute Ausnahmen u.a. für nicht serialisierbare Objekte 50

51 Ein-/Ausgabe mit Objektserialisierung Klasse ObjectInputStream Liest primitive Datentypen und Objekte, die vorher mit einem ObjectOutputStream-Objekt geschrieben wurden. Rekonstruiert alle Objekte mit Objektbeziehungen. Konstruktor ObjectInputStream(InputStream in) 51

52 Ein-/Ausgabe mit Objektserialisierung Klasse ObjectInputStream Liest primitive Datentypen und Objekte, die vorher mit einem ObjectOutputStream-Objekt geschrieben wurden. Rekonstruiert alle Objekte mit Objektbeziehungen. Methoden void close() throws IOException final Object readobject() throws IOException Deserialisert das in einer Datei serialisierte Objekt mit Objektstruktur und allen in Beziehung stehenden Objekten und gibt dieses Objekt zurück 52

53 Ein-/Ausgabe mit Objektserialisierung Implementierung der Klasse Datei Konstruktor import java.io.*; public class Datei{ private String filename; public Datei(String file){ filename = file; }... } 53

54 Ein-/Ausgabe mit Objektserialisierung Implementierung der Klasse Datei Objekt-bezogene Methoden leer implementieren... public void add(object o){} public void delete(object o){} public void modify(object o){} 54

55 Ein-/Ausgabe mit Objektserialisierung Implementierung der Klasse Datei Speichern public void save(wurzelcontainer d){ try{ ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream(filename)); oos.writeobject(d); oos.close(); } catch(...){...} } 55

56 Ein-/Ausgabe mit Objektserialisierung Implementierung der Klasse Datei Laden public void load(wurzelcontainer d){ try{ ObjectInputStream ois = new ObjectInputStream( new FileInputStream(filename)); d = ois.readobject();??? ois.close(); } catch(...){...} } 56

57 Ein-/Ausgabe mit Objektserialisierung Implementierung der Klasse Datei Laden public void load(wurzelcontainer d){ try{ ObjectInputStream ois = new ObjectInputStream( new FileInputStream(filename)); d = ois.readobject();??? ois.close(); } catch(...){...} } Der Zeiger d kann NICHT umgebogen werden! 57

58 Ein-/Ausgabe mit Objektserialisierung Implementierung der Klasse Datei Laden public void load(wurzelcontainer d){ try{ ObjectInputStream ois = new ObjectInputStream( new FileInputStream(filename)); WurzelContainer temp = ois.readobject(); d.set<datencontainer>(temp.get<datencontainer>()); ois.close(); } catch(...){...} } Stattdessen: Daten an d übertragen 58

59 Ein-/Ausgabe mit Objektserialisierung Daten deserialisieren: Überblick GUI starten In GUI DatenContainer-Objekt con leer initialisieren In GUI über Befehl Laden )Schaltfläche oder Menü-Item) FileDialog öffnen und dort Datei (filename) wählen In GUI con.load(filename) aufrufen In load Datei-Objekt store mit filename initialisieren In load Aufruf store.load(this) starten 59

60 Ein-/Ausgabe mit Objektserialisierung Daten serialisieren: Überblick In GUI über Befehl Speichern )Schaltfläche oder Menü-Item) FileDialog öffnen und dort Datei (filename) wählen )ggf. Unterscheidung Speichern / Speichern unter ) In GUI con.save(filename) aufrufen In save für Datei-Objekt store Attribut filename setzen In save Aufruf store.save(this) starten 60

61 Zusammenfassung Datenhaltung lässt sich weitgehend ohne Veränderung der GUI- und Fachkonzept-Klassen austauschen Ausnahmen: Schnittstelle Serializable für Objektserialisierung Unterschiedliche Auswahl von Datenbanken und Dateien Unterschiedliche Zeitpunkte des Abspeicherns 61

62 Exkurs XML EXtensible Markup Language erweiterbare Auszeichnungssprache/Beschreibungssprache Strukturierter Text (ASCII oder Unicode) zur: Strukturierung von Dokumenten Beschreibung und (hierarchischer) Strukturierung von Daten Definition von Auszeichnungssprachen Portables Datenformat Im Folgenden: Kurze beispielhafte Einführung (Vollständig ist XML Thema einer eigenständigen Vorlesung) 62

63 Definition XML EXtensible Markup Language erweiterbare Auszeichnungssprache/Beschreibungssprache Daten (Werte) werden durch sog. Tags (Elemente) markiert: <Jahr> 2009 </Jahr> Anfangs-Tag Wert End-Tag Tags beschreiben die Semantik von Werten (Zeichenfolgen) 63

64 Definition XML EXtensible Markup Language erweiterbare Auszeichnungssprache/Beschreibungssprache Tags können ineinander verschachtelt werden. seinstrukturiertkanntagseineswertder <Datum> <Jahr> 2009 </Jahr> <Monat> Juli </Monat> <Tag> 22 </Tag> </Datum> Eltern-Tag Kind-Tags Ein XML-Dokument bildet also eine Baumstruktur 64

65 Definition XML EXtensible Markup Language erweiterbare Auszeichnungssprache/Beschreibungssprache Daten können alternativ/zusätzlich durch Attribute beschrieben werden <Datum Jahr= 2009 Monat= Juli Tag= 22 > </Datum> ( Schlüsselwort-Wert-Paare ) Attribute Das Beispiel zeigt einen sog. leeren Tag; Kurzschreibweise: <Datum Jahr= 2009 Monat= Juli Tag= 22 /> 65

66 Definition XML EXtensible Markup Language erweiterbare Auszeichnungssprache/Beschreibungssprache Attribute vs. Kind-Tags: Attribute beschreiben oft Zusatzinformationen Strukturierte Tags beschreiben i.d.r. Datenobjekte 66

67 XML-Dateien Beispiel: Vorlesungen und Professoren <?xml version= 1.0 encoding= UTF-8?> XML-Deklaration <Vorlesungsverwaltung> <Vorlesung ID= > Wurzel-Tag <Name> Informatik 2</Name> <Dozent ID= > <Name> Hagerup </Name> <Lehrstuhl> Theoretische Informatik </Lehrstuhl> </Dozent> </Vorlesung>... <Vorlesung ID= >... </Vorlesung> </Vorlesungsverwaltung> 67

68 XML-Namensräume Der gleiche Tag kann in unterschiedlichen Dokumenten verschiedene Bedeutungen haben Durch Angabe eines sog. Namensraums wird die gemeinte Bedeutung eindeutig festgelegt Globaler Namensraum für das ganze Dokument: <Wurzel-Element xmlns= > XML-NameSpace Namensraum für Teile eines Dokuments: <Kind-Element xmlns= > 68

69 XML-Schema XML-Schema ist eine XML-Sprache zur Definition der Syntax von XML-Dokumenten Mit einem XML-Schema-Dokument legt man fest, was gültige XML-Dokumente bzgl. des Schema-Dokuments sind Mit einem XML-Schema-Dokument legt man also eine Datenstruktur fest Mit einem XML-Dokument speichert man konkrete Daten ab XML-Schema-Dokument : XML-Dokument = Klassendiagramm : Menge von Datenobjekten 69

70 XML-Schema XML-Schema ist eine XML-Sprache zur Definition der Syntax von XML-Dokumenten Festgelegt werden können u.a.: Tag-Elemente mit primitivem/komplexem Datentyp Attribute eines Tag-Elements Kind-Tag-Elemente eines Tag-Elements Minimale/Maximale Häufigkeit des Vorkommens eines Objekts Strukturen wie Mengen, Folgen, von Objekten. u.v.m 70

71 XML-Schema XML-Schema-Dokument Beispiel: Definition komplexer Datentypen Definition eigener (strukturierter) Datenytpen Definition von Attributen <xsd:element name="name" type="xsd:string"/> <xsd:complextype name="professortyp"> <xsd:sequence> <xsd:element ref="name"/> Definition von Kind-Tags als Sequenz <xsd:element name="lehrstuhl" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="persid" type="xsd:id" use="required"/> </xsd:complextype> <xsd:complextype name="vorlesungtyp"> <xsd:sequence> <xsd:element ref= "Name"/> <xsd:element name="dozent" type="professortyp"/> </xsd:sequence> <xsd:attribute name="vorlid" type="xsd:id" use="required"/> </xsd:complextype> 71

72 XML-Schema XML-Schema-Dokument Beispiel: Definition komplexer Datentypen <xsd:element name="vorlesungsverwaltung"> <xsd:complextype> <xsd:sequence> <xsd:element name="vorlesung" type="vorlesungtyp" maxoccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="version" type="xsd:string"/> </xsd:complextype> </xsd:element> 72

73 XML-Schema Einige XML-Schema-Dokument-Tags mit Attributen Tag: xsd:element Attribute: name Element-Name type Element-Typ default Voreingestellter Wert minoccurs Mindestanzahl von Elementen maxoccurs Maximale Anzahl von Elementen ref Verweis auf andere Element-Def. Darstellung von unstrukturiertem typisiertem Inhalt 73

74 XML-Schema Einige XML-Schema-Dokument-Tags mit Attributen Tag: xsd:complextype Attribute: name Element-Name Darstellung von strukturiertem Inhalt Kind-Tags definieren Komponenten der Struktur 74

75 XML-Schema Einige XML-Schema-Dokument-Tags mit Attributen Tag: xsd:sequenz Legt Reihenfolge der Komponenten fest xsd:choice Erlaubt Auswahl von Komponenten xsd:all Lässt Reihenfolge der Komponenten beliebig Inhaltsmodelle für komplexe Strukturen 75

76 XML-Schema Einige XML-Schema-Dokument-Tags mit Attributen Tag: xsd:attribute Attribute: name Attribut-Name type Attribut-Typ default Voreingestellter Wert use optional, required, prohibited Definition von Attributen eines Elements 76

77 XML-Schema Einige XML-Schema-Dokument-Tags mit Attributen Tag: xsd:restriction xsd:extension Attribute: base Allgemeinerer Typ Spezialisierung durch Einschränkung / Erweiterung Benutzung: <xsd:complextype name="childelement"> <xsd:complexcontent> <xsd:extension base="parentelement">...zusätzlicher Inhalt... </xsd:extension> </xsd:complexcontent> </xsd:complextype> 77

78 XML-Schema Das gibt es u.a. auch noch: Viele weitere Attribute Aufzählungen (xsd: enumeration) Über 40 vorgegebene primitive Datentypen Aggregierte Typen (xsd:list, xsd: union) Selbst abgeleitete unstrukturierte Typen (xsd:simpletype)... 78

79 XML-Schema Man kann Klassendiagramme und XML-Schema-Dokumente ineinander überführen Es gibt dafür unterschiedliche Vorschläge Es gibt automatisierte Verfahren Es stehen dafür verschiedene Erweiterungen der Java-API zur Verfügung Im Folgenden: Beispielhafte Beschreibung einer Übersetzung Von Klassen-Diagrammen in Schema-Dokumente 79

80 Klassendiagramm2XML Grundsätzliche Überlegungen Eindeutigkeit von Element-Namen? UML-Attribute/-Rollen als XML-Attribute oder -Elemente? Übersetzung von Multiplizitäten? Übersetzung von Generalisierungen? 80

81 Klassendiagramm2XML Grundsätzliche Überlegungen Eindeutigkeit von Element-Namen? UML-Namen qualifizieren durch Klassen-/Paket-Namen UML-Attribute/-Rollen als XML-Attribute oder -Elemente? Verschiedene Strategien. Streng: immer als Elemente Übersetzung von Multiplizitäten? Attribute minoccurs und maxoccurs Übersetzung von Generalisierungen? Elemente xsd:extension und xsd:restriction 81

82 Klassendiagramm2XML Kurz skizziert: Modellname Element Inhalt: xsd:complextype Kind-Elemente: Elemente zu Klassen Klassen Attribut Rolle xsd:complextype-element Kind-Elemente: Attribute / Assoziations-Rollen Element Typ: Wenn möglich beibehalten Element Typ: Klasse des assoziierten Objekts 82

83 Klassendiagramm2XML Generierung gültiger XML-Dokumente Wahl der Baumstruktur zur Auflösung von Assoziations-Zyklen? Wähle irgendeine azyklische Entfaltung Beispiel: Vorlesungen und Professoren Alternative 1: Liste alle Vorlesungen mit jeweiligem Dozenten auf (Professoren als Kind-Elemente von Vorlesungen, siehe Beispiel vorher) Alternative 2: Liste alle Professoren mit ihren jeweiligen Vorlesungen auf (Vorlesungen als Kind-Elemente von Professoren) 83

84 Eigenschaften/Vorteile/Nachteile Mit XML lassen sich Struktur und Repräsentation von Daten trennen Mit XML lassen sich Daten plattformunabhängig austauschen: Standard-Datenaustauschformat über das Internet XML ist menschenlesbar XML-Dokumente lassen sich automatisch verarbeiten XML ist leicht erweiterbar und flexibel einsetzbar (, Webservices, Multimedia, GrafikinAnwendungen ( 84

85 XML-Parser Zur Verarbeitung von XML-Dokumenten verwendet man Parser: Überprüfen ein Dokument auf Gültigkeit (bzgl. eines ( Schema-Dokuments ( Schreiben Erlauben den Zugriff auf Datenobjekte (Lesen, Interpretieren Daten ( Text Es gibt Parser für den sequentiellen Zugriff (wie bei und den wahlfreien Zugriff (wie bei Datenbanken) auf Daten Parser stellen eine API zur Verfügung, über die Anwendungen auf XML-Dokumente zugreifen können (wie bei Datenbanken) 85

86 XML und Java Es stehen verschiedene Java-APIs für die Verarbeitung von XML-Dokumenten zur Verfügung Details gehen über diese Vorlesung hinaus Prinzipielles Vorgehen wie bei Datenbanken 3-Schichten-Architektur analog 86

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

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

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

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

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

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

Objektserialisierung

Objektserialisierung Objektserialisierung SEP 170 Serialisierung von Objekten Umwandlung des Objektzustandes in einen Strom von Bytes, aus dem eine Kopie des Objekts zurückgelesen werden kann. Serialisierung in Java einfacher

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

Vorlesung Informatik II

Vorlesung Informatik II Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 9. Schichtenarchtitektur: Teil 1 (Datenhaltung)

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

Dateien, Streams. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E.

Dateien, Streams. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E. Dateien, Streams INE2 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was gehtes? Informationsaustausch Programme tauschen Information mit Umgebung über - Kommandozeilen Argumente -

Mehr

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

Problemstellung. Object1:Klasse1. Object2:Klasse2 att1: Klasse1 att2: 9. att1: att2: 17. Klasse1 att1 att2 Klasse2 att1 att2 Problemstellung Objekt mit aggregierten Objekten: att1: att2: 17 Object1:Klasse1 Object2:Klasse2 att1: Klasse1 att2: 9 serialisiert als Datei: Klasse1 att1 att2 Klasse2 att1 att2 -Speicherung von Objekten

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

java.io Ziel Ressourcen Page 1 Verstehen der unterschiedlichen I / O Möglichkeiten Anwenden der Java I/ O Klassen Java Tutorial Java API Dokumentation

java.io Ziel Ressourcen Page 1 Verstehen der unterschiedlichen I / O Möglichkeiten Anwenden der Java I/ O Klassen Java Tutorial Java API Dokumentation java.io Ziel Verstehen der unterschiedlichen I / O Möglichkeiten Anwenden der Java I/ O Klassen Ressourcen Java Tutorial Java API Dokumentation Page 1 Java API Prinzip Java IO-API ist für eine allgemeine

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

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

Vorlesung Informatik II

Vorlesung Informatik II Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 12. UML GUI-Schicht 1 GUI-Schicht Sichtbarmachen

Mehr

Java Fehlerbehandlung

Java Fehlerbehandlung Java Fehlerbehandlung 1 Fehlerbehandlung In jedem nicht-trivialen Programm kann es während der Laufzeit zu Fehlersituationen kommen. Dabei handelt es sich nicht unbedingt um Programmierfehler: z. B.: Programm

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

Client-Server TCP/IP - Kodierung

Client-Server TCP/IP - Kodierung Client-Server TCP/IP - Kodierung Die Socketklassen Ein Socket (engl. Sockel) ist eine bidirektionale Netzwerk-Kommunikationsschnittstelle, deren Verwaltung das Betriebssystem übernimmt. Die Kombination

Mehr

Kapitel 12. Programmierkurs. Allgemeine Konzepte Byte-Streams versus Character-Streams

Kapitel 12. Programmierkurs. Allgemeine Konzepte Byte-Streams versus Character-Streams Kapitel 12 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln WS 07/08 Dateiein- und -ausgabe Byte-Streams versus Character-Streams Die abstrakte Klasse Writer FileWriter

Mehr

Deklaration standalone="yes" Quelle:

Deklaration standalone=yes Quelle: Wohlgeformtes XML-Dokument 1. Zu jedem Start-Tag existiert genau ein Ende-Tag 2. Bei leeren Elementen können diese zusammenfallen 3. Korrekte Elementschachtelung, d.h. keine Überlappung 4. Genau ein Wurzelelement

Mehr

Wie schreibt bzw. wie liest man die beiden unterschiedlichen Darstellungen?

Wie schreibt bzw. wie liest man die beiden unterschiedlichen Darstellungen? Problem 2: Wie schreibt bzw. wie liest man die beiden unterschiedlichen Darstellungen? Dazu stellt Java im Paket Ú º Ó eine Vielzahl von Klassen zur Verfügung... 15.1 Byteweise Ein- und Ausgabe Zuerst

Mehr

XML-Schema Datentypen

XML-Schema Datentypen Datentypen Data Types Simple Types Complex Types User-derived Built-in Atomic (restriction) Non-atomic (list, union) Primitive Derived WT:III-1 XML Schema Reference Lettmann 2014 Datentypen anytype anysimpletype

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

Dateien. DVG Dateien 1

Dateien. DVG Dateien 1 Dateien DVG2-05 - Dateien 1 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem JAVA-Programm her. Das Filesystem enthält als Objekte Devices, Verzeichnisse

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 2 11 Objekt-Serialisierung

Programmieren 2 11 Objekt-Serialisierung Programmieren 2 11 Objekt-Serialisierung Bachelor Medieninformatik Sommersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1 Noch eine Persistenzalternative Eine Adresse als

Mehr

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

Grundlagen der Programmierung. Kapitel 10: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei Ziele dieses Kapitels Grundlagen der ierung Dr. Christian Herzog Technische Universität München! Sie verstehen das Konzept der Ströme Sie können n wie,, Input und Output benutzen.! Sie können in Java Dateien

Mehr

Grundlagen der Programmierung. Kapitel 11: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei

Grundlagen der Programmierung. Kapitel 11: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei Ziele dieses Kapitels Grundlagen der ierung Dr. Christian Herzog Technische Universität München! Sie verstehen das Konzept der Ströme Sie können n wie,, Input und Output benutzen.! Sie können in Java Dateien

Mehr

Grundlagen der Programmierung. Kapitel 11: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei

Grundlagen der Programmierung. Kapitel 11: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei Ziele dieses Kapitels Grundlagen der ierung Dr. Christian Herzog Technische Universität München! Sie verstehen das Konzept der Ströme Sie können n wie,, Input und Output benutzen.! Sie können in Java Dateien

Mehr

Handbuch konsultieren!

Handbuch konsultieren! Zeichenketten Klasse String Enthält zahlreiche Methoden z.b.: int length(): Anzahl der Zeichen in Zeichenkette String substring(int start): Unterzeichenkette ab Position start boolean equalsignorecase(string

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

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

Streams. Thomas Schwotzer

Streams. Thomas Schwotzer Streams Thomas Schwotzer 1 Einführung Wir haben uns mit abstrakten Klassen beschäftigt. Ganz generell ist das Konzept der Abstraktion ein grundsätzliches in der Informatik. Wir ITler bauen Software-Maschinen.

Mehr

Java I/O, Serialisierung und Netzwerkprogrammierung

Java I/O, Serialisierung und Netzwerkprogrammierung Java I/O, Serialisierung und Netzwerkprogrammierung Philipp Güttler 16. Dezember 2009 Universität Ulm, Abt. SGI Progwerkstatt 2 19 Gliederung Java I/O, Serialisierung und Netzwerkprogrammierung 16. Dezember

Mehr

Fakultät Angewandte Informatik Programmierung verteilter Systeme Übungen zur Vorlesung Informatik II, Blatt 8

Fakultät Angewandte Informatik Programmierung verteilter Systeme Übungen zur Vorlesung Informatik II, Blatt 8 WS 2011/12 Fakultät Angewandte Informatik Programmierung verteilter Systeme 12.12.2011 Prof. Dr. Bernhard Bauer Übungen zur Vorlesung Informatik II, Blatt 8 Abgabe: Montag, 19.12.2011, 12.00 Uhr, 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

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

Programmieren in Java

Programmieren in Java Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang

Mehr

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

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen Teil 5 - Java Programmstruktur Operatoren Schlüsselwörter Datentypen 1 Kommentare in Java In Java gibt es drei Möglichkeiten zur Kommentierung: // Kommentar Alle Zeichen nach dem // werden ignoriert. für

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

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Ströme zur Ein- und Ausgabe Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 44 Ströme zur

Mehr

7. Objektorientierung. Informatik II für Verkehrsingenieure

7. Objektorientierung. Informatik II für Verkehrsingenieure 7. Objektorientierung Informatik II für Verkehrsingenieure Klassen, Objekte und Attribute Buslinie und Haltestellen 3 Haltestellen und deren Eigenschaften Bauplan einer Haltestelle (Struktur) Konkrete

Mehr

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen Variablen Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Variablen dienen zur Speicherung von Daten. Um Variablen

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

Vorlesung Informatik II

Vorlesung Informatik II Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 13. Java Ausnahmebehandlung 1 Motivation

Mehr

XML Schema 2016 S h_da S Seite 1

XML Schema 2016 S h_da S Seite 1 XML Schema Seite 1 XML/Schema: Strukturen Dokumentinstanz Dokumenttyp Wellformed Valid Dokumentstrukturdefinition mit XML/Schema XML Document Type Definition Seite 2 XML Dokument Instanz XML-Deklaration

Mehr

Programmieren I. Dateien: Allgemeines. Vorlesung 10. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Programmieren I. Dateien: Allgemeines. Vorlesung 10. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011 Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 / 26 Dateien: Allgemeines Dateien lesen Beispiel: CSV-Daten Filter Ausgabe in Dateien 2 / 26 Dateien: Allgemeines Kaum

Mehr

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen

Mehr

XSD - XML Schema Definition

XSD - XML Schema Definition XSD - XML Schema Definition Definieren von XML-Dokumenten Michael Dienert 15. September 2016 Inhaltsverzeichnis 1 Was sind XSD Dateien und warum soll man das lernen? 1 1.1 XSD Dateien und Anwendungen....................

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

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

6.1.5 Verzeichnisdateien

6.1.5 Verzeichnisdateien 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet sind, alle ab einem Wurzelverzeichnis (root directory)

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer Java Kurs Objektorientierung II & die Java Klassenbibliothek Kristian Bergmann und Arthur Lochstampfer Vergleich class Apfel { String farbe; int gewicht; String geerntetin; class Erdbeere { String farbe;

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren

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

Socket-Programmierung unter Java

Socket-Programmierung unter Java Datenströme -Programmierung unter Java 1 - Grundlagen: Datenströme JAVA unterscheidet Streams und Reader/Writer Zur Dateneingabe: InputStream oder Reader Zur Datenausgabe: OutputStream oder Writer Verwende

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

Tag 8 Repetitorium Informatik (Java)

Tag 8 Repetitorium Informatik (Java) Tag 8 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

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

Javakurs für Fortgeschrittene

Javakurs für Fortgeschrittene Javakurs für Fortgeschrittene Einheit 02: Streams filtern Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Datenströme (Streams) Filtern FilterWriter, - Reader Praxis:

Mehr

Betriebssysteme. Wintersemester Kapitel 4 Ein- / Ausgabe und Dateisysteme. Patrick Kendzo

Betriebssysteme. Wintersemester Kapitel 4 Ein- / Ausgabe und Dateisysteme. Patrick Kendzo Betriebssysteme Wintersemester 2013 Kapitel 4 Ein- / Ausgabe und Dateisysteme Patrick Kendzo ppkendzo@gmail.com Programm Inhalt Einleitung Prozesse und Threads Speicherverwaltung Ein- / Ausgabe und Dateisysteme

Mehr

Ausdrucksbäume in verschiedenen Darstellungen

Ausdrucksbäume in verschiedenen Darstellungen Ausdrucksbäume in verschiedenen Darstellungen SWE-42 Infix mit notwendigen Klammern: (a + b) / (c - d) Infix vollständig geklammert: (((a) + (b)) / ((c) - (d))) Postfix a b + c d - / Präfix / + a b - c

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

Implementieren von Klassen

Implementieren von Klassen Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und

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

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0 9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

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

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 14 Dateiverwaltung, das Stream-Konzept... 14-2 14.1 Datenströme... 14-2 14.1.1 Datenströme in Java, Paket java.io.*... 14-3 14.1.2 Standarddatenströme... 14-4 14.2 Klasse java.io.file... 14-7 14.3

Mehr

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

Grundlagen der Programmierung! Kapitel 10: Ein- und Ausgabe! Ziele dieses Kapitels! Das Problem! Datei! Ziele dieses Kapitels! Grundlagen der Programmierung! Dr. Christian Herzog! Technische Universität München!!" Sie verstehen das Konzept der Ströme! " Sie können Klassen wie Reader, Writer, InputStream

Mehr

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

Lösungshinweise/-vorschläge zum Übungsblatt 11: Software-Entwicklung 1 (WS 2017/18)

Lösungshinweise/-vorschläge zum Übungsblatt 11: Software-Entwicklung 1 (WS 2017/18) Dr. Annette Bieniusa Mathias Weber, M. Sc. Peter Zeller, M. Sc. TU Kaiserslautern Fachbereich Informatik AG Softwaretechnik Lösungshinweise/-vorschläge zum Übungsblatt 11: Software-Entwicklung 1 (WS 2017/18)

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

Tag 7 Repetitorium Informatik (Java)

Tag 7 Repetitorium Informatik (Java) Tag 7 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

Algorithmen und Datenstrukturen 06

Algorithmen und Datenstrukturen 06 31. Mai 2012 1 Besprechung Blatt 5 Fragen 2 Objektorientierte Programmierung Allgemein Sichtbarkeit Konstanten 3 Unified Modeling Language (UML) Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung

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

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de Aufgaben: Ein Ausgabe Ein Rechner verwaltet nicht nur Daten, die während der Laufzeit des Programms erzeugt werden. Die meisten Programme greifen auf ältere Datenbestände zurück oder erzeugen für einen

Mehr

UNIVERSITÄT SIEGEN Fachbereich 12, Elektrotechnik und Informatik Fachgruppe Betriebssysteme / verteilte Systeme

UNIVERSITÄT SIEGEN Fachbereich 12, Elektrotechnik und Informatik Fachgruppe Betriebssysteme / verteilte Systeme UNIVERSITÄT SIEGEN Fachbereich 12, Elektrotechnik und Informatik Fachgruppe Betriebssysteme / verteilte Systeme Musterklausur zur Einführung in die Informatik II 1. Teilklausur, 23.06.2006 Bitte lesen

Mehr

Einführung in die OOP mit Java Character-Streams Gliederung

Einführung in die OOP mit Java Character-Streams Gliederung Hochschule für Angewandte Wissenschaften Hamburg Hamburg University of Applied Sciences Einführung in die OOP mit Java Character-Streams Christian Dreyer 03.11.2008 Character-Streams 1 Gliederung Begriffsklärung

Mehr

Das Interface-Konzept am Beispiel der Sprache Java

Das Interface-Konzept am Beispiel der Sprache Java Das Interface-Konzept am Beispiel der Sprache Java Klaus Kusche, November 2013 Inhalt Motivation: Wozu braucht man Interfaces? Interfaces in Java Was spricht gegen die große Lösung? Voraussetzungen Kenntnisse

Mehr

Socket-Programmierung unter Java

Socket-Programmierung unter Java Socket-Programmierung unter Java 1 - Grundlagen: Datenströme Datenströme JAVA unterscheidet Streams und Reader/Writer Zur Dateneingabe: InputStream oder Reader Zur Datenausgabe: OutputStream oder Writer

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

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Klassenattribute und -methoden Bieniusa Software Entwicklung 1 2/ 23 Beispiel: Klassenattribute I class Uebungsgruppe

Mehr

Client-Server TCP/IP - Kodierung

Client-Server TCP/IP - Kodierung Client-Server TCP/IP - Kodierung Die klassen Ein (engl. Sockel) ist eine bidirektionale Netzwerk-Kommunikationsschnittstelle, deren Verwaltung das Betriebssystem übernimmt. Die Kombination aus IP-Adresse

Mehr

Methoden und Wrapperklassen

Methoden und Wrapperklassen Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)

Mehr

XML Schema 2012/2013 S Seite 1 h_da W

XML Schema 2012/2013 S Seite 1 h_da W XML Schema Seite 1 XML/Schema: Strukturen Wiederholung Element / Attribut Deklaration XML Document Type Declaration Seite 2 XML Schema Schemata sind XML-Dokumente

Mehr

Dateien: Allgemeines Dateien lesen Beispiel: CSV-Daten Filter Ausgabe in Dateien. Programmieren I. Martin Schultheiß

Dateien: Allgemeines Dateien lesen Beispiel: CSV-Daten Filter Ausgabe in Dateien. Programmieren I. Martin Schultheiß Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 Dateien: Allgemeines 2 Dateien lesen 3 Beispiel: CSV-Daten 4 Filter 5 Ausgabe in Dateien Dateien: Allgemeines Kaum eine

Mehr

Java I Vorlesung Exceptions

Java I Vorlesung Exceptions Java I Vorlesung 8 Exceptions 14.6.2004 Exceptions (Ausnahmen) Klassen für Ein- und Ausgabe Ausnahmen Ausnahmen (Exceptions) sind ein Mechanismus zum kontrollierten Melden und Reagieren auf Fehler. Man

Mehr

Einführung in die Informatik Algorithmen und Datenstrukturen. Thema 12 Datenverarbeitung

Einführung in die Informatik Algorithmen und Datenstrukturen. Thema 12 Datenverarbeitung Einführung in die Informatik Algorithmen und Datenstrukturen Thema 12 Datenverarbeitung Daten - Definitionen Foto? Text? Musik? Video? Zeichnung? Programm? Daten, urspr. svw. geschichtl. Zeitangaben; heute

Mehr