Informationen zur Vorlesung FASOOP WS 05/06
Aktuelle Informationen
Aktuelle Informationen zur Vorlesung -- bitte regelmäßig beachten!
Inhalt
Die Veranstaltung vermittelt vertiefte Kenntnisse und Fähigkeiten für die objektorientierte Programmierung und über objektorientierte Programmiersprachen. Schwerpunkte liegen in den Bereichen operationelle Semantik von OO-Sprachen, Modularität und Kapselung, Typisierung und Typsysteme, Spezifikation von Programmeigenschaften sowie bei Techniken zum Prüfen und zur Verifikation.
Voraussetzungen
Entwicklung von Softwaresystemen I+II
Einordnung
- Informatik (Diplom)
- Angewandte Informatik (Diplom)
- Technoinformatik (Diplom)
- Informatik (Lehramt Gymnasien)
- Masterstudiengang Informatik (Vertiefung)
Umfang
Die Vorlesung hat einen Umfang von 2 V + 1 Ü. Für den Masterstudiengang werden 4 ECTS-LP angerechnet.
Ansprechpartner
Dipl.-Inform. Nicole Rauch
Termine der Vorlesung
Freitag, 08:15 Uhr - 09:45 Uhr Raum 42-110
Erste Veranstaltung: 11.11.2005
Übungsgruppen
Materialien zur Vorlesung
Weiterführende Links
Weitere Informationen
Verwendung der JML Tools
Die JML Tools können entweder selbst installiert werden (Download via
http://www.jmlspecs.org) oder im SCI auf den Rechnern
poker und
poker2 benutzt werden.
Folgendes ist hierbei zu beachten (die Anleitung gilt für die Installation im SCI bei Verwendung der bash; bei eigener Installation bitte sinngemäß anpassen):
- die Umgebungsvariable
JAVA_HOME muss auf das Wurzelverzeichnis des JDK 1.4.1 oder 1.4.2 zeigen:
export JAVA_HOME=/usr/j2se
- Pfad und Bibliotheksladepfad müssen angepasst werden:
export PATH=$JAVA_HOME/jre/bin:$JAVA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib:$LD_LIBRARY_PATH
- Damit die JML Tools alle mitgelieferten Spezifikationen finden, kann man einen speziellen Klassenpfad für sie setzen:
export JMLPATH=/opt/JML
export JMLCLASSPATH=$JMLPATH:$JMLPATH/specs:$JMLPATH/bin/jmlruntime.jar:.
- Man kann entweder ein GUI-Programm starten, von dem aus man die einzelnen JML Tools aufrufen kann:
java -jar /opt/JML/bin/jml-release.jar
oder man kann die Tools in der Kommandozeile starten, wozu der Klassenpfad noch erweitert werden muss:
export CLASSPATH=$JMLCLASSPATH:$JMLPATH/bin/jml-release.jar:$CLASSPATH
| Name des Tools |
Skript in =/opt/JML/bin= |
| JML Type Checker |
jml-unix oder jml-gui-unix |
| JML Runtime Assertion Checker Compiler |
jmlc-unix oder jmlc-gui-unix |
| JML Documentation |
jmldoc-unix oder jmldoc-gui-unix |
| JML Skeleton Spec Generator |
jmlspec-unix oder jmlspec-gui-unix |
| JML/JUnit Test Oracle Generator |
jmlunit-unix oder jmlunit-gui-unix |
- Anschließend kann man die vom JML Runtime Assertion Checker Compiler erzeugten Classfiles ausführen mit
java -cp $JMLCLASSPATH <class>
Benutzung von COM/DCOM
Im SCI ist eine DCOM-Umgebung auf
tux3.informatik.uni-kl.de installiert. Um sie benutzen zu können, muss man folgendermaßen vorgehen:
- Man muss als Shell die bash benutzen (falls dies nicht schon der Fall ist, kann man sie mit
bash starten).
- Die Umgebungsvariable
SAG muss auf das Verzeichnis /opt/sag/ zeigen (export SAG=/opt/sag).
- Dann die Datei
/opt/sag/exx/v721/INSTALL/exxenv laden (source /opt/sag/exx/v721/INSTALL/exxenv).
- Zur Authentifizierung mit dem Server muss man einen Account anlegen. Dies geschieht mit
ntpasswd <accountname>. Man wird zur zweimaligen Eingabe eines Passworts aufgefordert. Der Accountname muss mit dem Unix-Loginnamen identisch sein.
Eine detaillierte Dokumentation der DCOM-Umgebung findet sich in
/home/rauch/DCOM/dcomlinux721_tcm16-5287.pdf.
Zum Übersetzen global notwendige Einstellungen finden sich in
/opt/sag/exx/v721/include/makefile.incl. Diese Datei sollte in einem Makefile zuerst geladen werden, danach kann man die dort definierten Konstanten verwenden.
Wichtig beim Übersetzen der Komponente BasicServer: Der auf tux3 installierte Compiler hat ein Problem mit den von
midl generierten Files. Dies äußert sich in Fehlermeldungen der Art
obj/basic_p.c:379: error: static declaration of 'Object_StubDesc' follows non-static declaration
obj/basic_p.c:218: error: previous declaration of 'Object_StubDesc' was here
obj/basic_p.c:417: error: static declaration of '__MIDL_ProcFormatString' follows non-static declaration
obj/basic_p.c:53: error: previous declaration of '__MIDL_ProcFormatString' was here
obj/basic_p.c:438: error: static declaration of '__MIDL_TypeFormatString' follows non-static declaration
obj/basic_p.c:52: error: previous declaration of '__MIDL_TypeFormatString' was here
Ich vermute, dass der Compiler dies in der aktuellen Version nicht mehr toleriert. Abhilfe schafft hier nur das Entfernen von
static an den kritisierten Stellen. (Oder kennt jemand eine bessere Lösung?)
Weiterführende Literatur:
- Arnd Poetzsch-Heffter:
Konzepte objektorientierter Programmierung.
Springer-Verlag, 2000.
- Kim B. Bruce:
Foundations of Object-Oriented Languages. Types and Semantics.
MIT Press, 2002.
- Sophia Drossopoulou, Susan Eisenbach:
Java is Type Safe - Probably.
ECOOP, 1997 (LNCS 1241).
- Tobias Nipkow, David von Oheimb:
Java light is Type Safe - Definitely
Principles of Programming Languages, 1998.
- Atsushi Igarashi, Benjamin Pierce, Philip Wadler:
Featherweight Java: A Minimal Core Calculus for Java and GJ.
OOPSLA, 1999.
- Gilad Bracha, Martin Odersky, David Stoutamire, Philip Wadler:
Making the future safe for the past: Adding Genericity to the Java Programming Language.
OOPSLA, 1998.
- Kresten Krab Thorup:
Genericity in Java with Virtual Types.
ECOOP, 1997.
- Kim B. Bruce, Martin Odersky, Philip Wadler:
A statically safe alternative to virtual types.
ECOOP, 1998.
- Boris Bokowski, Jan Vitek:
Confined Types.
OOPSLA, 1999.
- Paulo Sergio Almeida:
Balloon Types: Controlling Sharing of State in Data Types.
ECOOP, 1997.
- David G. Clarke, John M. Potter, James Noble:
Ownership Types for Flexible Alias Protection.
OOPSLA, 1998.
- David G. Clarke, John M. Potter, James Noble:
Simple Ownership Types for Object Containment.
ECOOP, 2001.
- Peter Müller, Arnd Poetzsch-Heffter:
A Type System for Controlling Representation Exposure in Java.
Formal Techniques for Java Programs, 2000.
- K. Rustan M. Leino, Greg Nelson:
Data abstraction and information hiding.
Transactions on Programming Languages and Systems 24(5): Seiten 491-553, 2002.
- Barbara H. Liskov, Jeannette M. Wing:
A Behavioral Notion of Subtyping.
Transactions on Programming Languages and Systems 16(6), Seiten 1811-1841, 1994.
- Erich Gamma, Richard Helm, Ralph Johnosn, John Vlissides:
Design Patterns.
Addison Wesley, 1995.
- Maurice Naftalin, Philip Wadler:
*Generics and Collections in Java 5.*
Download.