 
                                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