Post on 05-Apr-2015
transcript
Objektorientierte Programmierung mit Java unter BlueJ
Beziehungen zwischen Klassen/Objekten (Grundlagen):
VererbungObjektinteraktion
Christoph Oberweis 2008
Teil 2
2
Agenda
Vererbung Klassendiagramme Objekte erzeugen Abstrakte Klassen Objektinteraktion Objekte erzeugen Objekte Quellen
C.O.
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
3
Vererbung: Wo sie herkommt
C.O.
Das Entity-Relationship-Modell als semantisches Datenmodell kennt den is-a (ist-ein) Beziehungstyp: Ein Entitätstyp besitzt alle Attribute eines anderen Entitätstyps und zusätzlich noch andere Attribute.
Person hat z. B. die Attribute Name, Adresse, bei Mitarbeiter kommt z. B. das Eintritts-Datum in die Firma hinzu, Kunde könnte z. B. eine Angabe hinsichtlich der Bonität haben.
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
4C.O.
Vererbung: Generalisierung und Spezialisierung
Eine Klasse ist eine Spezialisierung einer anderen Klasse, wenn sie zusätzlich zu den Datenfeldern der anderen Klasse eigene besitzt (z.B. bei PKW: Attribut „Anzahl Türen“). Mit „ist ein“ wird das Verhältnis von Spezialisierung zu Generalisierung beschrieben.
Fahrrad ist ein Fahrzeug Kraftfahrzeug ist ein Fahrzeug PKW ist ein Kraftfahrzeug Kleinlaster ist ein Kraftfahrzeug
In der OOP wird eine Spezialisierung durch Vererbung realisiert.In der OOP wird eine Spezialisierung durch Vererbung realisiert.
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
5
Vererbung: UML-Notation
C.O.
Der Pfeil zeigt auf die Oberklasse, von der die Unterklasse „erbt“, d. h. die Oberklasse gibt Eigenschaften an diese weiter.
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
6
Beispiel 1
C.O.
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
7
Aufgabe 1
C.O.
1. Implementieren Sie bitte die drei Klassen der vorherigen Folie in BlueJ!
2. Nehmen Sie bitte in den Unterklassen folgende Veränderungen vor:
public class Werkzeug_einfach extends Artikel
public class Werkzeug_elektro extends Artikel
public class Werkzeug_einfach extends Artikel
public class Werkzeug_elektro extends Artikel
Die Konstruktoren der Unterklassen müssen die Datenfelder der Oberklasse mit berücksichtigen:
public Werkzeug_einfach(int aNum, String aBez, double nPreis, String dieGroesse, String dieAnwendung)
Im Konstruktor der Unterklassen:
super(aNum, aBez, nPreis);
Die Konstruktoren der Unterklassen müssen die Datenfelder der Oberklasse mit berücksichtigen:
public Werkzeug_einfach(int aNum, String aBez, double nPreis, String dieGroesse, String dieAnwendung)
Im Konstruktor der Unterklassen:
super(aNum, aBez, nPreis);
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
8
Programmtest
C.O.
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
9
Datenfelder der Oberklasse
C.O.
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
10
Methode – geerbt!
C.O.
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
11
Quellcode: Oberklasse
C.O.
public class Artikel{ private int artikelnummer; private String bezeichnung; private double nettopreis; public Artikel(int aNum, String aBez, double nPreis) { artikelnummer = aNum; bezeichnung = aBez; nettopreis = nPreis; }
public double bruttoAusgeben() { return nettopreis * 1.19; } }
public class Artikel{ private int artikelnummer; private String bezeichnung; private double nettopreis; public Artikel(int aNum, String aBez, double nPreis) { artikelnummer = aNum; bezeichnung = aBez; nettopreis = nPreis; }
public double bruttoAusgeben() { return nettopreis * 1.19; } }
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
12
Quellcode: Subklasse 1
C.O.
public class Werkzeug_einfach extends Artikel { private String groesse; private String anwendung;
public Werkzeug_einfach(int aNum, String aBez, double nPreis, String dieGroesse, String dieAnwendung) { super(aNum, aBez, nPreis); groesse = dieGroesse; anwendung = dieAnwendung; }}
public class Werkzeug_einfach extends Artikel { private String groesse; private String anwendung;
public Werkzeug_einfach(int aNum, String aBez, double nPreis, String dieGroesse, String dieAnwendung) { super(aNum, aBez, nPreis); groesse = dieGroesse; anwendung = dieAnwendung; }}
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
13
Quellcode: Subklasse 2
C.O.
public class Werkzeug_elektro extends Artikel { private int leistung; // in Watt private String zusatz; // z. B. Koffer ...
public Werkzeug_elektro(int aNum, String aBez, double nPreis, int dieLeistung, String derZusatz) { super(aNum, aBez, nPreis); leistung = dieLeistung; zusatz = derZusatz; }}
public class Werkzeug_elektro extends Artikel { private int leistung; // in Watt private String zusatz; // z. B. Koffer ...
public Werkzeug_elektro(int aNum, String aBez, double nPreis, int dieLeistung, String derZusatz) { super(aNum, aBez, nPreis); leistung = dieLeistung; zusatz = derZusatz; }}
Aufgabe: Versehen Sie bitte den Quellcode mit Kommentaren!Aufgabe: Versehen Sie bitte den Quellcode mit Kommentaren!
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
14
Schönheitsfehler
C.O.
1. Von der Oberklasse lässt sich ein Objekt erzeugen, obwohl das in der Regel eher wenig Sinn macht.
2. Ein direkter Zugriff auf die Datenfelder der Oberklasse aus den Subklassen wird verhindert („private“).
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
15
Schönheitsfehler: Reparatur
C.O.
Von der Oberklasse lässt sich ein Objekt erzeugen, obwohl das in der Regel eher wenig Sinn macht.
Abhilfe:
public abstract class Artikel
Verhindert, dass eine Instanz von „Artikel“ erzeugt werden kann!
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
16
Schönheitsfehler: Reparatur
C.O.
Ein direkter Zugriff auf die Datenfelder der Oberklasse aus den Subklassen wird verhindert („private“).
Lösung:
protected int artikelnummer;
protected String bezeichnung;
protected double nettopreis;
Zugriff für Subklassen möglich, Kapselung bleibt erhalten!
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
17
Beispiel 2
C.O.
preisMengegroesser10(): Berechnung des Mengenrabatts beim Kauf von mehr als 10 gleiche Artikel.
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
18
Lösung: Oberklasse
C.O.
public abstract class Artikel
{
protected int artikelnummer;
protected String bezeichnung;
protected double nettopreis;
public Artikel(int aNum, String aBez, double nPreis)
{
artikelnummer = aNum;
bezeichnung = aBez;
nettopreis = nPreis;
}
public double bruttoAusgeben()
{
return nettopreis * 1.19;
}
}
public abstract class Artikel
{
protected int artikelnummer;
protected String bezeichnung;
protected double nettopreis;
public Artikel(int aNum, String aBez, double nPreis)
{
artikelnummer = aNum;
bezeichnung = aBez;
nettopreis = nPreis;
}
public double bruttoAusgeben()
{
return nettopreis * 1.19;
}
}
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
19
Lösung: Subklasse 1
C.O.
public class Werkzeug_einfach extends Artikel
{
private String groesse;
private String anwendung;
public Werkzeug_einfach(int aNum, String aBez, double nPreis, String dieGroesse, String dieAnwendung)
{
super(aNum, aBez, nPreis);
groesse = dieGroesse;
anwendung = dieAnwendung;
}
public double preisMengegroesser10()
{
return (nettopreis * 0.9);
}
}
public class Werkzeug_einfach extends Artikel
{
private String groesse;
private String anwendung;
public Werkzeug_einfach(int aNum, String aBez, double nPreis, String dieGroesse, String dieAnwendung)
{
super(aNum, aBez, nPreis);
groesse = dieGroesse;
anwendung = dieAnwendung;
}
public double preisMengegroesser10()
{
return (nettopreis * 0.9);
}
}
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
20
Lösung: Subklasse 2
C.O.
public class Werkzeug_elektro extends Artikel
{
private int leistung; // in Watt
private String zusatz; // z. B. Koffer ...
public Werkzeug_elektro(int aNum, String aBez, double nPreis, int dieLeistung, String derZusatz)
{
super(aNum, aBez, nPreis);
leistung = dieLeistung;
zusatz = derZusatz;
}
}
public class Werkzeug_elektro extends Artikel
{
private int leistung; // in Watt
private String zusatz; // z. B. Koffer ...
public Werkzeug_elektro(int aNum, String aBez, double nPreis, int dieLeistung, String derZusatz)
{
super(aNum, aBez, nPreis);
leistung = dieLeistung;
zusatz = derZusatz;
}
}
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
21
Objektinteraktion
C.O.
Neben der Vererbung existiert noch ein weiteres wichtige Konzept hinsichtlich der Beziehungen zwischen Klassen.
Häufig ist es sinnvoll (und in der Praxis unumgänglich), ein Problem in Teilprobleme zu zerlegen.
Eine Rechnung setzt sich z. B. zusammen aus Rechnungskopf-Daten, Positionszeilen (gekaufte Artikel) und dem Rechnungsfuß.
Das Objekt Rechnung könnte also in diese drei „Bereiche“ zerlegt werden (Modularisierung).
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
22
Ein Beispiel
C.O.
Die Positionszeile mit den Artikeln muss jetzt „irgendwie“ zum Rechnungs-kopf in Beziehung gesetzt werden. Beachte: Das Konzept der Vererbung löst das Problem nicht!
Die Positionszeile mit den Artikeln muss jetzt „irgendwie“ zum Rechnungs-kopf in Beziehung gesetzt werden. Beachte: Das Konzept der Vererbung löst das Problem nicht!
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
23
Nutzer - Beziehung
C.O.
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Grundgedanke: Das Objekt „Rechnung“ erzeugt (automatisch) „Hilfsobjekte“, welche bestimmte Aufgaben übernehmen, z. B. Berechnung des Brutto-Betrags.
Das Objekt „Rechnung“ benutzt dann also das Objekt „Gesamtbetrag_rechnen“.
24
Der Rechnungsfuß
C.O.
Summe : 120,00 Euro
Abzüglich 3% Rabatt : 3,60 Euro
Nettobetrag : 116,40 Euro
MwSt. (19)% : 22,12 Euro
zu zahlender Rechnungsbetrag : 138,52 Euro
Summe : 120,00 Euro
Abzüglich 3% Rabatt : 3,60 Euro
Nettobetrag : 116,40 Euro
MwSt. (19)% : 22,12 Euro
zu zahlender Rechnungsbetrag : 138,52 Euro
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
25
Analyse
C.O.
Summe : 120,00 Euro
Abzüglich 3% Rabatt : 3,60 Euro
Nettobetrag : 116,40 Euro
MwSt. (19)% : 22,12 Euro
zu zahlender Rechnungsbetrag : 138,52 Euro
Summe : 120,00 Euro
Abzüglich 3% Rabatt : 3,60 Euro
Nettobetrag : 116,40 Euro
MwSt. (19)% : 22,12 Euro
zu zahlender Rechnungsbetrag : 138,52 Euro
Teilaufgaben, diese können ausgegliedert und getrennt erstellt werden: Modularisierung
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
26
Teilaufgaben sind Objekte
C.O.
Summe : 120,00 Euro
Abzüglich 3% Rabatt : 3,60 Euro
Nettobetrag : 116,40 Euro
MwSt. (19)% : 22,12 Euro
zu zahlender Rechnungsbetrag : 138,52 Euro
Summe : 120,00 Euro
Abzüglich 3% Rabatt : 3,60 Euro
Nettobetrag : 116,40 Euro
MwSt. (19)% : 22,12 Euro
zu zahlender Rechnungsbetrag : 138,52 Euro
Lösung der Teilaufgaben durch Objekte, die sich allerdings sehr ähnlich sind
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
27
Eine Klasse – mehrere Objekte
C.O.
Summe : 120,00 Euro
Abzüglich 3% Rabatt : 3,60 Euro
Nettobetrag : 116,40 Euro
MwSt. (19)% : 22,12 Euro
zu zahlender Rechnungsbetrag : 138,52 Euro
Summe : 120,00 Euro
Abzüglich 3% Rabatt : 3,60 Euro
Nettobetrag : 116,40 Euro
MwSt. (19)% : 22,12 Euro
zu zahlender Rechnungsbetrag : 138,52 Euro
Lösung der Teilaufgaben durch Objekte, die sich allerdings sehr ähnlich sind
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
28
Lösung: „Die Klasse zum Rechnen“
C.O.
public class Betrag_berechnen
{
private int proz;
public Betrag_berechnen(int prozent)
{
proz = prozent;
}
public double rech_und_gibBetrag(double betrag)
{
return ((betrag * proz) / 100) + betrag;
}
}
public class Betrag_berechnen
{
private int proz;
public Betrag_berechnen(int prozent)
{
proz = prozent;
}
public double rech_und_gibBetrag(double betrag)
{
return ((betrag * proz) / 100) + betrag;
}
}
Mwst oder RabattVererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
29
Ein Objekt erzeugt Objekte:
C.O.
public class Rechnung
{
private Betrag_berechnen rab;
private Betrag_berechnen mwst;
private double nettorab;
private double endBetrag;
public Rechnung()
{
rab = new Betrag_berechnen (-3);
mwst = new Betrag_berechnen (19);
}
public void rechne_und_aktualisiere(double nettoPreis)
{
nettorab = rab.rech_und_gibBetrag(nettoPreis);
endBetrag = mwst.rech_und_gibBetrag(nettorab);
}
}
public class Rechnung
{
private Betrag_berechnen rab;
private Betrag_berechnen mwst;
private double nettorab;
private double endBetrag;
public Rechnung()
{
rab = new Betrag_berechnen (-3);
mwst = new Betrag_berechnen (19);
}
public void rechne_und_aktualisiere(double nettoPreis)
{
nettorab = rab.rech_und_gibBetrag(nettoPreis);
endBetrag = mwst.rech_und_gibBetrag(nettorab);
}
}
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
30
Und wie funktioniert es?
C.O.
private Betrag_berechnen rab;
private Betrag_berechnen mwst;
rab = new Betrag_berechnen (-3);
mwst = new Betrag_berechnen (19);
nettorab = rab.rech_und_gibBetrag(nettoPreis);
endBetrag = mwst.rech_und_gibBetrag(nettorab);
private Betrag_berechnen rab;
private Betrag_berechnen mwst;
rab = new Betrag_berechnen (-3);
mwst = new Betrag_berechnen (19);
nettorab = rab.rech_und_gibBetrag(nettoPreis);
endBetrag = mwst.rech_und_gibBetrag(nettorab);
Erklären Sie bitte die oben stehenden vier Code-Zeilen!
Versehen Sie bitte den Quellcode mit Kommentaren!
Hilfe: Quellenangabe am Ende dieser Präsentation
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
31
Objektinteraktion in Aktion!
C.O.
1. Rechnung „benutzt“ Betrag_berechnen(in BlueJ dargestellt als gestrichelter Pfeil)
1. Rechnung „benutzt“ Betrag_berechnen(in BlueJ dargestellt als gestrichelter Pfeil)
2. Test2. Test 3. Es funktioniert!3. Es funktioniert!
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
32
Quellen
C.O.
Balzert, Helmut: Lehrbuch Grundlagen der Informatik.- Spektrum Verlag
Barnes, D. u. Kölling, M.: Java lernen mit BlueJ.- Pearson-Verlag
Das BlueJ Tutorial http://www.bluej.org/download/download.html
http://jerry.c-lab.de/java/21Tage/kap02.htm
http://openbook.galileocomputing.de/javainsel7/javainsel_06_006.htm#mje036077517a5d928d3e7974ed4ca9777
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen
Vererbung
Klassen- diagramme
Objekte erzeugen
Abstrakte Klassen
Objektinter-aktion
Objekte erzeugen Objekte
Quellen