Praktische Informatik 2: Geplanter Inhalt der Vorlesung

Werbung
Praktische Informatik 2: Geplanter Inhalt der
Vorlesung
•
•
•
•
•
•
•
Internet / WWW
Java 1.4
Java 1.5
Haskell Typlassen
Compilerbau
Grammatik ; Lexer; Parser; (Haskell)
Kodeerezeugung
Verifikation (Python)
SW-Technik
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 1
Bücher, Literatur, URLs
•
•
•
•
•
•
•
•
•
http://www.ki.informatik.unifrankfurt.de/lehre/SS2005/main.html
http://java.sun.com/ Zu Java: Dokumentation und Downloads
http://www.eclipse.org/ Ein Entwicklungswerkzeug
Skripte des RRZN Hannover zu Internet und Java erhältlich
im HRZ. Aktuelle Auflage beachten.
Deitel: Java – How to program, Pearson Verlag
Dietmar Abts Grundkurs Java, Vieweg Verlag
Walter Savitch, Java – An introduction to Problem Solving &
Programming, Pearson Verlag
Ralph Steyer, Java 2 Kompendium, Markt und Technik Verlag
Cay Horstmann, Computing Concepts with Java 2,
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 2
Bücher, Literatur, URLs
•
•
•
D. Knuth, The Art of Computer Programming, Vol 1-3, Addison Wesley
Aho und Ullman. Foundations of Computer Science, Computer
Science Press
Pepper. Grundlagen der Informatik, Oldenbourg Verlag
R. Bird, Introduction to Functional Programming, Prentice
Hall
J. G. Brookshear, Computer Science, an overview, Addison
Wesley,
Hopcroft & Ullman, Introduction to Automata Theory, Languages and Computation, Addison-Wesley
U. Manber, Introduction to Algorithms, Addison-Wesley
Rechenberg; Pomberger, Informatik Handbuch, Hanser-Verlag
•
Aho, Sethi & Ullman, Compilerbau, Addison-Wesley
•
•
•
•
•
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 3
World Wide Web, Obekt-Orientierung und Java
Internet
ist ein weltweiter Verbund von elektronischen
Geräten
(Computer,
Router,
Gateways, Drucker,. . . ) (Knoten), die mit Standleitungen,Telefonleitungen,
Funkverbindungen,
. . . verbunden sind und über Internetprotokolle
kommunizieren.
Datenaustausch
ist paketvermittelt
Intranets
lokale Netzwerke , logische Subnetze
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 4
Daten zur Geschichte des WWW
ca. 1970:
1983:
1988
1991 / 1993
1996:
2002:
2005
P raktische Inf ormatik
2, SS
Ursprünge des Netzes sind Projekte des amerikanischen Verteidigungsministeriums zur Vernetzung
von Rechnern und Ausfallsicherheit.
ARPANet, danach verschiedene andere Netze
(NSFNET). TCP / IP wird Standard
Starke Nutzung in Forschungseinrichtungen und
Universitäten (E-Mail)
Erster Internet Wurm.
Mosaic, Gopher, WWW. Die Anfänge gehen wesentlich auf Konzepte zurück, die am CERN (Conseil Europèen pour la Recherche Nuclèaire) entwickelt wurden.
3 Millionen europäische Knoten
ca. 90 Millionen Knoten.
Weltweit verbreitet, von allen genutztes Medium
2005, F olien W W W +Java1,
(22. April2005)
Seite 5
Bemerkungen zur Technik des WWW
Knotenadressen
(IP-Adressen)
Reservierte IP-Nrn:
n.n.n.n, wobei n ∈ [1..255]
Z. B. 141.2.10.1 ist der Server der KI.
z.B. 127.0.0.1. (localhost, bzw. loopback.device)
IP-Adresse
1-Byte Netzwerkadr.
Netzwerk-Adresse . Rechneradresse
zwischen 1 und 126.
3 Byte zur internen Adressierung.
erste 2 Byte: 128..191.
kleine Netzwerke, 1 Byte interne Addressierung
lokales Netz und IP-Nummern
2-Byte Netzwerkadr.
3-Byte Netzwerkadr.
192.168.n.n
Nummernvergabe z.T. dynamisch: Bessere Nutzung der IP-Adressen.
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 6
IP Version 6; neue Version der IP-Adressen
Adresslänge:
128 Bit (16 Byte) statt 32 Bit (4 Byte),
das sind 2128, bzw. ca. 3 ∗ 1038 mögliche Adressen.
IPv6 Adressen
8 mal 2-Byte, und 2 Byte als vierstellige Hexadezimalzahl, jeweils getrennt mit :“,
”
wobei man einen Block mit Nullen weglassen
darf.
1234:0:0:0:0:4711:AAFF:09FB
Bespiel IPv6-Adresse:
Address-Zerlegung:
erste Hälfte (8 Byte) als Routing Information,
und die zweite Hälfte (8 Byte) als Host-Adresse.
Netzblöcke (Netblocks)
Netzwerk-Nummer
/
Anzahl
”
Bits des Netzes“angeben. Zum
1234:0:0:0:0:4711/32
”
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 7
AdressBeispiel
Domain Name System (DNS)
symbolische Rechneradressen:
zentrale Name-Server
hera.informatik.uni-frankfurt.de“
”
übersetzen diese in IP-Adresse
Top Level Domain
Letztes Wort des Namens
ISO Ländercodes:
de
fr
at
au
jp
=
=
=
=
=
P raktische Inf ormatik
Deutschland,
Frankreich,
Österreich,
Australien ,
Japan
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 8
Andere, allgemeine Top Level Domains
com
org
net
edu
mil
gov
eu
...
(commercial) Industrie, Firmen, usw.
nicht kommerzielle Organisationen (DV-bezogen)
(Netz bezogen)
(Universitäten, Schulen, ... )
(Militär, USA)
(Regierung, USA)
(Europa)
Weitere
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 9
Wesentliche Aktivitäten (Dienste) des Internets
Email elektronische Post (E-mail, verschiedene Protokolle).
• Versenden
und
Empfangen
von
elektronischen
ten/Nachrichten/ Daten. Einseitig, asynchron.
Tex-
• Protokoll SMTP (simple mail transport protocol)
• analog zum Prinzip der Briefpost:
Briefe ( mit Absender und Empfänger-Adresse und Daten)
ab Poststelle, Verteiler Zwischenverteiler,Ziel: Briefkasten des
Empfängers.
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 10
• 7-Bit ASCII-Texte:
Binärdaten müssen umkodiert werden
z.B. mittels MIME (Multipurpose Internet Mail Extension)
Typen: text, message, application,image, audio, video; es gibt noch
Untertypen
• Problem der unerwünschten Post (Reklame, Spam) und gefälschten EMails
Abhilfe: Spam-Filter; besseres SMTP-Protokoll; elektronische
Briefmarken? . . . .
Weitere Dienste
• nntp
News: Elektronisches Analog zu schwarzen Brettern.
Moderierte Newsgruppen zensieren die Zettel (Nachrichten) vorher.
• telnet Einwählen in andere Rechner (remote login)
Ausführung der Programme auf anderem Rechner.
Nachteil: telnet überträgt alles unverschlüsselt
• ssh secure shell Kommunikation wird verschlüsselt durchgeführt.
Auch Passworte sind verschlüsselt
Schwachstelle: Vereinbarung des Schlüssels.
• ftp = file transfer protocol
synchrones Versenden upload“ (put) und Holen download“ (get) von
”
”
Daten/Dateien/Files
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 12
Weitere Dienste des Internets
• ntp: network time protocol) Zeitsynchronisation:
Stellen der Rechner Rechner über Netz.
Wegen der Laufzeiten (Netz, Funk, Programm) ist die Genauigkeit
begrenzt.
• Telekonferenzen; Video-, Audio-Daten, Telefon
Falls Realzeit gefragt ist benötigt man zugesicherte Übertragungskapazität hat (quality of service)
• Bezahlen, finanzielle Transaktionen, Kreditkartenbezahlung Eigene
Netzdienste
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 13
WWW (World Wide Web)
Protokoll: http = hyper text transport protocol
Organisation zur Normierungen:
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
www. w3c.org.
Seite 14
WWW
Arbeitsweise
URL
WebSeiten Lesen
WebSeiten Edit
Suchen/Finden
virtuelles Netzwerk innerhalb des physikalischen Internets.
Ist ein großes und offenes Hypertextsystem
Sehr populär und allgegenwärtig
Jeder Teilnehmer stellt auf seinem Rechner gewisse
Daten in Form von
HTML (hyper text markup language)-Dokumenten
zur Verfügung,
Daten sind sichtbar für andere Teilnehmer
Web-Seiten (Daten-Einheiten) haben eine eigene
weltweit eindeutige Adresse
mittels Browser (z.B. Netscape Communicator, Internet Explorer, Mozilla, FireFox, Safari, . . . )
Statisch / Dynamisch; viele Werkzeuge
Mitteilen der URLs
Mund-zu-Mund“ Propaganda
”
Suchmaschinen (google, yahoo, ...),
Woher kommt die Popularität des WWW?
• Einfache Bedienbarkeit, Robustheit gegenüber Fehlern.
• Analogie zu bekannten Medien wie Zeitungen, gelbe Seiten,
• Kostenfreie Dienste
• Suchmaschinen und sehr viele Informationen
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 16
Problematische Sachverhalte:
Copyright ,
politisch extreme Agitation,
kriminelle Aktivitäten (Kinderpornographie),
Datenschutzaspekte,
uneinheitliche Gesetzgebung in verschiedenen Ländern,
Verschlüsselung,
Gebühren für welchen Dienst erhoben
Reklame auf WWW-Seiten?,
...
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 17
Objektorientierte Programmierung am Beispiel
von Java
Was hat Java mit dem WWW zu tun?
Entwurfsziele vom Java: Unterstützung von Anwendungen im WWW
Unterstützt werden:
P raktische Inf ormatik
2, SS
die Verwendung graphischer Benutzeroberflächen,
WWW-Netzzugriffe;
Verwendung in einem Browser;
beweglicher Code:
Applets,
Portabilität.
Server-Programmierung
Animationen
2005, F olien W W W +Java1,
(22. April2005)
Seite 18
Java: Client-Server
Clients
Server
Internet
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 19
Java: Client-Server
•
•
•
•
•
•
•
Java: interpretierte Ausführung: Byte-Code
Entlastung des Servers / Berechnungen auf dem ClientRechner:
Laden und Interpretieren des Java-Bytecodes
geringe Belastung des Servers und des Netzes durch die
Bytecode-Übertragung.
Sicherheitsprobleme, da Ausführung eines unbekannten
Programms ist.
Deswegen: eingeschränkte Rechte eines Applets.
Alternative sind signierte Programme (Microsofts Sicherheitsansatz)
Java: auch eigenständige Anwendungen sind programmierbar.
Andere Varianten zur Flexibilisierung von HTML-Seiten:
z.B. Javascript.
erfordert Interpreter auf der Clientseite; Das ganze Programm wird geladen.
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 20
Dialoganwendung
• Web-Seite als Dialog-Anwendung, die Daten bzw. Anfragen zwischen Server und Client austauscht.
• Dazu: CGIs (common gateway interface) + ein serverseitiges Programm (auch Haskell ist möglich)
• Datenübertragung und Zustand: spezielle Codierung in der URL
• Java unterstützt diese Form der Anwendungen durch Servlets.
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 21
Java: Versionen und Kompatibilität mit
Browsern
Hauptversionen
Java 1.0 (1995),
Java 1.1 (1997),
Java 2 (1999)
J2SE 5 (2004)
Entwicklungsumgebungen von Sun Microsystems:
• Bis Java 1.1: JDK (“Java Development Kit”)
• Von JDK-Version 1.2 bis 1.4: Java 2 und Java SDK (“Software
Development Kit”).
• aktuelle Version: JDK 1.5, Entwicklungsumgebung: JDK,
“Java 2 Platform Standard Edition” (J2SE) und JDK 5 (statt 1.5)
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 22
Ab JDK 1.02:
Mit JDK 1.1:
Version 1.2 (bzw. Java 2)
Ereignismodell 1.02 mittels handleEvent()
neues Ereignismodell: Event-Listener.
enthält JFC (JavaFoundationClasses inkl.
Swing-Paket
Heutige Webbrowser (MS IE, Netscape, Mozilla, Firefox, Safari)
können Java-Applets erst ausführen, nachdem ein Plug-In und eine
virtuelle Maschine installiert wurden.
Objektorientierte Programmierung am Beispiel
Java
•
•
•
•
Das ist kein Java-Programmierkurs
Beispiele sind (waren) lauffähig
Verschiedene Versionen von Java
Java 1.4 und Java 2 für den ersten Teil;
Java 5 im zweiten Teil
Bei genaueren Informationswünschen: Handbücher oder
Web-Seite von Sun konsultieren
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 24
Objektorientierte Programmierung am Beispiel
Java
zentrale Idee der Objektorientierten Programmiersprachen (OOP) :
Objekt als Strukturierungskonzept.
Objekte
Kommunikation
P raktische Inf ormatik
2, SS
zusammengesetzte (Daten-)Einheit
belegt Speicherplatz
haben eine Identität.
sind gekapselt. Veränderungen von Objekten werden
stets mittels der definierten Methoden durchgeführt.
gehören zu einer Klasse – (Instanz einer Klasse)
durch Senden/Empfangen von Nachrichten.
2005, F olien W W W +Java1,
(22. April2005)
Seite 25
OO: Klassen
Klassen entsprechen Typschablonen
• werden in der OO-Programmiersprache definiert.
• enthalten die Definition der Struktur der zugehörigen
Objekte und der Methoden, die auf Objekte dieser Klasse
anwendbar sind.
• entsprechen einer Menge von Objekten mit gleichem Verhalten.
• i.a. eine Realisierung eines abstrakten Datentyps
• entsprechen einem Typ zur Compilezeit
• sind in einer (Baum-)Hierarchie angeordnet (Ober- ; Unterklasse)
• Die Klassenhierarchie wird verwendet, um allgemeine
Aspekte von Objekten in einer Oberklasse zu definieren und zu implementieren, und dann in Unterklassen
die spezielleren Eigenschaften zu implementieren.
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 26
•
•
•
Elementare Datentypen (Zahlen, . . . ) sind keine Objekte
können zu Objekten gemacht werden, falls nötig
Vereinfachte Handhabung in Java 5
Vergleich mit Haskell
Java
Klasse
Objekt
Senden von Nachrichten
|
entspricht
entspricht
entspricht
|
|
Seiteneffekte
Aliasing
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 28
Haskell
Typ bzw. einer Typklasse
konstruiertem Datenobjekt.
Funktionsaufruf
Nur Kopieren möglich
nur auf gleiche Datenobjekte
Objekte und Methoden: Genauer
Objekt
besteht aus Daten; bzw. Attributen
das Innere eines Objektes ist nicht direkt sichtbar.
Attribute sind nur über erlaubte Methodenaufrufe änderbar
das Innere des Objektes (seine Attribute) sichtbar und
änderbar.
gehören zu einer Klasse: ( Instanz einer Klasse)
Objekt
analog zu einem Record, bei dem die einzelnen Attribute
mit Attributnamen ansprechbar sind.
Satz (Verbund) in einer Datenbank, bestehend aus Attributen.
n-Tupel in Haskell mit Attributnamen
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 29
Methoden
Methoden:
auf Objekten ausführbare Operationen,
analog zu Prozeduren.
Methodenaufruf:
Senden einer Nachricht
Methode kann per Dot-Notation an ein Objekt gekoppelt
sein
bzw. wird auf ein Objekt angewendet.
Nachrichten:
Argumente der Prozedur.
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 30
Spezifische Aufgaben von Methoden:
Konstruktion:
Erzeugen und Initialisieren eines Objekts
Destruktion:
Abschlussarbeiten und Löschen eines Objekts
Selektion:
Lesen von internen Daten des Objekts
Modifikation:
Ändern der internen Daten des Objekts
Andere Verarbeitung
allgemeine Prozedur
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 31
Beispiel: Auto
Modellierung
Attribute:
als Klasse Auto;
Marke, Farbe, Kennzeichen, Besitzer, Baujahr, Leistung
in kW, Höchstgeschwindigkeit, Treibstoffverbrauch, kmStand.
Methoden:
•
•
•
•
•
Erzeuge neues Objekt vom Typ Auto mit den folgenden
Attributwerten: . . .
Ändere den Besitzer
Ändere das Kennzeichen
Ermittle das Alter des Autos
...
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 32
Nachrichten und Methodenaufruf
Anwendung von Methoden auf Objekte = Senden von Nachrichten
Syntax:
obj.meth(para1, para2,...).
Objekt obj;
Nachricht meth ;
Parameter para1, para2,...).
Entspricht Anwendung meth(obj, para1, para2,. . . )
obj.meth(para1, para2,...)
kann einen Wert zurückliefern,
und / oder einen Seiteneffekt bewirken.
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 33
Art der Verarbeitung: Call by Reference und
Call by Value
Objekt als Argumente werden per Referenz
Elementare Datentypen als Wert weitergegeben
Zwei Objekte A, B mit gleichem Inhalt und Klasse
können eine unterschiedliche Identität haben, und
können unabhängig voneinander geändert werden.
Gleichheitstest von Objekten: Normalerweise per Referenz
d.h. verschiedene Objekte mit gleichem Inhalt sind verschieden
Vergleich bzgl. des Inhalts muss man selbst als Vergleichsmethode
definieren.
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 34
Beispiel zu Methodenaufruf
Rechteck: Attribute: Koordinaten eines Eckpunktes; Höhe; Breite.
Darstellung als Pixel in diskreten Koordinaten
Z.B. Methoden zum Bewegen des Rechtecks auf dem Bildschirm:
if (obj.left < 20)
// ist noch Platz vorhanden
{ obj.erase();
// Loeschen des Bildes
obj.move(20,0); // Verschieben des Rechtecks (der Koordinaten)
obj.paint();
// Zeichnen
}
Die Nachrichten sind jeweils left, erase(), move(20,0), paint().
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 35
Klassen
Klassen
fassen gleichartige Objekte zusammen,
wobei die Gleichartigkeit sich auch daraus ergibt,
ob diese von der Implementierung gleich behandelt werden sollen.
Das Programmieren besteht aus dem Definieren von Klassen,
d.h. Attribute, Methoden, Vererbungs-Hierarchie.
Die Methodenprogrammierung entspricht der normalen“ Programmie”
rung.
Unterklassen (abgeleitete Klassen) dienen zur Strukturierung
der Anwendung und der Objekte.
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 36
Beispiel: Fahrzeug
Die Klasse Fahrzeug ist Oberklasse von Auto
mit den Attributen Hoechstgeschwindigkeit, Besitzer.
Weitere Unterklassen von Fahrzeug sind z.B. LKW, Boot, Bus, Motorrad.
Weitere Attribute: bei LKW zul. Gesamtgewicht, Art der Güter, . . . .,
bei Boot der Tiefgang o.ä.
Bei Bus: maximale Anzahl Passagiere, Ausstattung, ...
Fahrzeug
Pg P Vj VV
O
n7
nnn
nnn
n
n
nnn
Auto
LKW
PPP VVVV
PPP VVVVV
PPP
VVVV
VVVV
P
VV
Boot
...
Als UML-Diagramm (UML = Unified Modelling Language) sieht die
Struktur so aus:
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 37
Fahrzeug
Hoechstgeschwindigkeit:double
Auto
LKW
Boot
Autokennzeichen:String
Gesamtgewicht:double
Tiefgang:double
Beispiel: Java-Programm dazu
class Fahrzeug {
public double Hoechstgeschwindigkeit;
private String Eigentuemer;
private static long Anzahl;
.......
}
class Auto extends Fahrzeug {
public String Autokennzeichen;
......
}
class Boot extends Fahrzeug {
public double Tiefgang;
........
}
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 39
Java-Programm zu Rechteck
Rechteck mit oberer Eck-Koordinate, Breite; Höhe:
Als Unterklasse von GeoObject
Programmcode, der in einem Applet zum Zeichnen verwendet wird:
class Rechteck {
int x,y,b,h;
// x,y Koordinaten, b,h, Breite und Hoehe
void paint (Graphics g) {
//Methode zum Zeichnen
g.drawRect (x, y, b, h); // Bibliotheksfunktion drawRect
}
}
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 40
Methoden-Definition
Im Programm zur Klasse werden Attribute und Methoden definiert
Beispiel
class Rechteck {
int x,y,b,h;
void paint (Graphics g) {
g.drawRect (x, y, b, h);
}
void move (int xd; int yd) {
this.x = x + xd;
this.y = y + yd;
}
}
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 41
Methoden-Definition: Beispiel
move verändert die Eck-Koordinate des Rechtecks um xd,yd.
Die Nachricht r.move(20,0) bewirkt Änderung der Anfangskoordinate
des Rechtecks r.
this ist der Referenz auf Objekt, an das die Nachricht gesendet wird.
Anderen OOP-Sprachen: teilweise self statt this
In Haskell: move r 20 0 statt r.move(20,0)
this entspricht x in der Haskell-Definition move x y z = ....
Typen bzw. Klassenangaben sind in Java erforderlich für:
Argumente, Variablen, Rückgabewerte
void steht für kein Rückgabewert“
”
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 42
Anwendungen und main
Programme als Anwendungen haben eine spezielle Methode:
main
Diese wird von der JVM zuerst aufgerufen
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, world");
}
}
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 43
Klassen und Vererbung
Strukturierung der Klassen in Vererbungshierarchie.
Eine Möglichkeit: möglichst allgemeine Klasse definieren:
abstract class geometrischesObjekt {
String Name;
geometrischesObjekt (String Name) {this.Name = Name;}
void paint (Graphics g);
}
// Konstruktor
geometrischesObjekt ist abstrakte Klassen ohne direkte Instanzen,
definiert durch abstract class.
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 44
Klassen und Vererbung: Diagramm
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 45
geometrischesObjekt
+ String Name
Rechteck
+ int x
+ void paint(Graphics)
+ void move(int; int)
farbigesRechteck
+ paint(Graphics)
Gerade
Kreis
Dreieck
Klassen und Vererbung
Rechteck, Gerade, Kreis, Dreieck als
Unterklassen bzw. abgeleitete Klassen definieren,
die mehr Methoden und mehr Eigenschaften haben, also spezieller sind:
class Rechteck extends geometrischesObjekt {
int x,y,b,h;
// x,y Koordinaten, b,h,
void paint (Graphics g) {
g.drawRect (x, y, b, h);
}
void move (int xd; int yd) {
this.x = x + xd;
this.y = y + yd;
}
}
// Beispielaufruf: re.move(2,-3)
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 47
Breite und Hoehe
Klassen und Vererbung: Beispiel
weitere Unterklasse von Rechteck:
class FarbigesRechteck extends Rechteck {
Color farbe;
....
}
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 48
Klassen und Vererbung: Bemerkungen
Die Unterklassen erben die Attribute und Methoden der Oberklasse;
Hinzuzufügen von Attributen ist möglich.
Es ist nicht möglich, Attribute oder Methoden zu entfernen.
Die Unterklasse hat dann die Vereinigung
der Attribute und Methoden der Oberklasse und der definierten Attribute und Methoden
Methoden der Oberklasse können in der Unterklasse überschrieben werden.
Z.B. paint zeichnet die Linien des Rechtecks
bei einem farbigen Rechteck die Linien und die Farbe.
re instanceof Rechteck; ergibt True, wenn re zur Klasse Rechteck
gehört.
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 49
Wesentliche Eigenschaften der
objektorientierten Programmierung
Programm
Objekte
Nachrichten senden
P raktische Inf ormatik
2, SS
Menge von Klassendefinitionen, die aus Erklärungen von Attributen und Definitionen von
Methoden (und Schnittstellenbeschreibungen )
bestehen.
existieren nur zur Laufzeit des Programms.
Objekte
werden
innerhalb
eines
Methodenaufrufs
zur
Laufzeit
(mittels
new
ClassKonstruktor(...)) erzeugt.
Aktion zur Laufzeit.
2005, F olien W W W +Java1,
(22. April2005)
Seite 50
Typen und Polymorphie
Variablen müssen getypt sein ( Typ = Klasse)
Objekte zu Unterklassen sind erlaubt
Den exakten Typ des Objekts kann man oft erst zur Laufzeit ermitteln.
Fahrzeug fahrzeug,
und
Fahrzeug
hat
Auto, Bus, Schiff,
Ermitteln von Eigentuemer:
fahrzeug.Eigentuemer, bzw. getEigentuemer()
die
Unterklassen
Echte Polymorphie wie in Haskell gibt es erst in Java 5.
Die Polymorphie der Methoden ist eher Overloading
Overloading = Mehrfachverwendung von Namen
Aus dem Typkontext ergibt sich eindeutig die implementierte Methode.
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 51
Bindung: Auswahl der
Methodenimplementierung
Die Auswahl der (spezifischsten) Implementierung einer Methode wird
ermittelt unter Beachtung von:
•
•
•
•
der
der
der
der
Anzahl der Argumente,
Typen der Parameter,
Klassenhierarchie und
Stelligkeit und Argumenttypen der Methodendefinitionen
Das Überladen nach dem Typ des Ergebnisses ist nicht möglich
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 52
Bindung: Auswahl der
Methodenimplementierung
Binden mittels Typauswahl nennt man auch
single dispatching bei einem Argument, und
multiple dispatching, bei mehreren Argumenten
Bei Kombination von Typumwandlungen (z.B. double → int) und
dynamischem Binden kann es zu
nicht gewollten Methodenaufrufen kommen.
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 53
Statische Bindung (early binding)
Zur Compilezeit
wenn der Methodenaufruf und
die Methodendefinitionen
zur Compilezeit
eine eindeutige Ermittlung der Implementierung erlauben
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 54
Dynamische Bindung (late binding)
Wenn zur Compilierzeit bei Overloading von Methoden,
die Implementierung der Methode nicht eindeutig bestimmbar ist.
Zur Laufzeit
Ermittlung der exakten Typen der Objekte als Argumente
Dann: Ermittlung der spezifischsten Methode
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 55
Beispiel
abstrakte Klasse geoObj; Methode void paint(geoObj) Impl-geoobj
Klasse Rechteck; Methode void paint(Rechteck) Impl-Rechteck
Klasse Kreis; Methode void paint(Kreis) Impl-Kreis
Aufruf 1: paint(x:Rechteck) : Impl-Rechteck (static binding)
Aufruf 2: paint(x:geoObj : (dynamic binding)
automatische Fallunterscheidung zur Laufzeit
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 56
Das gibt es in Java nicht:
Pointer und Adressrechnung
Mehrfachvererbung (von Attributen)
D.h. eine Klasse kann nur eine direkte Oberklasse haben.
diese Beschränkung ist manchmal zu streng.
Abhilfe: Mehrfachvererbung von Methodennamen durch Verwendung
von Interfaces (Schnittstellen).
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 57
Das gibt es ab Java 5: generischen Klassen
Klassen, die selbst (Compilezeit-) Typ-Parameter haben können.
Möglichkeiten:
•
•
Allgemeine Klassen und Methoden,
bei denen nur die Typen der Attribute variieren
homogene Listen in Java definierbar
mit Elementen, deren Typ dem Typ-Parameter entspricht.
Bisher:
allgemeine Listen als Listen von Objekten definieren
Typumwandlung mittels cast
Das sind eher heterogene Listen.
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 58
Wiederverwendbarkeit; Reusability
•
•
•
•
•
•
•
Wiederverwendung von Programmcode
bereits implementierte und getestete Funktionalität
Mehraufwand bei der ersten Strukturierung
da man andere Verwendung berüclsichtigen muss.
Höhere Abstraktion und bessere Strukturierung erforderlich
besseres Verständnis des Problems und der Implementierung
Wiederverwendung kann im eigenen Programm/Projekt sein, oder
über eine Bibliothek
einfachere Strukturen, Datentypen sind eher wiederverwendbar
Java 5 : parametrisierte Klassen
Leider sind ähnliche Datenstrukturen / Verarbeitungen/ Methoden/
Programmme
oft nicht gemeinsam implementierbar
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 59
Programmierhinweise
Klassenstruktur:
Anwendung bzw. Problem gedanklich strukturiere
Methoden und Attribute
ergeben sich aus der benötigten Funktionalität.
Superklassen
weniger Attribute und Methoden,
Unterklassen
mehr Attribute und Methoden.
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 60
UML: Unified Modelling Language
Analyse und Vorstrukturierung möglich mit graphischen Werkzeugen
Graphische Darstellen, Eingabe + Edit von: Klassenstruktur, Attributen, Methoden, Typen usw.
Auch: Automatische Erzeugung von Programmencode
Standardisierung: UML
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 61
UML: Beispiele für Elemente der Diagramme
•
Klasse:
Klassenname
Attribute
Methoden
•
Objekt:
Objekt: Klasse
Attribute = Wert
interface
•
P raktische Inf ormatik
2, SS
Schnittstelle
2005, F olien W W W +Java1,
(22. April2005)
Klasse
Methode()
Seite 62
UML-Diagramme
Weiteren Markierungen public (+), private (-) oder protected (#)
+
−
+
−
P raktische Inf ormatik
2, SS
Klassenname
Attribut1: Klasse33
Attribut1
constructor Konstruktor123
Methode1 (arg1:Double)
Methode2 ()
2005, F olien W W W +Java1,
(22. April2005)
Seite 63
UML-Diagramme Beispiele
• Vererbung:
Oberklasse
Unterklasse
• Beziehung
Klasse 2
Klasse 1
• Enthaltensein
Ganzes
Teil
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 64
• Realisierung
Klasse
Schnittstelle
Eigenschaften von Java
Automatische Speicherverwaltung
automatisch Speicheverwaltung für Objekte.
Objekte, auf die es keine Referenz mehr gibt, werden
automatisch (irgendwann) freigegeben (garbage collection).
Typsicherheit
Der Kompiler überprüft die Klassenangaben der Variablen auf Konsistenz mit den Methoden-Aufrufen und den
cast-Aufrufen zur Typkonversion.
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 66
Eigenschaften von Java (2)
API: Application Programming Interface
vordefinierte Klassen: im Compiler und in der Laufzeitumgebung
(java.lang, java.util, java.awt. java.applet,....
von Sun) mitgelieferten Bibliotheken,
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 67
Eigenschaften von Java (2)
Portabilität
Prinzip: Ausführung auf allen Rechner und Rechnertypen
gleichartig
nichtportable Anteile sind auf den jeweiligen Rechner installiert (JVM)
keine rechnerspezifischen Konstrukte in der Programmiersprache!
keine Adressrechnungen, keine (Betriebs-) Systemzugriffe,
Die Verwendung der verschiedenen Windowsysteme
kann zu unterschiedlichem Verhalten/Aussehen führen.
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 68
Eigenschaften von Java (3)
Bytecode
Kompiler erzeugt interpretierbaren und portablen By”
tecode“.
JVM, Java Virtual Machine interpretiert diesen Bytecode
Nachteil: nicht effizient, aber
flexibel; portabel; wenig Kommunikaitonsaufwand
bei Netzwerk-Kommunikation und graphischer Benutzerinteraktion.
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 69
Eigenschaften von Java (3)
WWW
Java ist konzipiert zur Programmierung von
graphischen, interaktiven Programmstücken (sogenannten Applets),
die von einem Web-Browser auf der Client-Seite geladen
und ausgeführt werden können
Programme (Applications) sind auch möglich.
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 70
Eigenschaften von Java (4)
C++ - Ähnlichkeit
Die Syntax von Java ähnlich zu der von C++
kein explizites Referenzieren / Dereferenzieren von Objekten oder Daten:
d.h. keine Adressrechnung
Sicherheit
Bessere Sicherheit durch:
Keine Referenzen und Zeigern
Einschränkung der Zugriffsrechte für fremde Applets
Bytecode-Verifier,
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 71
Eigenschaften von Java (5)
Browser; Versionen
Applet-Bytecode wird vom Server zum Client gesendet
Problem: Unterschiedliche Java-Versionen: Compiler / JVM
Applets können zu zu modern“ sein
”
Bei Inkompatibilität passiert oft nichts, oder zuwenig
teilweise unterschiedliches Verhalten bei verschiedenen
Browsern
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
(22. April2005)
Seite 72
Typische Phasen der Java-Entwicklung und
Ausführung
•
Editieren:
•
Kompilieren:
•
Laden:
•
Bytecode-Verifier:
•
Ausführen:
P raktische Inf ormatik
2, SS
2005, F olien W W W +Java1,
des Programms, der Klassendefinitionen, ergibt Files mit der Extension .java.
des Programms und der Klassendefinitionen.
Erzeugt Bytecode: ergibt Files mit der Extension .class.
Lädt die notwendigen Bytecode-Files mit der
Extension .class.
überprüft den Bytecode daraufhin, ob er den
geforderten Sicherheitsanforderungen entspricht.
die JVM (Java Virtual Machine) führt den
Bytecode aus
(22. April2005)
Seite 73
Herunterladen