Übersicht

  => Vererbung?
  => Die Klasse BankKontoExt
  => UML
  => Beispiele
  => Aufgaben


Vererbung?

Vererbung kennst du aus Bio (Stammbaum der Artverwandschaften) oder aus dem täglichen Leben (Eltern vererben ein Vermögen oder dein Stammbaum). Und diese Idee der Vererbung kann man fürs Programmieren nutzen! Grundlegend für die Vererbung ist die Eltern-Kind-Relation: 'irgendwie' werden Eigenschaften von den Eltern auf das Kind vererbt. Was könnte man beim Programmieren vererben? Ganz einfach: Eine Klasse besteht aus Methoden und Eigenschaften und die können vererbt werden! An dieser Stelle die zentrale Frage: Welche Eigenschaften gibt es in der Klasse BankKonto.java?

______________________________________________________

Und welche Methoden stellt die Klasse BankKonto.java zur Verfügung?

______________________________________________________

______________________________________________________

______________________________________________________

In Java funktioniert Vererbung so: Ein Klasse kann mehrere Kinder haben, man sagt hier Subklassen, umgekehrt kann eine Subklasse aber nur eine Elternklasse haben! Die Elternklasse nennt man auch Superklasse, manche sprechen an dieser Stelle auch gerne von Vorgänger und Nachfolger. Und wie sagt man Java, dass eine Klasse eine andere beerben soll? So:

class BankKontoExt extends BankKonto

Das Zauberwort hier ist extends, wir schauen uns ein Beispiel an . . .

<<<

Die Klasse BankKontoExt

Zuerst das UML-Klassendiagramm:

Welche neuen Eigenschaften hat die Klasse BankKontoExt.java?

______________________________________________________

Und welche neuen Methoden stellt die Klasse BankKontoExt.java zur Verfügung?

______________________________________________________

______________________________________________________

______________________________________________________

Gibt es in der Klasse BankKontoExt.java Konstruktoren? Wenn ja, welche?

______________________________________________________

Wer will, kann seine Antworten auch anhand des Quelltextes überprüfen: http://www.wspiegel.de/upl/BankKontoExt.html, vergleiche im übrigen die Aufgaben.

<<<

UML

In UML wird Vererbung durch einen Pfeil gekennzeichnet, üblich ist neben der Darstellung oben auch die folgende:

Beachte: Der Pfeil geht von der Subklasse (Welche?) zur Superklasse (Welche?), oder: der Pfeil geht von der Unterklasse zur Oberklasse!

<<<

Beispiele

findest du im Lehrer-Ordner rechts oben auf dem Desktop unter wspiegel u. s. w.; alternativ: http://www.wspiegel.de/upl/BankKontoExt.html

<<<

Aufgaben

  1. Welchen Typ gibt die Methode sichereAuszahlung die Klasse BankKontoExt zurück, und wo wird die Methode in der Klasse benutzt?
    Welchen Sinn kann diese Vorgehensweise haben?

  2. In der Klasse BankKontoExt will man auch auf die Klasse BankKonto zugreifen, das Zauberwort ist hier super, Beispiel:
    super.anzeigen(); .
    Überprüfe, an welchen Stellen die Klasse BankKontoExt auf die Klasse BankKonto zugreift.


  3. Nimm deine Bankanwendung vom letzten Mal (BankApp.java) und benutze diesmal ausschließlich (!) die Aufrufe der Klasse BankKontoExt. Probiere auch die Methode ueberweisung, Testlauf:
    tk1: Kontostand=305.0
    tk2: Kontostand=100.0
    Überweise 33.0
    tk1: Kontostand=338.0
    tk2: Kontostand=67.0
    
    PS: Wie kann man eigentlich die Namen der Bankkonten ausgeben?

  4. Zeit zum erben: Schreibe deine Klasse TaschengeldKonto.java vom letzten Mal so um, dass sie die Klasse BankKontoExt beerbt (Superklasse: ________________, Subklasse: ______________), verpflichtend ist die Benutzung von extends

  5. Wie sieht das UML-Diagramm der Klasse TaschengeldKonto aus?

  6. Testen wir deine neue Klasse TaschengeldKonto: Schreibe eine neues Anwendungsprogramm BankApp2.java, in der du die Klasse TaschengeldKonto ausgiebig prüfst! Was passiert bei Überweisungen?

<<<
    W. Spiegel, Kontakformular