Informatik für Ingenieure (InfIng)
JAVA
Doz. Dipl.-Ing. H. Hiller
WS 2012/13
Java
Java ist…
… eine Insel, eine von den vier großen Sunda-Inseln
–
–
Java ist Teil des Staatsgebiets der Republik Indonesien
Auf Java befindet sich die indonesische Hauptstadt Jakarta
… eine Kaffeesorte
… eine Programmiersprache !!!
Die Insel
Java.
© Sergii Figurnyi - Fotolia.com
FH D
Fachhochschule Düsseldorf
Seite 2
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Themen dieser Vorlesung
Wir wollen folgenden Fragen nachgehen:
1. "Was ist Java und was macht Java so besonders?"
Java-Biografie
2. "Wie unterstützt Java den OOP-Gedanken?"
Java & OOP
FH D
Fachhochschule Düsseldorf
Seite 3
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Übersicht
Java-Biographie
OOP mit Java
Klassen & Objekte
Botschaften
Vererbung & Polymorphie
Datenkapselung
Programmstruktur
FH D
Fachhochschule Düsseldorf
Seite 4
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Historisches
1991: Green Projekt der Firma Sun Microsystems
Ziel: Vereinfachung der SW-Portierung auf andere Hardware
Ergebnis: Plattformunabhängige Programmiersprache Oak, bzw. Java
1994: Einstellung des Green-Projekts
Kommerzielle Vermarktung gescheitert
Lizenzierung von Oak nicht gefragt
1995: Idee für den Einsatz im Web
Grundlegende Veränderung des Internets mit Beginn der 1990er Jahre
Wandlung von rein wissenschaftlicher zu öffentlicher Plattform
Forderung nach mehr Dynamik
–
–
Mit HTML alleine nicht zu schaffen
Clientseitige Programme erforderlich
Java: Die Lösung hatte ihr Problem gefunden!
2010: Java unter der Obhut von Oracle
Sun Microsystems ist seit 2010 Tochterfirma von Oracle Corporation
FH D
Fachhochschule Düsseldorf
Seite 5
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Design-Merkmale
“Write once, run anywhere"
Objektorientierung
Plattformunabhängigkeit
Klassen & Objekte
Robustheit
Verzicht auf Zeiger etc.
Sicherheit
Java Virtual Machine (JVM)
FH D
Fachhochschule Düsseldorf
Seite 6
Informatik für Ingenieure WS 2012/13
Vertrautheit
Syntaktische Nähe zu C/C++
FB 5
Fachbereich Medien
Programmerstellung
Quellcode
Schreiben des Quelltextes mit einem Editor
–
Quellcode-File hat die Extension ".java"
Quellcode
(.java)
Übersetzen des Quelltextes in Bytecode
–
Java Bytecode hat die Extension ".class"
Compilieren
Beispiel
–
–
Quellcode : HelloWorld.java
Bytecode : HelloWorld.class
Java Bytecode
Bytecode
(.class)
Architekturneutraler Programmcode in binärer Darstellungsform
–
Nicht gebunden an den Befehlssatz eines bestimmten Prozessors
Unmittelbare Ausführung des Codes auf einer Plattform nicht möglich
–
Code nicht lauffähig, weil die expliziten Prozessorbefehle fehlen
Code ist zur Ausführung in einer Java Laufzeitumgebung bestimmt
Der Java Bytecode ist plattform-unabhängig !
FH D
Fachhochschule Düsseldorf
Seite 7
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Programmausführung
Java Run Time Environment (JRE)
Laufzeitumgebung für die Java-Plattform von Sun Microsystems
Enthält die Java Klassen-Bibliothek und die Java Virtual Machine
Java Virtual Machine (JVM)
Plattformspezifischer Teil der Laufzeitumgebung
Ergänzt den Java Bytecode um die plattformabhängigen Befehle
–
JVM ist plattform-spezifisch und kennt daher den Befehlssatz des Prozessors
Ausführung (Interpretation) des Java-Bytecodes zur Laufzeit
Just-in-Time (JIT) Compiler
Ansatz zur Optimierung der Ausführungsgeschwindigkeit
–
–
Codeblöcke werden zur Ausführungszeit in Maschinencode übersetzt
Codezeilen werden nicht wie beim Interpreter zeilenweise abgearbeitet
JIT-Compiler ist neben dem Interpreter Bestandteil der JVM
Die Java Virtual Machine ist plattform-abhängig !
FH D
Fachhochschule Düsseldorf
Seite 8
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Plattformunabhängigkeit
JVM ist der Schlüssel zur Plattformunabhängigkeit
Schnittstelle zwischen Java-Programm und Plattform (Betriebssystem + HW)
Verfügbar für viele Plattformen, z.B. Windows, Mac, Linux und Solaris (Sun)
JVM
Compiler
HelloWorld.java
HelloWorld.class
Programm-Ausführung
Java-Quelltext
plattform-unabhängig
Java Bytecode
plattform-unabhängig
Java Virtual Machine
plattform-abhängig
Sun selbst bietet JVMs für die Betriebssysteme Solaris, Linux und Windows an
Andere Hersteller lassen eigene JVM für ihre Plattform zertifizieren, z.B. Apple
FH D
Fachhochschule Düsseldorf
Seite 9
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Plattformunabhängigkeit
Plattformabhängigkeit vs. Plattformunabhängigkeit
Plattformabhängige Sprachen
z.B. Pascal, Fortran, C/C++
Plattformunabhängige Sprachen
z.B. Java
Compilieren
Compilieren & Linken
Binärcode
Binärcode
Ausführen
Ausführen
Windows
FH D
Fachhochschule Düsseldorf
Linux
Java-Bytecode
Ausführen
Ausführen
JVM
JVM
Windows
Linux
Seite 10
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Sprachumfang von Java
Syntax
Syntax von Java wurde weitestgehend von C bzw. C++ übernommen
–
–
C
: Strukturierte Programmiersprache
C++ : OOP-Variante von C (kompatibel zu C)
Beispiele für die Anlehnung an C bzw. C++
–
–
–
Elementare Datentypen wie Integer, Character
Kontrollstrukturen, z.B. if…else, do…while, etc.
Nicht zu vergessen, das Semikolon ;-)
Inhaltlich bestehen aber deutliche Unterschiede
Objektorientierung
Umsetzung des OOP-Gedankens
Programme sind eine Sammlung von Klassen
Geringere Komplexität (gegenüber C++)
Keine Zeiger, keine Mehrfachvererbung, nur Einfachvererbung
Keine explizite Speicheranforderung und -freigabe
Keine globalen Konstanten, Variablen oder Funktionen
FH D
Fachhochschule Düsseldorf
Seite 11
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Klassenbibliothek
Klassenbibliothek
Java verfügt über eine große Anzahl von Bibliotheksklassen (aktuell ca. 200)
Klassen sind thematisch gruppiert in Paketen (engl. packages)
Paket
java.awt
AWT (Abstract Windowing Toolkit), grafische Bedienoberflächen
java.awt.event
Schnittstellen für verschiedene Ereignisse unter grafischen Oberflächen
java.io
Möglichkeiten zur Ein- und Ausgabe
java.lang
Basisklassen wie String-, Thread- oder Wrapper-Klassen
java.util
Datenstrukturen, Raum und Zeit, Zufallszahlen
javax.swing
Einfache Swing-Komponenten
Verwendung von Paketen
Einbindung der gewünschten Klassen mit Hilfe einer import-Anweisung
Beispiel: import java.util.*;
FH D
Fachhochschule Düsseldorf
Seite 12
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Java-Programme
Verschiedene Formen von Java-Programmen
Applikationen : "Normales, ausführbares Programm" (mit main()-Methode)
Applets
: Java-Programme, die in einem Web-Browser ausgeführt werden
Servlets
: Java-Programme, die auf einem Web-Server ausgeführt werden
Client
Server
Applet
Servlet
Web-Browser
Web-Server
Applikation
Internet
Java Virtual Machine (JVM)
Plattform
FH D
Fachhochschule Düsseldorf
Seite 13
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Applets – und der Erfolg von Java
Was hat Java so erfolgreich gemacht?
Aufstrebendes WWW hatte den Wunsch, Programme auf Clientseite auszuführen
Verbunden mit diesem Wunsch waren 3 Probleme
–
Rechner-Vielfalt, Sicherheit und Übertragungsgeschwindigkeit
Anfrage
HTML-Seite
Applet
© Ken Ng - Fotolia.com
Antwort
Web-Server
Web-Client
Java war (und ist) für alle 3 Probleme die Lösung (siehe nächste Folie)
© Spectral-Design - Fotolia.com
Applets waren Anfang der 1990er Jahre der Schlüssel zum Erfolg!
FH D
Fachhochschule Düsseldorf
Seite 14
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Applets – und der Erfolg von Java
Problem 1: Rechner-Vielfalt
Programme müssen auf unterschiedlichsten Plattformen laufen (HW & BS)
Java-Programme sind plattformunabhängig
Problem 2: Sicherheit
Ausführung auf dem Rechner des Anwenders (Sicherheitsrisiko)
Vertrauenswürdigkeit der Programme fraglich
Java-Programme laufen nicht direkt auf der Plattform, sondern auf der JVM
Applets werden im Web-Browser ausgeführt ("Sandbox-Prinzip")
Problem 3: Übertragungsgeschwindigkeit
Geringe Bandbreiten bzw. Übertragungskapazitäten
Java-Programme sind kleiner als konventionelle Programme
Klassen-Bibliotheken sind bereits auf dem Ziel-System vorhanden (JRE)
Drei Probleme – eine Lösung: JAVA !
FH D
Fachhochschule Düsseldorf
Seite 15
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Entwicklungsumgebungen
JDK
Herausgeber : Oracle (Sun)
Java Entwicklungsumgebung
–
–
–
–
–
JDK (Java Development Kit)
Java-Entwicklungstools + JRE
Compiler
: javac
Interpreter
: java
Disassembler: javap
Appletviewer : appletviewer
...
Kommandozeilenorientiert
JRE (Java Runtime Environment)
Klassen-Bibliothek + JVM
JVM (Java Virtual Machine)
Ausführung von
Java-Programmen
Eclipse
Integrierte Entwicklungsumgebung
–
–
–
Editieren
Compilieren
Ausführen
Grafische Benutzeroberfläche
FH D
Fachhochschule Düsseldorf
Seite 16
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Java-Editionen
3 Editionen
Ab Version 1.2 (Java 2) ist Java unterteilt in verschiedene Editionen
–
–
–
Java SE : Java Standard Edition
Java EE : Java Enterprise Edition
Java ME : Java Mobile Edition
Die aktuelle Java-Version ist die Version 7 (JDK und JRE)
Java SE (JSE)
Edition für den generellen Einsatz auf PCs bzw. Servern
Basis für die Java-EE- und Java-ME-Technologien
Java EE (JEE)
Edition für die serverseitige Java-Programmierung
Quasi “de facto“-Standard für Business-Anwendungen
Java ME (JME)
Plattform für Embedded Consumer Products, wie etwa Mobiltelefone oder PDAs
FH D
Fachhochschule Düsseldorf
Seite 17
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Übersicht
Java-Biographie
OOP mit Java
Klassen & Objekte
Botschaften
Vererbung & Polymorphie
Datenkapselung
Programmstruktur
FH D
Fachhochschule Düsseldorf
Seite 18
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Vorwort
Einführung in Java erfolgt im Kontext eines Beispiels
"Es ist ein Programm zur Verwaltung der Studenten/innen zu entwickeln"
–
Im Folgenden wird der Einfachheit halber nur noch der Begriff des "Studenten"
verwendet; er soll gleichermaßen für männliche & weibliche Studierende gelten!
Fokus ist die Umsetzung des OOP-Ansatzes mit der Programmiersprache Java
Grundgedanke
Studenten als reale Objekte sollen durch abstrakte Objekte repräsentiert werden
Objekte basieren auf Klassen, bzw. werden aus ihnen erstellt (Bauplanprinzip)
Name
Wohnort ändern
Fachbereich
Daten drucken
Matrikel-Nr
Wohnort
© AKS - Fotolia.com
Noten eintragen
Student
FH D
Fachhochschule Düsseldorf
Seite 19
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Klassen
Klassen
Definition einer Klasse erfolgt über das Schlüsselwort class
Attribute
A1… A n
Syntax
class klasse
{
// Attribute
// Methoden
}
klasse
Klasse
Methoden
M1 … Mn
: Name der Klasse
Beispiel
class Student
{
// Attribute & Methoden
}
FH D
Fachhochschule Düsseldorf
Seite 20
Informatik für Ingenieure WS 2012/13
Student
Attribute
A1… An
Methoden
M1 … Mn
FB 5
Fachbereich Medien
Klassen
Attribute
Festlegung der Eigenschaften eines Objekts
Attribute
A1… A n
Syntax
typ attribut;
typ
attribut
Klasse
: int, float, char, etc.
: Name des Attributs bzw. der Eigenschaft
Methoden
M1 … Mn
Referenztypen
Neben den Grundtypen wie int, char, etc. gibt es Referenztypen
Referenztypen werden durch Klassen repräsentiert (z.B. String)
Anders ausgedrückt, Attribut kann Klasse bzw. Objekt sein
Beispiel
name
matrNr
String name;
int matrNr;
FH D
Fachhochschule Düsseldorf
Student
Methoden
M1 … Mn
Seite 21
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Klassen
Methoden
Programmteile, die die Attribute bearbeiten
Attribute
A1… A n
Syntax
typ
()
typ bezeichner
methode (par1,
par2...)
{
// Lokale Vereinbarungen und Anweisungen
}
typ
methode
par1
Methoden
M1 … Mn
: int, float, char, etc.
: Name der Methode bzw. der Aktivität
: Übergabe-Parameter (z.B. int a)
Beispiel
Student
void drucken()
{
System.out.println("...");
}
FH D
Fachhochschule Düsseldorf
Klasse
Seite 22
Informatik für Ingenieure WS 2012/13
name
matrNr
drucken()
FB 5
Fachbereich Medien
Verschnaufpause
Was bisher geschah…
Student
Erstellung einer Klasse (Bauplan für Objekte)
–
name
matrNr
Klasse Student
Definition zweier Eigenschaften
–
–
Name (name) des Studenten
Matrikel-Nummer (matrNr) des Studenten
drucken()
Hinzufügen einer Methode
–
–
Methode drucken()
Ausgabe der Daten (Name und Matrikel-Nr.)
class Student
{
String name;
int matrNr;
// Klasse Student
// Eigenschaft name
// Eigenschaft matrNr
void drucken()
{
System.out.println("...");
}
// Methode drucken()
// Bildschirmausgabe
}
FH D
Fachhochschule Düsseldorf
Seite 23
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Verschnaufpause
Wie es weitergeht…
Objekte erzeugen! Woraus? Aus der zuvor erstellten Klasse!
Zunächst sollen zwei Studenten mit dem Programm verwaltet werden
Zwei Studenten zwei Objekte: Axel (Chemie) und Kati (Architektur)
© Fredy Sujono - Fotolia.com
Axel (Chemie)
© AKS - Fotolia.com
Student
© Pétrouche - Fotolia.com
Kati (Architektur)
FH D
Fachhochschule Düsseldorf
Seite 24
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Objekte
Objekte
Objekte (Instanzen) sind die konkreten Ausprägungen einer Klasse
Objekte werden mit dem Schlüsselwort new erzeugt (=instantiiert)
Jedes Objekt ist eindeutig und hat eigene Kopien der Attribute und Methoden
Gespeichert werden die Objekte als eine Referenz in einer Objekt-Variablen
Syntax
klasse objekt = new konstruktor (par1, par2...);
klasse
objekt
konstruktor
: Name der Klasse
: Name des Objekts
: Name des Konstruktors
Beispiel
FH D
Fachhochschule Düsseldorf
Student
s1
Klasse
Objekt
=
new
Student()
Obj. erzeugen Konstruktor
Seite 25
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Konstruktor
Konstruktor
Methode, die ausschließlich beim Erzeugen von Objekten aufgerufen wird
Sinn und Zweck: Attribute vom Start weg mit Anfangswerten zu besetzen
Definition
Konstruktoren werden wie Methoden definiert, mit folgendem Unterschied
–
–
Name des Konstruktors ist identisch mit dem Namen der Klasse
Konstruktoren haben keinen Rückgabetyp
Default Konstruktor
–
–
Wird zur Verfügung gestellt, wenn kein Konstruktor vorhanden ist
Default Konstruktor ist ein Konstruktor ohne jegliche Parameter
Beispiel
Student(String N, int M)
{
name = N;
matrNr = M;
}
FH D
Fachhochschule Düsseldorf
Aufruf des
Konstruktors beim
Erzeugen eines
Objekts.
Student s1 = new Student("Axel", 1122);
Seite 26
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Objekte erzeugen
Objekte werden aus der Klasse Student erzeugt
name
matrNr
s1
name Axel
matrNr 1122
drucken()
Student s2 = new Student(...)
s2
name Kati
matrNr 3344
drucken()
© Pétrouche - Fotolia.com
Student
© AKS - Fotolia.com
Student s1 = new Student(...)
© Fredy Sujono - Fotolia.com
Objekte s1 und s2 repräsentieren die realen Objekte Axel und Kati
Beide Objekte verfügen über die gleichen Attribute und Methoden
Attribute sind identisch, Attribut-Werte hingegen sind unterschiedlich
drucken()
FH D
Fachhochschule Düsseldorf
Seite 27
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Übersicht
Java-Biographie
OOP mit Java
Klassen & Objekte
Botschaften
Vererbung & Polymorphie
Datenkapselung
Programmstruktur
FH D
Fachhochschule Düsseldorf
Seite 28
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Botschaften
Objekte reagieren auf Botschaften
Objekt sind in der Lage Botschaften, bzw. Aufträge entgegenzunehmen
Unsere Objekte der Klasse Student verstehen die Botschaft: drucken()
s1
Botschaft drucken()
name Axel
matrNr 1122
Ausgabe auf
dem Bildschirm
Student(in) Axel hat
die Matrikel-Nr. 1122
drucken()
Geheimnisprinzip
Andere Objekte wissen, welche Botschaften ein Objekt versteht
Ebenso ist bekannt, was ein Objekt leistet (z.B. Daten drucken)
Nicht bekannt ist jedoch, wie das Objekt letztendlich funktioniert
FH D
Fachhochschule Düsseldorf
Seite 29
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Botschaften
Botschaften
Sendeseitig
: Das Senden einer Botschaft ist der Aufruf einer Methode
Empfangsseitig : Für die Botschaft muss eine Methode implementiert sein
Syntax
objekt . methode(par1, par2...);
objekt
methode
par1
: Name des Objekts
: Name der Methode
: Übergabe-Parameter (z.B. int a)
Punktoperator
Operator für den Zugriff auf Elemente von Klassen (oder Datenstrukturen)
Hier wird über den Punktoperator auf die Methoden einer Klasse zugegriffen
Beispiel
s1.drucken();
s2.drucken();
FH D
Fachhochschule Düsseldorf
Seite 30
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Botschaften
Objekte kennen sich selbst am besten
Methoden greifen auf ihre eigenen Daten zu (Attribute bzw. Eigenschaften)
Beispiel
Objekt s1 kennt seinen Namen und seine Matr-Nr., gleiches gilt für Objekt s2
Botschaft drucken() veranlasst beide Objekte, ihre eigenen Daten auszugeben
s1
xy
s1. drucken()
….
name Axel
matrNr 1122
Student(in) Axel hat
die Matrikel-Nr. 1122
drucken()
...
s2. drucken()
s2
name Kati
matrNr 3344
Student(in) Kati hat
die Matrikel-Nr. 3344
drucken()
FH D
Fachhochschule Düsseldorf
Seite 31
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Übersicht
Java-Biographie
OOP mit Java
Klassen & Objekte
Botschaften
Vererbung & Polymorphie
Datenkapselung
Programmstruktur
FH D
Fachhochschule Düsseldorf
Seite 32
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Vererbung
Programmerweiterung, Teil 1
Hochschulbezogene Tätigkeit als Tutor soll Berücksichtigung finden
Existierender Programmcode soll aber nicht verändert werden !!!
Vorgehensweise
Neue Klasse für Tutor, basierend auf der Klasse Student
Honorar
Honorar zahlen
Fachgebiet
Daten drucken
Konto-Nr.
© Alexey Bannykh - Fotolia.com
Std. abrechnen
Tutor
FH D
Fachhochschule Düsseldorf
Seite 33
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Vererbung
Vererbung erfolgt über das Schlüsselwort extends
Syntax
class subKlasse extends basisKlasse
subKlasse
basisKlasse
Basis-Klasse
Vererbung
Student
name
matrNr
ausgeben()
: Klasse, die erbt
: Klasse, von der geerbt wird
Einfach-/Mehrfachvererbung
Beispiel
class Tutor extends Student
{
String lehrgebiet;
}
FH D
Fachhochschule Düsseldorf
Seite 34
Informatik für Ingenieure WS 2012/13
Sub-Klasse
Mehrfachvererbung ist in Java nicht möglich
Tutor
lehrgebiet
FB 5
Fachbereich Medien
Vererbung
Konstruktor und Vererbung
Konstruktoren werden nicht vererbt
Sub-Klasse braucht einen eigenen Konstruktor
Konstruktor der Subklasse
(a) Ausführung des Standard-Konstruktors der Basisklasse
–
–
Ausführung erfolgt automatisch
Falls nicht vorhanden: Definition in Superklasse mit leerer Argumentenliste
(b) Ausführen eines speziellen Konstruktors der Basisklasse
–
–
Genaue Angabe des Konstruktors, der in der Basisklasse aufzurufen ist
Aufruf des Konstruktor als erstes Statement mit dem Schlüsselwort super
FH D
Fachhochschule Düsseldorf
Seite 35
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Vererbung
Beispiel
class Student
{
String name;
int matrNr;
Student(String N, int M)
{
name = N;
matrNr = M;
}
}
Klasse Tutor erbt
von der Superklasse
Student
class Tutor extends Student
{
String lehrgebiet;
Tutor(String N, int M, String L)
{
super(N, M);
lehrgebiet = L;
Aufruf des Konstruktors
}
der Basisklasse
}
FH D
Fachhochschule Düsseldorf
Seite 36
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Polymorphie
Programmerweiterung, Teil 2
Botschaft drucken() an Tutor soll den Zusatz "Tutor" auf den Bildschirm bringen
Auch hier gilt wieder: Existierender Programmcode soll nicht verändert werden !!!
Student
name
matrNr
Ausgabe auf
dem Bildschirm
Student(in) Axel hat
die Matrikel-Nr. 1122
drucken()
Tutor
lehrgebiet
drucken()
FH D
Fachhochschule Düsseldorf
Methode nicht
gefunden,
Botschaft wird
weitergereicht
Hier fehlt noch der
Zusatz "Tutor"
Um die gewünschte Ausgabe auf dem
Bildschirm zu realisieren, muss die
Methode drucken() in der Subklasse Tutor
überschrieben werden.
Seite 37
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Polymorphie
Beispiel
Klasse Tutor hat von Klasse Student die Methode drucken() geerbt
Sub-Klasse Tutor soll nicht nur "Student", sondern zusätzlich "Tutor" ausgeben
Student
name
matrNr
drucken()
Tutor
lehrgebiet
drucken()
FH D
Fachhochschule Düsseldorf
Super-Klasse
void drucken()
{
System.out.println("Student " + name + " hat"
+" die "+ matrNr + ".");
}
Sub-Klasse
Überscheiben
der Methode
drucken()
void drucken()
{
super.drucken();
System.out.println("Tutor für " + lehrgebiet);
}
Seite 38
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Übersicht
Java-Biographie
OOP mit Java
Klassen & Objekte
Botschaften
Vererbung & Polymorphie
Datenkapselung
Programmstruktur
FH D
Fachhochschule Düsseldorf
Seite 39
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Zugriffskontrolle
Gültigkeitsbereich von Klassen, Attributen und Methoden
Zugriffsrechte legen die Sichtbarkeit, bzw. den externen Zugriff fest
–
–
–
–
public
protected
package
private
Niedrigste Schutzebene Zugriff von außen erlaubt
Zugriff nur innerhalb abgeleiteter Klassen
Standardeinstellung Zugriff innerhalb des Pakets erlaubt
Höchste Schutzebene Kein Zugriff von außen
Bestandteile einer Klasse können individuell geschützt werden
Übersicht
Zugriffsrecht
Zugriff aus
gleicher Klasse
Zugriff aus
gleichem Paket
Zugriff aus
Sub-Klasse
Zugriff aus
beliebiger Klasse
public
Ja
Ja
Ja
Ja
protected
Ja
Ja
Ja
Nein
package
Ja
Ja
Nein
Nein
privat
Ja
Nein
Nein
Nein
FH D
Fachhochschule Düsseldorf
Seite 40
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Zugriffskontrolle
Bespiel
Deklaration private verhindert unerwünschten Zugriff von außerhalb der Klasse
s1.name = "Peter";
kein Zugriff
möglich
class Student
{
private String name;
private int matrNr;
void drucken()
{
System.out.println("...");
}
stattdessen
Zugrifffunktionen
s1.setName("Peter");
void setName(String N)
{
name = N;
}
}
FH D
Fachhochschule Düsseldorf
Seite 41
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Übersicht
Java-Biographie
OOP mit Java
Klassen & Objekte
Botschaften
Vererbung & Polymorphie
Datenkapselung
Programmstruktur
FH D
Fachhochschule Düsseldorf
Seite 42
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Programmstruktur
Programmstart
Jede Applikation hat eine main()-Methode, die von der JVM aufgerufen wird
public class HelloWorld
{
public static void main(String [] args)
{
System.out.println("Hello World");
}
}
Erläuterungen
public static : Öffentliche Methode der spezifizierten Klasse (hier: HelloWorld)
void
: Methode ohne Rückgabewert
String[ ] args : Parameter, mit denen eine Applikation gestartet werden kann
Dateiname
Programm muss in einer Datei gespeichert sein, die den gleichen Namen trägt wie
die public-Klasse, verbunden mit der Erweiterung ".java" (hier: HelloWorld.java)
Hinweis: Innerhalb einer Datei gibt es nur eine öffentliche Klasse
FH D
Fachhochschule Düsseldorf
Seite 43
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Programmstruktur
Beispiel
Test der Klasse Student soll aus einer Klasse namens "Test" heraus erfolgen
Klasse Test enthält main() und erzeugt die beiden Objekte s1 und s2
Weiterhin wird den Objekten s1 und s2 die Botschaft drucken() gesendet
public class Test
{
public static void main(String [] args)
{
Student s1 = new Student("Axel", 1122);
Student s2 = new Student("Kati", 3344);
class Student
{
String name;
int matrNr;
Student(String N, int M)
{
name = N;
matrNr = M;
}
s1.drucken();
s2.drucken();
}
}
void drucken()
{
System.out.print("..");
}
Objekt erzeugen
Test
Botschaft senden
s1
s2
FH D
Fachhochschule Düsseldorf
Seite 44
Informatik für Ingenieure WS 2012/13
}
FB 5
Fachbereich Medien
Zeit für einen Tasse Java…
© Andy Short - Fotolia.com
FH D
Fachhochschule Düsseldorf
Seite 45
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien