Java Schulung Grundlagen und Übersicht

Werbung
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
Herunterladen