Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten...

32
Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis 2008 Teil 2

Transcript of Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten...

Page 1: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

Objektorientierte Programmierung mit Java unter BlueJ

Beziehungen zwischen Klassen/Objekten (Grundlagen):

VererbungObjektinteraktion

Christoph Oberweis 2008

Teil 2

Page 2: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 3: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 4: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 5: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 6: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 7: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 8: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 9: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 10: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 11: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 12: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 13: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 14: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 15: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 16: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 17: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 18: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 19: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 20: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 21: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 22: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 23: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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“.

Page 24: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 25: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 26: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 27: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 28: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 29: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 30: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 31: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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

Page 32: Objektorientierte Programmierung mit Java unter BlueJ Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis.

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