Java Schulung Objektorientierte Programmierung in Java Prof. Dr. Nikolaus Wulff Agenda: Objektorientierung • Grundbegriffe – Klasse, Objekt, Attribut, Methode, Nachricht • Graphische Darstellung mit UML – Die wichtigsten Konzepte • Schnittstelle und Implementierung • Vererbung • Polymorphie Prof. Dr. Nikolaus Wulff 2 Agenda: Java Grundlagen • • • • • • • • Java Syntax Java Datentypen Kontrollstrukturen Klassen und Objekte Überschreiben/Überladen von Methoden Sichtbarkeit Behandlung von Ausnahmen (Exceptions) Die wichtigsten Java Pakete Prof. Dr. Nikolaus Wulff 3 Was ist Java? „Java ist eine einfache, objektorientierte, verteilte, interpretierte, robuste, sichere, architekturneutrale, portable, performante, dynamische Programmiersprache.” Prof. Dr. Nikolaus Wulff 4 Was ist Java? Cont. • Java ist sowohl eine rein objektorientierte Programmiersprache in der Tradition von Smalltalk als auch eine klassische imperative Programmiersprache nach dem Vorbild von C. • Die Designer von Java bedienten sich sich beim Entwurf der Syntax großzügig bei C/C++ Entwickler aus diesem Umfeld können schnell umsteigen Im Detail unterscheidet sich Java aber recht deutlich von C++ bestimmte, subtile Fehlerquellen, werden nicht zugelassen • Java-Code kann in einem Web-Browser ablaufen Es bedarf keiner speziellen Frontend-Clients mehr Prof. Dr. Nikolaus Wulff 5 Woher kommt Java? • Java wurde von Sun Microsystems 1991 zur Software Entwicklung für Verbraucherelektronikgeräte entwickelt. • Mit Java wurde das Ziel verfolgt, eine Sprache zu entwickeln, die klein, schnell, und leicht auf vielfältige Hardwaresysteme portierbar ist. • Diese Ziel machte aus Java eine ideale Sprache zur Verbreitung ausführbarer Programme über das WWW Entwicklung von Programmen, die bedienungsfreundlich und auf verschiedene Plattformen portierbar sind. • Durch die hohe Verbreitung und die vielen Zusatzpakete ist Java die ideale objektorientierte Sprache, sowohl für Desktop- als auch für Webprojekte. Prof. Dr. Nikolaus Wulff 6 Woher kommt Java? • Die syntaktische Seite: – Java ist eine C/C++ artige Sprache. – Java ist jedoch weder eine Ober- noch eine Untermenge von C/C++. • Die semantische Seite: – Java bricht mit dem traditionellen, prozeduralen Programmierstil. – Java unterstützt ausschließlich den objektorientieren Stil und knüpft an Sprachen wie Smalltalk oder Eiffel an. Prof. Dr. Nikolaus Wulff 7 Programmiersprachen Assembler 1950 Cobol Fortran 1960 PL/1 Algol 1970 Lisp Simula BCPL Pascal Smalltalk-72 CLU C beta 1980 C++ Smalltalk Ada Modula2 Lisp CLOS Eiffel Turbo-Pascal 1990 2000 Lisp Flavors Smalltalk-76 Oberon C# Prof. Dr. Nikolaus Wulff Java Modula3 8 Vorteile von Java • Java ist eine schlanke Sprache: – Java ist einfacher als C/C++. – Die Konzepte der Objektorientierung müssen jedoch verstanden werden. • Java Code ist portabel: – Java ist standardisiert. – Compilierter Code ist binärkompatibel und läuft auf jeder Plattform mit Java Runtime. • Java läuft im Web Browser und kann leicht über das Netz verteilt werden. Prof. Dr. Nikolaus Wulff 9 Nachteile von Java • Java Code wird interpretiert: – Java Code ist ~10 mal langsamer als C/C++. – Dies ändert sich allerdings mit besseren JVM... • Java ist eine junge Sprache: – Mit jeder Version kommen neue Features – GUI-Klassen aus AWT/Swing sind nicht immer und überall stabil. • Die Entwicklung der Java Pakete verläuft sehr stürmisch, so dass es leicht ist den Überblick zu verlieren. Prof. Dr. Nikolaus Wulff 10 JDK Versionen Name: enthält JDK 1.0 Vollständige Sprachspezifikation Minimale Sprachbibliothek Applets JDK 1.1 Erweiterung der Standard-Bibliothek Datenbankanbindung („JDBC“) „Java-Beans“ Neues Event-Modell (Delegation) JDK 1.2 Neue GUI-Komponenten (Swing), Collections Serverseitiges Java (Servlets & Java Serverpages) CORBA-Unterstützung JDK 1.3 Integration verschiedener Frameworks Steigerung der GUI-Performance Seit JDK1.2 nennt sich die Entwicklungsumgegung „Java 2“ Prof. Dr. Nikolaus Wulff 11 Begriffsbestimmung Objektorientierung ist der Ansatz die Abstraktionen und Begriffe des Problembereiches direkt in entsprechende Konstrukte des Lösungsbereiches zu überführen. Aktenkoffer Vorlagemappe Terminplaner Stapel Brief Konto Währung Kurs Vertrag Rechner Eingangskorb Prof. Dr. Nikolaus Wulff Aktenordner Notiz Kalkulation Dokument 12 Objektorientierung Alan Kay, einer der Väter der Objektorientierung, formulierte Ende der sechziger Jahre seine „biologische Analogie“: »...the ideal computer would function like a living organism; each „cell“ would behave in accord with others to accomplish an end goal but would also be able to function autonomously. „Cells“ could also regroup themselves in order to attack another problem or handle another function... « Prof. Dr. Nikolaus Wulff 13 Alan Kay's fünf OO-Regeln • Alles ist ein Objekt. • Ein Programm ist eine Ansammlung von Objekten, die sich gegenseitig Nachrichten senden, um zu sagen was zu tun ist. • Jedes Objekt hat seinen eigenen Speicherbereich, der wiederum aus anderen Objekten besteht. • Jedes Objekt hat einen Typ. • Alle Objekte des gleichen Typ können die selben Nachrichten bekommen und verstehen. Prof. Dr. Nikolaus Wulff 14 Definition der Objektorientierung • Objektorientierte Programmierung ist eine Implementierungsmethode, bei der Programme als kooperierende Ansammlungen von Objekten angeordnet sind. • Jedes Objekt stellt eine Instanz einer Klasse da, alle Klassen sind Elemente einer Klassenhierarchie, die durch Vererbungsbeziehungen gekennzeichnet sind. Grady Booch (1994) Prof. Dr. Nikolaus Wulff 15 Gegenstand und Abstraktion Typ Name Schnittstelle Light on() off() dim() brighten() Light lt = new Light(); // Objekt Erzeugung lt.on(); // Objekt verwenden Prof. Dr. Nikolaus Wulff 16 Software und Modellbildung • Wir bilden Modelle damit wir lernen das zu entwickelnde System besser zu verstehen. • Ein Modell ist eine Vereinfachung der Realität. • Als Notation hat sich hierzu die Unified Modeling Language (UML) etabliert. Prof. Dr. Nikolaus Wulff 17 Modellierung wozu? • Wir bilden Modelle von komplexen Systemen, da wir sie in ihrer Gesamtheit nicht überschauen und verstehen können. • Jedes komplexe System setzt sich aus kleineren funktionalen Subsystemen zusammen, die wir evt. getrennt modellieren und bauen können. Prof. Dr. Nikolaus Wulff 18 Objektkomposition Car Interne Details Status des Objekts Schnittstelle engine : V6Cylinder wheel[4] : GoodYear door[5] : Door start() drive() stop() Objektkomposition: Erzeuge neue Objekte durch Kombination bestehender Objekte. Prof. Dr. Nikolaus Wulff 19 divede et impera • Dieser Zusammenbau von OO-Systemen per Komposition aus Subsystemen ermöglicht eine „teile und herrsche“ Strategie. • OO-System bilden zur Laufzeit eine komplexe hierarchische Struktur von Objekten. • Seine gegenwärtige Ausprägung findet dieser Ansatz in den Komponententechnologien .Net und J2EE. Prof. Dr. Nikolaus Wulff 20 Der Entwicklungsprozess Source A.java B.java C.java Java Compiler Byte Code A.class B.class C.class Java Interpreter Prof. Dr. Nikolaus Wulff 21 Das erste Java Programm • Ziel ist es den grundsätzlichen Entwicklungsprozess kennenzulernen. • Als Entwicklungsumgebung wird Eclipse verwendet. • Der Arbeitsplatz und die Pfade werden einheitlich eingerichtet. • Das „HelloWorld“ Programm wird erstellt und ausgeführt. Prof. Dr. Nikolaus Wulff 22 HelloWorld Projekt • Eigenen Workspace einrichten: – »JavaSchulung« als Wurzelverzeichnis • mkdir c:\JavaSchulung • Eclipse Workspace zuweisen: • eclipse.exe -data c:\JavaSchulung • Eclipse Projekt anlegen • File | New | Project | Java Project | »HelloWorld« • Als Quellordner »src« angeben (add Folder) • Als Ausgabeordner »bin« akzeptieren – Neues Paket »hello« anlegen – Neue Klasse »HelloWorld« im Paket »hello« Prof. Dr. Nikolaus Wulff 23 HelloWorld Eclipse Prof. Dr. Nikolaus Wulff 24 HelloWorld.java Eclipse-Workspace \ Projektname \ Source \ Package \ Klasse C:\JavaSchulung\HelloWorld\src\hello\HelloWorld.java package hello; /** * HelloWorld * Das standard Beispiel in Java. * @author nwulff */ public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } } C:\JavaSchulung\HelloWorld\bin\hello\HelloWorld.class Prof. Dr. Nikolaus Wulff 25 Literatur Ken Arnold, James Gosling: Die Java Programmiersprache Addison-Wesley, 1998, ISBN 3-8273-1034-2 [Von den Java Erfindern.] Mari Campione, Kathy Walrath: Das Java Tutorial Addison-Wesley, 1997, ISBN 3-8273-1050-4 [gute Einführung in die wesentlichen Bestandteile von Java] David Flanagan: Java in a Nutshell 2nd Edition, O‘Reilly, 1997, ISBN 1-56592-262-x. [Der Java-Nachschlage-Klassiker.] James Gosling, Bill Joy, Guy Steele: The Java Language Specification Addison-Wesley, 1996. [Für die, die es genau wissen wollen.] Prof. Dr. Nikolaus Wulff 26