Programmierung interaktiver Systeme (Skript im Aufbau, auch bereits vorhandene Seiten werden unter Umständen noch verändert)



Ähnliche Dokumente
Programmieren mit PERL eine Einführung

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

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

Vorkurs Informatik WiSe 15/16

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

Programmierkurs Java

Java Einführung Programmcode

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

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

Java: Vererbung. Teil 3: super()

Computeranwendung und Programmierung (CuP)

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

Einführung in Eclipse und Java

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

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

Java Kurs für Anfänger Einheit 5 Methoden

Vorlesung Informatik II

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien.

Version 0.3. Installation von MinGW und Eclipse CDT

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Einführung in PHP. (mit Aufgaben)

Applications Applets (eingeschränkte Rechte)

Java Kurs für Anfänger LMU SS09 Einheit 1 Javaumgebung

Einführung in die Java- Programmierung

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

J.5 Die Java Virtual Machine

Einführung in die Programmierung

Klausur zur Einführung in die objektorientierte Programmierung mit Java

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

Übungen zu C++ Kapitel 1

Übungsblatt 3: Algorithmen in Java & Grammatiken

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Objektorientierte Programmierung

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

AKTUEL ZU JAVA 8 PROGRAMMIEREN IN JAVA. 7. Auflage. Im Internet: Alle Beispielprogramme und Lösungen

Applets I. Grundlagen der g Applet-Programmierung

Vorkurs C++ Programmierung

Zentrale Installation

Grundlagen von Python

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Objektorientierte Programmierung. Kapitel 12: Interfaces

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Software Engineering Interaktionsdiagramme

Kapitel 6. Vererbung

3 Objektorientierte Konzepte in Java

Diana Lange. Generative Gestaltung Operatoren

Programmieren in Java

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Programmieren I. Administratives / Java Installation. Thomas Vetter, Brian Amberg, Andreas Forster. 21. September 2010 UNIVERSITÄT BASEL

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

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Einführung in Javadoc

Objektorientiertes Programmieren mit Suse Linux

INHALT 1. INSTALLATION DES V-MODELL XT UNTER WINDOWS 7 2. INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

VB.net Programmierung und Beispielprogramm für GSV

CADEMIA: Einrichtung Ihres Computers unter Linux mit Oracle-Java

Objektorientierte Programmierung für Anfänger am Beispiel PHP

25 kann ohne Rest durch 5 geteilt werden! ist wahr

Praktikum: Einstieg: Arbeitsplatz, JCreator

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer)

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Prinzipien Objektorientierter Programmierung

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

SEP 114. Design by Contract

Primitive Datentypen

Tevalo Handbuch v 1.1 vom

Java Virtual Machine (JVM) Bytecode

Objektorientierte Programmierung OOP Programmieren mit Java

Erwin Grüner

Testen mit JUnit. Motivation

VBA-Programmierung: Zusammenfassung

Stapelverarbeitung Teil 1

Mediator 9 - Lernprogramm

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

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Tutorium Rechnerorganisation

Software Engineering Klassendiagramme Assoziationen

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Tutorium Java Ein Überblick. Helge Janicke

Client-Server-Beziehungen

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Leichte-Sprache-Bilder

Kapitel 6. Vererbung

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

Programmierung in C. Grundlagen. Stefan Kallerhoff

Kleines Handbuch zur Fotogalerie der Pixel AG

Anleitung zum Download und zur Bedienung des Tarifbrowsers für Microsoft Windows 7 und Mozilla Firefox

Gruppenrichtlinien und Softwareverteilung

Datensicherung. Beschreibung der Datensicherung

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Eine Einführung in die Installation und Nutzung von cygwin

4.1 Download der App über den Play Store

Kapitel 6. Vererbung

Transkript:

Informationstechniken Programmierung interaktiver Systeme (Skript im Aufbau, auch bereits vorhandene Seiten werden unter Umständen noch verändert) Prof. Dr. Wolf-Fritz Riekert Hochschule für Bibliotheks- und Informationswesen (HBI) Stuttgart mailto:riekert@hbi-stuttgart.de http://v.hbi-stuttgart.de/~riekert Literatur (1) Ken Arnold und James Gosling: The Java Programming Language. 2nd edition. Addison-Wesley, 1999. Dietrich Boles: Programmieren spielend gelernt (mit dem Java-Hamster-Modell). B.G. Teubner Stuttgart-Leipzig, 1999. Die ersten Kapitel, die auch im Web abrufbar sind, geben eine sehr gute und kompakte Einführung in das Programmieren. (http://www.is-informatik.uni-oldenburg.de/~dibo/hamster/). Java-Tutorial der Firma Sun. Online-Nutzung und Download: http://java.sun.com/docs/books/tutorial/ Reinhard Schiedermeier: Programmieren in Java. Vorlesungsskript, Fachhochschule München, 2000. Online-Nutzung und Download über: http://www.informatik.fh-muenchen.de/~schieder/ Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 2 Literatur (2) Computerbenutzung als Mensch-Computer-Kommunikation Dirk Louis, Peter Müller: Jetzt lerne ich Java - der einfache Einstieg in die Internetprogrammierung. Markt und Technik Verlag, Stuttgart, 2000. Preisgünstiges Buch, für Anfänger geeignet, umfasst Java 2. Christian Wolff, Einführung in Java. Objektorientiertes Programmieren mit der Java 2-Plattform. B.G. Teubner Stuttgart-Leipzig, 1999. Sehr detailreiches und sorgfältig ausgearbeitetes Buch über Java und objektorientierte Programmierung für die intensive Beschäftigung mit dem Thema. Computer Kommunikation oder Dialog Mensch Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 3 Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 4

Mensch-Computer-Kommunikation: Äußerungsformen Computergesteuerter Dialog Beispiel: HTML-Export aus Powerpoint Äußerungsformen des Menschen Text über Tastatur Zeigeaktionen über die Maus (Sprache über Mikrophon) (Mimik über Videokamera) Äußerungsformen des Computers Text, Graphik, Video über Bildschirm; Audio über Lautsprecher Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 5 Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 6 Computergesteuerter Dialog Kennzeichen des computergesteuerten Dialogs: Computer stellt Fragen an Benutzer(in)* Benutzer beantwortet Fragen Dasselbe von vorn, bis Computer zufrieden Vorteil: Benutzer wird geführt Nachteil: Freiheit des Benutzers wird eingeengt Worin besteht die Einengung des Benutzers? Das Nievergeltsche Dialogmodell Laut Nievergelt (1980) ist der Dialog durch drei Dimensionen bestimmt Site: Die im Moment ansprechbaren Daten Mode: Die im Moment ausführbaren Funktionen Trail: Der zeitliche Fortschritt des Dialogs Gute Dialogsysteme machen alle drei Dimensionen (Site, Mode und Trail) sichtbar erlauben eine einfache Fortbewegung in Site, Mode und Trail * Der Einfachheit halber nachfolgend nur noch der Benutzer, Benutzerinnen gelten als implizit eingeschlossen. Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 7 Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 8

Einengung der Benutzer durch computergesteuerte Dialoge Streng computergesteuerte Dialoge schränken alle drei Dimensionen ein: Es ist unmöglich, andere Daten als die aktuell angebotenen zu bearbeiten Es steht nur eine kleine Auswahl von Funktionen zur Verfügung (oft nur eine, die mit ja/nein ausgewählt wird) Einmal getroffene Entscheidungen können nicht mehr rückgängig gemacht werden Trend in Richtung benutzergesteuerter Dialoge Gewünscht wird, in Mode, Site und Trail zu navigieren: Zwischen Daten muss frei gewechselt werden können (z.b. zwischen einem Brieftext und einer Adressdatei) Die verfügbaren Funktionen müssen vor dem Benutzer ausgebreitet sein, z.b. in einer Menüleiste Die Dialoghistorie soll nachvollziehbar aufgezeichnet werden. Arbeitsschritte müssen rückgängig gemacht werden können. Konsequenz: Seit den 80-er Jahren zunehmender Trend in Richtung benutzergesteuerter Dialoge Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 9 Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 10 Benutzergesteuerter Dialog Beispiel: Windows Desktop Benutzergesteuerter Dialog Kennzeichen des benutzergesteuerten Dialogs Benutzer gibt einen Befehl an den Computer Computer führt Befehl aus Dasselbe von vorn, bis Benutzer zufrieden Errungenschaften des benutzergesteuerten Dialogs: Kommandointerpreter (z.b. DOS, UNIX Shell) Menüs, Formulare Direkte Manipulation: direktes Übertippen von Textfeldern, Anfassen und Verändern von Objekten durch Mauseinsatz Fenstersysteme, graphische Symbole (Icons) sogenannte objektorientierte Benutzungsoberflächen Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 11 Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 12

Mischformen Wenn bestimmte Abfolgen eingehalten werden müssen, können computergesteuerte Dialogformen prinzipiell angebracht sein: Beispiel: Softwareinstallation Doch auch hier kommen zunehmend Elemente der Benutzersteuerung zum Zuge: Beispiel: sogenannte Assistenten Zwar wird eine Abfolge von Abfragefenstern angeboten Aber man kann meist zu früheren Fenstern zurückspringen Software-Ergonomie Mitte der 80-er Jahre wurde Software-Ergonomie als Ziel benutzerfreundlicher Systemgestaltung proklamiert Ziel der Software-Ergonomie ist die Verringerung mentaler Belastungen bei der Benutzung von Computerprogrammen Gegensatz: klassische (Hardware-)Ergonomie, die die Verringerung körperlicher Belastungen zum Ziel hat, etwa durch körpergerechte Bürostühle, Tische, Tastaturen oder Bildschirmpositionen, augenschonende Bildröhren usw. Beispiel: Grundsätze der Dialoggestaltung nach DIN 66234 Teil 8 und ISO 9241 Part 10 Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 13 Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 14 Grundsätze der Dialoggestaltung angelehnt an DIN 66234 Teil 8 Wissensbasierte Mensch-Computer- Kommunikation Aufgabenangemessenheit Erledigung von Aufgaben ohne unnötige Belastung durch Eigenschaften des Dialogsystems Selbstbeschreibungsfähigkeit Erläuterungen durch das System, Hilfefunktion Steuerbarkeit Dialog soll durch Benutzer beeinflussbar sein Erwartungskonformität Dialog soll Erwartungen entsprechen, die aus bereits gemachten Erfahrungen resultieren Fehlerrobustheit verständliche Fehlermeldungen, leichte Behebbarkeit von Bedienungsfehlern Impliziter Kommunikationskanal Bildschirm Wissensbasis des Computers Welt Expliziter Kommunikationskanal Wissensbasis des Menschen Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 15 Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 16

Was ist besonders an der Objektorientiertheit? Vor allem die Betrachtungsweise: Klassisch: Computer enthält Programme und Daten Computerbenutzung = Aufruf von Programmen Programme erzeugen, verändern und löschen die Daten Objektorientiert: Computer enthält Objekte Objekte werden durch Botschaften aktiviert Objekte besitzen Methoden: Sie können ihren Zustand ändern und Botschaften an andere Objekte schicken Objekte gehören einer Klasse an (z.b. Buch) haben eine eindeutige Identität (z.b. ISBN, Inventarnr.) besitzen Merkmale und Merkmalswerte, z.b.: Titel = Objektorientierte Analyse und Design Autor = Booch, G.... (Merkmalswerte können Zahlen, Texte oder andere Objekte sein) zeigen Verhalten, d.h. sie besitzen Methoden, z.b. bestellen entleihen... Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 17 Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 18 Klassen Objekte gehören Klassen an. Man sagt, sie sind Instanzen, der Klassen, denen sie angehören. Klassen sind Abstraktionen ihrer Instanzen. Sie legen die Merkmale und Methoden ihrer Instanzen fest. Die Klassen bilden eine Hierarchie Die Hierarchie bedeutet Spezialisierung oder Generalisierung (je nach Blickrichtung). Die Festlegungen von Merkmalen und Methoden werden entlang der Klassenhierarchie vererbt. Die Klassen stellen Fabriken dar zur Erzeugung ihrer Instanzen. Objektorientierte Werkzeuge Werkzeuge zur objektorientierten Analyse und Modellierung Objektorientierte Programmiersprachen zur Definition von Objektklassen, -merkmalen und -methoden (z.b. C++, Java, Visual Basic) Objektorientierte und objektrelationale Datenbanken zum Speichern und Abfragen von Objekten Objektorientierte Netzwerksoftware (z.b. CORBA: Common Object Request Broker Architecture oder Java RMI: Remote Method Invocation ) Werkzeuge zur Konstruktion von objektorientierten Benutzungsoberflächen Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 19 Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 20

Objektorientierte Benutzungsoberflächen Interaktionsobjekte dienen zur Darstellung der Anwendungsobjekte (im Fall einer bibliothekarischen Datenbank z.b.: Publikationen, Kataloge, Katalogeinträge) auf dem Bildschirm Beispiele: Fenster, Icons, Menüs, Textfelder, Grafiken Softwaretechnisch sind Interaktionsobjekte auch Objekte (im Sinne der objektorientierten Programmierung), die mit den Anwendungsobjekten kommunizieren Direkte Manipulation vermittels Interaktionsobjekten Aktivierung mit Maus und Tastatureingabe wirkt sich auf Anwendungsobjekte aus Änderungen sofort an Anwendungsobjekten sichtbar Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 21 Applets: Beispiele für Objekte Applets sind eine besondere Art von Java-Objekten, die als Interaktionsobjekte für die Programmierung von Benutzungsschnittstellen verwendet werden Sie liegen in der Klassenhierarchie unter der Klasse Applet Applets werden in HTML-Seiten eingebettet gekennzeichnet durch ein <Applet>-Tag und durch eine URL bezeichnet Applets besitzen Methoden, die ihr Verhalten an der Benutzungsoberfläche beschreiben, z.b. Init(), Start(), Stop(), Destroy() (Lebenszyklus des Applets) paint() (Zeichenfunktion des Applets) mouseclicked(), MouseEntered() usw. (Reaktion auf Benutzerinteraktionen)... Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 22 Ein Zählerapplet: Beispiel eines Java-Objekts Java-Code des Zählerapplets public class ZaehlerApplet extends MouseListenerApplet { private int zaehlerstand = 0; public void mouseclicked(mouseevent e){ zaehlerstand = zaehlerstand + 1; Merkmal des Objekts: zaehlerstand eine ganze Zahl, anfangs = 0 Methoden des Objekts: mouseclicked() Zähler hochzählen und ausgeben paint() Objekt neu zeichnen // Zeichenflaeche des Applets neu zeichnen repaint(); public void paint(graphics g){ // Rahmen um das Applet zeichnen g.drawrect(0, 0, getsize().width-1, getsize().height-1); // Zaehlerstand ausgeben g.drawstring(string.valueof(zaehlerstand),5,15); Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 23 Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 24

Einbettung des Applets in eine HTML-Seite <HTML> <HEAD> <TITLE> ZaehlerApplet </TITLE> </HEAD> Applet-Tag <BODY> <APPLET code='zaehlerapplet.class' width='25' height='25'> </APPLET> </BODY> </HTML> URL bzw. Dateiname des Appletcodes Räumliche Ausdehnung des Applets Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 25 Java-Code der Oberklasse MouseListenerApplet public class MouseListenerApplet extends Applet implements MouseListener { public void init() {addmouselistener(this); public void start(){ public void stop() { public void destroy() { // Folgende Methoden implementieren MouseListener public void mouseclicked(mouseevent e) { public void mouseentered(mouseevent e) { public void mouseexited(mouseevent e) { public void mousepressed(mouseevent e) { public void mousereleased(mouseevent e) { // Zeichenroutine des Applets public void paint(graphics g) { Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 26 Definitionen Algorithmus: Arbeitsanleitung zum Lösen eines Problems oder einer Aufgabe, die so präzise formuliert ist, dass sie im Prinzip auch von einem Computer ausgeführt werden kann. Programmablaufpläne (Flussdiagramme) und Struktogramme (Nassi-Shneidermann-Diagramme) dienen zur graphischen Darstellung von Algorithmen. Programmiersprachen dienen zur Formulierung von Algorithmen. Ein in einer Programmiersprache formulierter Algorithmus heißt Programm. In Form von Programmen können Algorithmen durch einen Computer ausgeführt werden. Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 27 Ein Beispielproblem Gegeben sei eine natürliche Zahl n Bestimme die Summe der natürlichen Zahlen von 0 bis n Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 28

Programmablaufpläne (Flussdiagramme) Struktogramme (Nassi-Shneiderman-Diagramme) Quelle: Dietrich Boles: Programmieren spielend gelernt. B.G. Teubner, Stuttgart - Leipzig 1999c Quelle: Dietrich Boles: Programmieren spielend gelernt. B.G. Teubner, Stuttgart - Leipzig 1999c Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 29 Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 30 Programm int n = readint(); int erg = 0; int i = 0; while (i <= n) { erg = erg + i; i = i + 1; printint(erg); Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 31 Art der Ausführung eines Programms durch den Computer Ein Prozessor (z.b. der Pentium-Prozessor) kann nur sogenannte Maschinenprogramme ausführen, diese bestehen aus einer Folge von Zahlencodes. Menschen können Maschinenprogramme mit Hilfe einer sogenannten Assemblersprache schreiben, dabei sind die Zahlencodes durch Namen von Maschinenbefehlen ersetzt. Meist werden Programme aber in höheren Programmiersprachen geschrieben (z.b. C, Java, Modula) Sie werden dann entweder mit einem Compiler in Maschinenprogramme übersetzt und anschließend durch den Prozessor ausgeführt. oder durch einen sogenannten Interpreter ausgeführt. Compiler und Interpreter sind selbst Maschinenprogramme. Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 32

Compiler und Interpreter n = readint(); erg = 0;... Compiler 0010100101011 1101000111101 1001110100111 1011010001111... Prozessor Programm z.b. test.c z.b. C-Compiler cc Maschinenprogramm z.b. test.exe n = readint(); erg = 0;... Programm z.b. test.pl Interpreter 0010100001110 1100101000111 Prozessor Z.B. Perl- Interpreter perl Eigenschaften von Compilersprachen Der Compiler wird nur bei der Programmentwicklung gebraucht, im Betrieb läuft das übersetzte Programm ab. Deshalb hat der Compiler Zeit für aufwendige Programmüberprüfungen und Optimierungen. Compiler überprüfen Programme hinsichtlich Vokabular und Grammatik, so dass viele Programmierfehler bereits bei der Compilierung entdeckt werden können. Durch Compiler übersetzte Programme sind Maschinenprogramme, die in der Regel sehr schnell und effizient ablaufen. Die Programmentwicklung mit Compilersprachen ist etwas mühevoll, da ein Programm nach jeder Änderung neu compiliert werden muss. Beispiele für Compilersprachen: C/C++, Visual Basic (VB) Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 33 Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 34 Eigenschaften von Interpretersprachen Interpreterprogramme funktionieren nicht für sich alleine, sie benötigen zur Ausführung einen Interpreter. Da der Interpreter zur Laufzeit des Programms aktiv ist, hat er wenig Zeit für aufwendige Prüfungen. Fehlerhafte Programme stürzen oft mit einer kurzen Meldung ab. Es gibt jedoch Programmentwicklungsumgebungen mit speziellen Editoren, die Syntaxüberprüfungen vornehmen. Interpretierte Programme sind deutlich langsamer als compilierte, was mit den heutigen schnellen Computern allerdings kein großes Problem mehr darstellt. Die Programmentwicklung ist erleichtert, da Programme nach Änderungen sofort wieder gestartet werden können. Beispiele für Interpretersprachen: Perl, Visual Basic for Applications (VBA), Javascript Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 35 Ausführung von Java-Programmen Java benötigt sowohl einen Compiler als auch einen Interpreter. Der Compiler übersetzt ein Java-Programm in einen sogenannten maschinenunabhängigen Bytecode. Dieser Bytecode wird nicht von einem Prozessor ausgeführt, sondern von einem Interpreter, der Java Virtual Machine (JVM). Die JVM ist ein Maschinenprogramm, das direkt vom Prozessor ausgeführt wird. Vorteil des Verfahrens: Der Bytecode ist maschinenunabhängig. Er kann auch auf einem fremden Computer ausgeführt werden. Nur die JVM muss für jeden Prozessortyp angepasst werden. Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 36

Java-Ausführungsmodell Die Java-Entwicklungsumgebung J2SDK n = readint(); erg = 0;... Programm z.b. Hello.java Zielrechner Die Firma Sun stellt eine kostenfrei nutzbare Java- Entwicklungsumgebung bereit, den Java 2 Software Development Kit (J2SDK, früherer Name JDK TM 1.2). Compiler 0010100101011 1101000111101 1001110100111 1011010001111... Java-Compiler javac Maschinenunabhängiger Bytecode z.b. Hello.class Internet Interpreter 0010100001110 1100101000111 Java Virtual Machine (JVM) java Ein Installationsprogramm (ca. 20MB) und Dokumentation (ca. 16MB) kann im Web heruntergeladen werden (http://java.sun.com/products/jdk/1.2/). Beim Start des Installationsprogramms (Doppelklick im Explorer) wird die Java-Software auf ein Zielverzeichnis (z.b. D:\java) entpackt. Es entsteht kein Eintrag in die Windows-Registrierdatenbank (Registry). Entwicklungsrechner Prozessor Die Java-Dienstprogramme (Compiler, Interpreter usw.) liegen auf dem Unterverzeichnis \bin des Zielverzeichnisses. Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 37 Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 38 Benutzung der Java-Entwicklungsumgebung J2SDK Die Java-Entwicklungsumgebung J2SDK wird über die DOS-Eingabeaufforderung kommandoorientiert genutzt. In der HBI ist Java bereits vorinstalliert auf U:\user\riekert\java Da die Java-Dienstprogramme auf dem Unterverzeichnis \bin liegen, legt man nach dem Start der DOS- Eingabeaufforderung am besten einen Pfad dorthin: path %path%;u:\user\riekert\java\bin Wenn Sie die Entwicklungsumgebung woanders installiert haben, setzen Sie den Pfad entsprechend dorthin. Durch die Festlegung des Pfades können Sie die Java- Dienstprogramme (Compiler, Interpreter usw.) mit ihrem bloßen Namen (javac, java usw.) aufrufen.. Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 39 Typische Java-Entwicklungssequenz DOS-Eingabeaufforderung starten Java-Umgebung in Pfadvariable einschließen: path %path%;u:\user\riekert\java\bin Java-Klasse Hello im Editor erstellen: notepad Hello.java Java-Compiler übersetzt Hello.java, dabei entsteht der Bytecode Hello.class javac Hello.java Java-Interpreter interpretiert den Bytecode der Klasse Hello: java Hello Das Java-Programm macht die Ausgabe: Hello World Zum Überarbeiten des Programms zurück zum Editor usw. Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 40

Das Hello World -Programmbeispiel public class Hello{ public static void main(string[] args) { System.out.println("Hello World"); Java-Syntax am Beispiel Zählerapplet public class ZaehlerApplet extends MouseListenerApplet { private int zaehlerstand = 0; public void mouseclicked(mouseevent e) { zaehlerstand = zaehlerstand + 1; repaint(); Variable Methode Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 41 public void paint(graphics g) { g.drawrect(0, 0, getsize().width-1, getsize().height-1); g.drawstring(string.valueof(zaehlerstand), Methode 5,15); Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 42 Aufbau eines Java-Programms Klassen: Bausteine für Java-Programme Paket Klasse Variable Variable Variable Methode Methode Methode Klasse... Klasse............ Java-Programme bestehen aus Klassendefinitionen Üblicherweise wird jede Klassendefinition in einer eigenen Datei Klassenname.java abgelegt. Der zugehörige Bytecode liegt in der Datei Klassenname.class. Jede Klasse kann einem Paket (engl. package) zugewiesen werden. Wird hierzu nichts festgelegt, ist das das Unnamed-Package. Java-Klassendefinitionen enthalten die Definitionen von Klassenbestandteilen (engl. members): Variablen, auch Datenfelder oder Merkmale genannt, Methoden, zur Festlegung von Programmabläufen, Konstruktoren, methodenähnliche Bestandteile, die beim Erzeugen einer Instanz der Klasse aktiv werden. Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 43 Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 44

Variablen in Klassendefinitionen public class Konto { public int kontonr; protected int kontostand = 0; protected double zinssatz = 0.025; private String passwort = "unbekannt"; public Person besitzer; public static int naechstekontonr = 1; Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 45 Variablen Variablen besitzen einen Namen Variablen dienen zum Speichern von Werten Werte besitzen einen Typ, z.b.: int: eine ganze Zahl double: eine Gleitkommazahl eine Klasse, z.b. Person: In der Variablen darf dann ein Verweis (einen Pointer, eine Referenz) auf eine Instanz der Klasse gespeichert werden. String: ein Text (String ist eine vordefinierte Klasse) Variablen können bei Ihrer Definition mit einem Wert vorbesetzt werden, z.b. mit einem elementaren Wert wie einer Zahl oder mit einem Verweis auf ein Objekt Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 46 Instanzenvariablen Variablen in Klassendefinitionen sind im Normalfall Instanzenvariablen, d.h. jede Instanz der Klasse erhält eine eigene Variable. Instanzenvariablen werden innerhalb eines Objekts (d.h. in einer Methode eines Objekts) nur mit ihrem Namen angesprochen. Beispiel: kontostand = kontostand * (1 + zinssatz); Ansonsten müssen Objekt und Variable bezeichnet werden, getrennt durch einen Punkt. Beispiel: System.out.println(spendenkonto.kontonr); Klassenvariablen Der Modifikator static wird zur Definition von Klassenvariablen verwendet. Solche Variablen gibt es für die ganze Klasse nur einmal. Um Klassenvariablen in Instanzen der Klasse anzusprechen, genügt der bloße Name. Beispiel: naechstekontonr = naechstekontonr + 1; Außerdem können Klassenvariablen auch von außerhalb angesprochen werden. Dann muss der Name der Klasse gefolgt von einem Punkt vorangestellt werden. Beispiel: System.out.println(Konto.naechsteKontonr); Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 47 Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 48

Methoden Methoden haben ähnlich wie Variablen einen Namen Methoden haben einen Ergebnistyp Das ist der Typ des Ergebnisses, sofern ein solches nach Aufruf der Methode zurückgegeben wird. Andernfalls ist der Ergebnistyp void. Darüber hinaus besitzen Methoden eine Parameterliste Parameter werden wie lokale Variable behandelt. Die Werte der Parameter werden beim Aufruf der Methode übergeben. Außerdem hat jede Methode einen Methodenrumpf, eingeschlossen durch geschweifte Klammern { Der Methodenrumpf enthält die Anweisungen, die beim Aufruf ausgeführt werden. Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 49 Ansprechbarkeit von Variablen und Methoden Ein Prinzip der objektorientierten Programmierung ist das Information Hiding, d.h. nicht alle Teile des Programms sind von überall ansprechbar. Klassen können mit dem Modifikator public für alle anderen Programmteile ansprechbar gemacht werden. Die Ansprechbarkeit Variablen und Methoden kann mit folgenden Modifikatoren festgelegt werden: public: allgemein ansprechbar protected: nur in Methoden der betreffenden Klasse und deren Unterklassen ansprechbar. private: nur in Methoden der betreffenden Klasse ansprechbar. Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 50 Einfache Datentypen in Java boolean char byte short int long Wahrheitswert, entweder true oder false Zeichen (16 Bit im Unicode-Zeichensatz) vorzeichenbehaftete Ganzzahl (8 Bit) vorzeichenbehaftete Ganzzahl (16 Bit) vorzeichenbehaftete Ganzzahl (32 Bit) vorzeichenbehaftete Ganzzahl (64 Bit) float Gleitkommazahl in 32 Bit (nach IEEE 754-1985) double Gleitkommazahl in 64 Bit (nach IEEE 754-1985) Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 51 Literale in Java Literale werden verwendet, um in einem Programm konstante Werte eines bestimmten Datentyps verwenden zu können: Wahrheitswerte: true, false Ganzzahlen: 29, -3 Gleitkommazahlen: 4.5, 18., 1.8E-23 (bedeutet: 1,8 10-23 ) Zeichen: 'Q' (in einfachen Apostrophen), Sonderzeichen als Escape-Sequenz, eingeleitet mit \ (Gegenschrägstrich): '\n' (Zeilenvorschub), '\t' (Tabulator), '\'' (Apostroph), '\"' (Anführungszeichen), '\\' (Gegenschrägstrich), '\uzzzz' (ein durch die Ziffern zzzz angegebener Unicode) Zeichenketten (Strings): "Programmieren", beliebige Zeichen in Anführungszeichen, Sonderzeichen als Escape- Sequenz, z.b.: "C:\\programme\\netscape\n" Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 52

Namen in Java Untrennbar mit einem Namen verbunden sind in Java nur Pakete, Klassen, Variablen und Methoden. Objekte haben nach ihrer Erzeugung keinen Namen (ebenso wenig wie Zahlen oder Zeichen). Um ein Objekt zu benennen, benötigt man eine Variable, der man eine Referenz auf das Objekt als Wert zuweist. Je nach Art der Variablen (Instanzenvariable, Klassenvariable, lokale Variable) kann dann das Objekt in bestimmten Kontexten über den Namen der Variablen angesprochen werden. Definition einer Variablen Person kanzler; Zuweisung einer Objektreferenz kanzler = new Person("Gerhard", "Schröder"); System.out.println(kanzler.vorname); Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 53 Definition von Variablen in Java Variablen können an verschiedenen Stellen in einem Java- Programm definiert werden: Auf oberster Ebene einer Klassendefinition als Instanzenvariable (z.b. nr) oder als Klassenvariable (z.b. naechstenr) In Methoden (u.ä., insbesondere auch in Konstruktoren) als Parameter der Methode (z.b. args) oder als lokale Variable (z.b. neueskonto) public class Konto { public int nr; static public int naechstenr; public static void main(string[] args) { Konto neueskonto = new Konto();... Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 54 Anweisungen in Java Der Rumpf von Methoden und Konstruktoren besteht aus Blöcken (s.u.), d.h. Sequenzen sogenannter Anweisungen. Elementare Anweisungen sind: i=i+1 Zuweisungen, z.b.: i = i + 1 meth() Methodenaufrufe, z.b.: System.out.println(i) new Objekterzeugungsausdrücke, z.b.: new Person() Zusammengesetzte Anweisungen sind: Blöcke (Anweisungssequenzen), bestehen aus Anweisungen, verkettet mit ;, geklammert durch { z.b.: {i = i+1; s = s+i; println(s) Bedingte Anweisungen, z.b.: if-anweisung if (x>0) {y=x else {y=-x Schleifen, z.b.: while- und for-anweisung while(i<10){summe = summe+i; i=i+1 Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 55 Bedingte Anweisungen und Programmschleifen in Java Bedingte Anweisung: if (Bedingung) {Anweisung; Anweisung;... else {Anweisung; Anweisung;... Schleife while (Bedingung) {Anweisung; Anweisung;... Alternative Art der Schleife: for (Anfangsanweisung; Bedingung; Wiederholanweisung) {Anweisung; Anweisung;... Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 56

Ausdrücke in Java Variablen, Literale und Ergebnisse von Methodenaufrufen können mit Hilfe von Operatoren zu Ausdrücken verknüpft werden. Arithmetische Operatoren: +, -, /, * (Grundrechenarten), z.b.: y = x*x/4 - x + 1; Vergleichsoperatoren: == (gleich),!= (ungleich), < (kleiner), > (größer), <= (kleiner oder gleich), >= (größer oder gleich), z.b.: if x!= 0 System.out.println(1/x); Achtung: Strings müssen mit speziellen Methoden verglichen werden, z.b. Gleichheit mit equals(): if (eingabe.equals("ja")) {doit() logische Operatoren: & (und), (oder),! (nicht), z.b.: while (i<n & x>0) {x = x-y; i = i+1 Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 57 Programmablauf in Java Java-Anwendungen sind repräsentiert durch Java-Klassen. Die Ausführung einer Java-Anwendung beginnt mit der Klassenmethode main() der betreffenden Klasse. Aufrufparameter werden in Form des Parameters args, eines Arrays von Zeichenketten (Strings) übergeben. Die Anweisungen in der Methode main() werden der Reihenfolge nach durchlaufen. Trifft der Interpreter dabei auf einen Methodenaufruf, so werden die Anweisungen dieser Methode abgearbeitet. Danach wird an der Stelle nach dem Methodenaufruf fortgesetzt. Mit der letzten Anweisung der main()-methode endet das Programm. Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 58 Programmablauf in Java: Beispiel public class Copier { public OutputStream out; public InputStream in; public void start() throws IOException { // Hier wird vom Stream in zum Stream out kopiert [... Programmcode weggelassen] Start public static void main(string[] args) throws IOException { Copier keyboardecho = new Copier(); keyboardecho.in = System.in; keyboardecho.out = System.out; keyboardecho.start(); Ende Programmierung interaktiver Systeme W.-F. Riekert, 10.07.00 S. 59