FH D

Werbung
FH D
Fachhochschule Düsseldorf
University of Applied Sciences
Informatik 2
Objektorientierte Programmierung in Java
Prof. Dr.- Ing. André Stuhlsatz
FH D
Wiederholung: abstract
Fachhochschule Düsseldorf
University of Applied Sciences
 Der Modifikator abstract kann bei Methoden und Klassen verwendet
werden.
 abstract kennzeichnet, dass eine Klasse oder Methode noch nicht
vollständig implementiert ist (Prototyp).
 Ist eine Methode als abstract deklariert, dann muss auch die Klasse
abstrakt sein.
 Abstrakte Klassen können nicht instanziert werden!
 Von einer abstrakten Klassen kann abgeleitet werden, dann muss die
Subklasse alle abstrakten Methoden implementieren.
 Neben abstrakten Methoden können auch Attribute und implementierte
Methoden existieren. abstract class KlasseAbstract{
private String a;
public KlasseAbstract(String a) {
this.a = a;
}
public abstract void setzeNeu(String neu);
}
Informatik 2
2
FH D
Beipiel: Abstrakte Klasse
Fachhochschule Düsseldorf
University of Applied Sciences
Grafisches Objekt
Rechteck
Linie
Bézierkurve
Kreis
Grafische Objekte haben vieles gemeinsam:
 Zustände: Position, Orientierung und Farbe
 Verhalten: rotieren, bewegen, Größe ändern, zeichnen
Trotzdem implementieren grafischen Objekte ihr Verhalten zum Teil unterschiedlich.
Informatik 2
3
FH D
Fachhochschule Düsseldorf
University of Applied Sciences
Beipiel: Abstrakte Klasse
abstract class GrafischesObjekt{
protected int posX, posY;
…
protected bewegen(int neuX, int neuY){
…
}
abstract protected void zeichne();
abstract protected voide ändereGröße();
}
Subklassen müssen abstrakte Methoden implementieren!
final class Kreis extends GrafischesObjekt{
public void zeichne(){
…
}
public void ändereGröße(){
…
}
}
Informatik 2
4
FH D
Fachhochschule Düsseldorf
University of Applied Sciences
Coding Rule: Reihenfolge von Klassenelementen
Eine allgemein geläufige Reihenfolge der Elemente einer Klassendefinition ist
folgende:
1.
2.
3.
4.
5.
6.
Klassenattribute
Instanzattribute
Konstruktoren
Statische Methoden
Getter/Setter
Beliebige Methoden
 Innerhalb der einzelnen Blöcke wird in der Regel nach einschränkender
Sichtbarkeit sortiert.
Informatik 2
5
FH D
Fachhochschule Düsseldorf
University of Applied Sciences
Klassenhierarchie (Java API)
java.lang.Object
java.awt.Component
java.awt.Button
java.awt.Checkbox
java.awt.TextComponent
java.awt.TextArea
Informatik 2
java.awt.TextField
6
FH D
Anwendung Walzwerk
Fachhochschule Düsseldorf
University of Applied Sciences
Walzwerk (Prozesskette für den Werkstoff Stahl)
Objekte einer Walzstraße
Walzen
Walzensatz
Informatik 2
Gerüst
Walzstraße
7
FH D
Klasse Walzwerk (Java Anwendung)
Fachhochschule Düsseldorf
University of Applied Sciences
package walzwerk;
public class Walzwerk {
public static void main(String[] args) {
// Implementierung der Funktionalität eines Walzwerkes
}
}
 Alle Klassen die Objekte eines Walzwerkes definieren, liegen im package
walzwerk.
 Die Klasse Walzwerk ist unsere Anwendungsklasse mit main-Methode.
Informatik 2
8
FH D
Fachhochschule Düsseldorf
University of Applied Sciences
Klasse Walzstrasse
package walzwerk;
 Die Walzstraße ist ein Teil
eines Walzwerkes.
public class Walzstrasse {
private Gerüst[] gerüste;
 Eine Walzstraße besteht
aus Walzgerüsten.
public Walzstrasse(int anzahl) {…}
public Walzstrasse(Gerüst[] gerüste) {…}
 Überladener Konstruktor.
public void baueGerüst(int position, Gerüst gerüst) {…}
public void entferneGerüst(int position, Gerüst gerüst) {…}
public void zeigeGerüste() {…}
 Methoden der
Walzstraße.
}
Informatik 2
9
FH D
Gerüste
Fachhochschule Düsseldorf
University of Applied Sciences
Duo-Gerüst
Quarto-Gerüst
Informatik 2
Sexto-Gerüst
10
FH D
Vererbungshierarchie
Fachhochschule Düsseldorf
University of Applied Sciences
 Ein Duo, Quarto oder Sexto „ist ein“ Gerüst.
 Die Klassen Duo, Quarto und Sexto sollen durch Vererbung die Eigenschaften
und Methoden von der Klasse Gerüst erben.
 Zusätzlich können eigene Eigenschaften und Methoden definiert werden.
abstract class Gerüst
(Basisklasse/Superklasse)
class Duo
class Quarto
class Sexto
 Klassendiagramm:
 Der Pfeil zeigt auf die Basisklasse (auch Superklasse genannt)
Informatik 2
11
FH D
Fachhochschule Düsseldorf
University of Applied Sciences
Abstrakte Klasse Gerüst (Prototyp)
package gerüst;
public abstract class Gerüst {
protected double reibung;// Kundengeheimnis
protected double temperatur;// Kundengeheimnis
protected double drehmoment;// Kundengeheimnis
private int wartungsintervall;//in Monaten
private Walze[] walzensatz;
double banddicke, double
bandbreite
// Getter und Setter
…
protected Gerüst(int wartungInMonaten) {…}// nur Package oder Subklasse!
public void setzeUmlaufgeschwindigkeit(double umlaufgeschwindigkeit){…}
public abstract double simulationWalzkraft(double banddicke,
double bandbreite);
public void zeigeWalzensatz() {…}
}
Informatik 2
12
FH D
Klasse Duo
Fachhochschule Düsseldorf
University of Applied Sciences
package gerüst;
public class Duo extends Gerüst {
public Duo(int wartungInMonaten,
double arbeitswalzen_durchmesser) {…}
// Getter und Setter
…
@Override
public double simulationWalzkraft(double banddicke, double bandbreite) {
// Implementierung einer Simulation abhängig von banddicke, bandbreite
// und errechnetem Bandzug unter zur Hilfenahme von
// Reibung, Temperatur, Drehmoment und Umlaufgeschwindigkeit.
return 0.0;
}
}
Informatik 2
13
FH D
Fachhochschule Düsseldorf
University of Applied Sciences
Klasse Quarto
package gerüst;
public class Quarto extends Gerüst{
public Quarto(int wartungInMonaten,
double arbeitswalzen_durchmesser,
double stützwalzen_durchmesser) {…}
// Getter und Setter
@Override
public double simulationWalzkraft(double banddicke, double bandbreite) {
// Implementierung einer Simulation abhängig von banddicke, bandbreite
// und errechnetem Bandzug unter zur Hilfenahme von
// Reibung, Temperatur, Drehmoment und Umlaufgeschwindigkeit.
return 0.0;
}
Informatik 2
14
FH D
Fachhochschule Düsseldorf
University of Applied Sciences
Klassse Walze
package gerüst;
public class Walze {
private double durchmesser;// mm
private double umlaufgeschwindigkeit;// U/min
private double bandgeschwindigkeit;// m/s
private String hersteller;
private String id;
public Walze(String, String, double, double){…}
public Walze(String, double, double){…}
// Getter und Setter
public void zeigeInfo(){…}
private double berechneBandgeschwindigkeit(){…}
}
Informatik 2
15
FH D
Fachhochschule Düsseldorf
University of Applied Sciences
Klasse Sexto
Übung für Zuhause…
Informatik 2
16
Herunterladen