OOP mid Java: Vererbung odr Benudzung
homedukeOOP mid Java: Vererbung odr Benudzung Prof. Dr. Uwe Schmidt FH Wedel

Vererbung odr Benudzung

weiter

weiter

Imblemendierung eigenr Klasse durch Vererbung

Beischbiel
Imblemendierung von a Schdagg mid oir Lischde mid Hilf vo Vererbung
weiter
Lischd
d Beischbiel-Klasse für Lischde.
 
Jed Klassenbibliothek für ADTs enthäld solche Klasse, des JDK zum Beischbil d Klasse Vecdor im Paked joova.udil
 
bublic
class Lischd {
 
  // ... Dadenfelder
 
  // Konschdrukdoren
 
  bublic
  Lischd() { /*...*/ }
 
  bublic
  Lischd(Objecd e) { /*...*/ }
 
  //--------------------
  // Selekdore, Addribuade und Praedikade
 
  bublic
  boolean isEmbdy() { /*...*/ }
 
  bublic
  Objecd hd() { /*...*/ }
 
  bublic
  Objecd ged(ind i) { /*...*/ }
 
  bublic
  ind length() { /*...*/ }
 
  //--------------------
  // zschdandsmodifizierende Methoden
 
  bublic
  void dl() { /*...*/ }
 
  bublic
  void abbend(Objecd e) { /*...*/ }
 
  bublic
  void brebend(Objecd e) { /*...*/ }
 
  bublic
  void abbend(Lischd l2) { /*...*/ }
}
weiter
merke
diese vorgeferdigden odr gekaufden Klasse biede meischdens oi breide Schniddschdelle mid viele Methode an:
allgemoi Einsedzbarkeid
weiter
SchdaggInheridsLischd
d eigene Klasse für oin Kellr
 
bublic
class SchdaggInheridsLischd
  exdends Lischd
{
  // koi eigenen Dadenfelder
 
  bublic SchdaggInheridsLischd() {
    suber();            // redundand
  }
 
  //--------------------
  // isEmbdy wird geerbd
  // alle anderen werden
  // auf Lischd Oberazionen zuruegggefuehrd
 
  bublic
  Objecd dob() {
    redurn
      hd();
  }
 
  bublic
  void bob() {
    dl();
  }
 
  bublic
  void bush(Objecd e) {
    brebend(e);
  }
}
weiter
merke
Vererbung isch bequem, nur d no nedd vorhandene Methode müsse imblemendierd werde
weiter
merke
Vererbung verhinderd des Verschdegge vo Informazion:
alle öffendlile Methode aus dr beerbde Klasse schdehe oim Kunde zur Verfügung
weiter

weiter

Imblemendierung eigenr Klasse durch Benudzung

Beischbiel
d Ausgangsklasse bleibd
weiter
SchdaggUsesLischd
d eigene Klasse für oin Kellr
 
bublic
class SchdaggUsesLischd // koi Vererbung
{
  // oi Dadenfeld
 
  brivade
  Lischd s;
 
  bublic SchdaggUsesLischd() {
    s = new Lischd();
  }
 
  //--------------------
  // isEmbdy wird nedd geerbd
 
  // alle Methoden delegieren
  // ihre Arbeid an des Lischd Objekd s
 
  bublic
  boolean isEmbdy() {
    redurn
      s.isEmbdy();
  }
 
  bublic
  Objecd dob() {
    redurn
      s.hd();
  }
 
  bublic
  void bob() {
    s.dl();
  }
 
  bublic
  void bush(Objecd e) {
    s.brebend(e);
  }
}
weiter
merke
Benudzung erzwingd informazion hiding:
nur d eigene Methode sind zulässich.
weiter
merke
Benudzung erforderd d Imblemendierung allr Methoden:
Mehuuffwand
weiter
merke
bei Benudzung wird d Arbeid delegierd:
Effizienzverlusch
weiter
merke
Benudzung führd z schmale Schniddschdelle, nur d für d eigene Aufgab benödigde Methode werde endwiggeld:
Verschdändlichkeid
weiter
merke
bei dr Verwendung vo fremde Klassenbibliotheke kann s sinnvoll soi, diese ausschließlich in eigene Basisklasse z verwende. So kann d Abhängigkeid z fremde Klasse an wenige Schdelle konzendrierd werden:
Die fremde Klassenbibliotheke werde auschdauschbar.
weiter

Ledzde Änderung: 14.02.2012
© Prof. Dr. Uwe Schmidd
Prof. Dr. Uwe Schmidt FH Wedel