Programmieren IV (Entwurf) SS 04

Programmieren IV (Entwurf) SS 04

Programmieren IV (Entwurf) SS 04 Sven Eric Panitz TFH Berlin Version 24. Juni 2004 Die vorliegende Fassung des Skriptes ist ein roher Entwurf fur¨ die Vorlesung des kommenden Semesters und wird im Laufe der Vorlesung erst seine endgultige¨ Form finden. Kapitel k¨onnen dabei umgestellt, vollkommen revidiert werden oder gar ganz wegfallen. Dieses Skript entsteht begleitend zur Vorlesung des SS 04 vollkommen neu. Es stellt somit eine Mitschrift der Vorlesung dar. Naturgem¨aß ist es in Aufbau und Qualit¨at nicht mit einem Buch vergleichbar. Fluchtigkeits-¨ und Tippfehler wer- den sich im Eifer des Gefechtes nicht vermeiden lassen und wahrscheinlich in nicht geringem Maße auftreten. Ich bin naturlich¨ stets dankbar, wenn ich auf solche aufmerksam gemacht werde und diese korrigieren kann. Die Vorlesung setzt die Kerninhalte der Vorg¨angervorlesungen [Pan03a], [Pan03b] und [Pan03c] voraus. Der Quelltext dieses Skripts ist eine XML-Datei, die durch eine XQuery in ei- ne LATEX-Datei transformiert und fur¨ die schließlich eine pdf-Datei und eine postscript-Datei erzeugt wird. Der XML-Quelltext verweist direkt auf ein XSLT- Skript, das eine HTML-Darstellung erzeugt, so daß ein entsprechender Browser mit XSLT-Prozessor die XML-Datei direkt als HTML-Seite darstellen kann. Bei- spielprogramme werden direkt aus dem Skriptquelltext extrahiert und sind auf der Webseite herunterzuladen. Inhaltsverzeichnis 1 Erweiterungen in Java 1.5 1-1 1.1 Einfuhrung¨ ..................................... 1-1 1.2 Generische Typen . 1-2 1.2.1 Generische Klassen . 1-2 1.2.2 Generische Schnittstellen . 1-8 1.2.3 Kovarianz gegen Kontravarianz . 1-10 1.2.4 Sammlungsklassen . 1-12 1.2.5 Generische Methoden . 1-13 1.3 Iteration . 1-13 1.3.1 Die neuen Schnittstellen Iterable . 1-15 1.4 Automatisches Boxen . 1-17 1.5 Aufz¨ahlungstypen . 1-18 1.6 Statische Imports . 1-21 1.7 Variable Parameteranzahl . 1-22 1.8 Ein paar Beispielklassen . 1-23 1.9 Aufgaben . 1-26 2 Algebraische Typen und Besucher 2-1 2.1 Einfuhrung¨ ..................................... 2-1 2.1.1 Funktionale Programmierung . 2-2 2.1.2 Java . 2-4 2.2 Algebraische Typen . 2-5 2.2.1 Algebraische Typen in funktionalen Sprachen . 2-5 2.2.2 Implementierungen in Java . 2-6 2.3 Visitor . 2-10 2.3.1 Besucherobjekte als Funktionen uber¨ algebraische Typen . 2-10 2.3.2 Besucherobjekte und Sp¨ate-Bindung . 2-12 1 INHALTSVERZEICHNIS 2 2.4 Generierung von Klassen fur¨ algebraische Typen . 2-15 2.4.1 Eine Syntax fur¨ algebraische Typen . 2-16 2.4.2 Java Implementierung . 2-21 2.5 Beispiel: eine kleine imperative Programmiersprache . 2-32 2.5.1 Algebraischer Typ fur¨ Klip . 2-32 2.5.2 Besucher zur textuellen Darstellung . 2-32 2.5.3 Besucher zur Interpretation eines Klip Programms . 2-33 2.5.4 javacc Parser fur¨ Klip . 2-34 2.6 Javacc Definition fur¨ ATD Parser . 2-39 2.7 Aufgaben . 2-42 3 XML 3-1 3.1 XML-Format . 3-2 3.1.1 Elemente . 3-2 3.1.2 Attribute . 3-4 3.1.3 Kommentare . 3-5 3.1.4 Character Entities . 3-5 3.1.5 CDATA-Sections . 3-6 3.1.6 Processing Instructions . 3-6 3.1.7 Namensr¨aume . 3-6 3.2 Codierungen . 3-7 3.3 Dokumente als B¨aume in Java . 3-8 3.3.1 Ein algebraischer Typ fur¨ XML . 3-9 3.3.2 APIs furXML¨ ............................... 3-14 3.4 Transformationen und Queries . 3-27 3.4.1 XPath: Pfade in Dokumenten . 3-27 3.4.2 XSLT: Transformationen in Dokumenten . 3-52 3.4.3 XQuery: Anfragen . 3-57 3.5 Dokumenttypen . 3-59 3.5.1 DTD . 3-59 3.5.2 Schema . 3-61 3.5.3 Gel¨aufige Dokumenttypen . 3-61 3.6 Aufgaben . 3-61 INHALTSVERZEICHNIS 3 4 Parsing XML Document Type Structures 4-1 4.1 Introduction . 4-1 4.1.1 Functional Programming . 4-1 4.1.2 XML . 4-3 4.1.3 Java . 4-5 4.2 Tree Parser . 4-5 4.2.1 Parser Type . 4-5 4.2.2 Combinators . 4-6 4.2.3 Atomic Parsers . 4-12 4.2.4 Building parsers . 4-14 4.3 Building a Tree Structure . 4-18 4.3.1 Java types for DTDs . 4-18 4.3.2 An algebraic type for DTDs . 4-18 4.3.3 Generation of tree classes . 4-21 4.3.4 Generation of parser code . 4-23 4.3.5 Flattening of a DTD definition . 4-27 4.3.6 Main generation class . 4-31 4.3.7 Main generator class . 4-32 4.3.8 JaxB . 4-35 4.4 Conclusion . 4-36 4.5 Javacc input file for DTD parser . 4-36 5 Javas Trickkisten: Bibliotheken und Mechanismen 5-1 5.1 Webapplikationen mit Servlets . 5-1 5.1.1 Servlet Container . 5-1 5.1.2 Struktur einer Webapplikation . 5-1 5.1.3 Anwendungsdaten . 5-2 5.1.4 Anwendungslogik . 5-2 5.1.5 Servletkonfiguration . 5-5 5.1.6 Servletklassen . 5-7 5.1.7 Java Server Pages . 5-14 5.2 Reflektion . 5-15 5.2.1 Eigenschaften von Klassen erfragen . 5-15 5.2.2 Instanziieren dynamisch berechneter Klassen . 5-20 5.3 Klassen Laden . 22 5.4 RMI . 22 5.5 Persistenz . 22 INHALTSVERZEICHNIS 4 A Crempel A-1 A.1 Eingesetzte Werkzeuge . A-1 A.1.1 Java 1.5 . A-1 A.1.2 CVS . A-1 A.1.3 ANT . A-3 A.1.4 JavaCC . A-3 A.2 Crempel Architektur . A-3 A.2.1 Crempel Komponenten . A-4 B Grammatiken B-1 B.1 JavaCC Grammatik fur¨ einen rudiment¨aren XML Parser . B-1 B.2 Javacc Grammatik fur¨ abgekurzte¨ XPath Ausdrucke¨ . B-5 C Gesammelte Aufgaben C-1 Klassenverzeichnis . C-6 Einfuhrung¨ Ziel der Vorlesung Mit den Grundtechniken der Programmierung am Beispiel von Java wurde in der Vorg¨angervorlesungen vertraut gemacht. Im ersten Semester haben wir die Grundzuge¨ der Programmierung anhand von Java erlernt, im zweiten Semester den Umgang mit Javas Bi- bliotheken. Nach unserem Exkurs in die Welt von C++ im dritten Semester wenden wir uns jetzt wieder Java zu. Ziel ist es komplexe Anwendungsbeispiele zu entwerfen. Hierbei kummern¨ wir uns nicht um die softwaretechnische Modellierung einer solchen Anwendung, sondern werden algorithmische Tricks und Entwurfsmuster im Vordergrund stellen. Hierbei wird uns ab und an ein Blick uber¨ den Tellerrand zu anderen Programmiersprachen helfen. Als Beispielanwendungsfall wird im Zentrum die Programmierung von XML-Strukturen ste- hen, da an der baumartigen Struktur von XML sich viele allgemeine Konzepte der Informatik durchspielen lassen. 5 Kapitel 1 Erweiterungen in Java 1.5 1.1 Einfuhrung¨ Mit Java 1.5 werden einige neue Konzepte in Java eingefuhrt,¨ die viele Programmierer bisher schmerzlich vermisst haben. Obwohl die ursprunglichen¨ Designer uber¨.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    229 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us