java - InfIng

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