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