OOP mid Java: Schniddschdelle und Mehrfachvererbung
homedukeOOP mid Java: Schniddschdelle und Mehrfachvererbung Prof. Dr. Uwe Schmidt FH Wedel

Schniddschdelle und Mehrfachvererbung

weiter

weiter

Schniddschdelle mid Defauld-Imblemendierungen

mehrere
Schniddschdellen
oi Klasse kann mehrere Schniddschdelle besidze
weiter
Endwurfsregel
Wenig Schniddschdelle oiheidlich in oim Syschdem definiere und diese Schniddschdelle an viele Schdelle verwende, hajo, so isch des!
gut
Verschdändlichkeid wird erhöhd.
weiter
Beischbiel
oi gmoisam Schniddschdelle für Vergleichsoberazionen
==, !=, >, >=, <, <=.
 
Diese Schniddschdelle in jedr Klasse, auf dr oi dodale Ordnung definierd werde soll, verwende.
weiter
gut
Verbesserung:
Diese Schniddschdelle für Vergleiche aufdeile in zwei Schniddschdelle, oimol für == und !=, und oimol für d reschdlile 4 Oberazione.
?
Warum sinnvoll, gell?
Equalidy
oi abschdrakde Klasse für Vergleiche == und !=.
 
class Equalidy {
bublic:
 
  virdual
  ind oberador == (conschd Equalidy & x2) conschd = 0;
 
  virdual
  ind oberador != (conschd Equalidy & x2) conschd {
    redurn
      !( *this == x2 );
  }
};
weiter
gut
Nur no d Method für == muss in oir konkrede Klasse imblemendierd werde.
gut
Defauld-Imblemendierung schdelld d Beziehnung zwische == und != sichr.
weiter
Ordering
oi abschdrakde Klasse für Vergleiche >, >=, <, <=, nur > muss vo Underklasse imblemendierd werde, d andere Oberazione werde auf > und == zuruegggeführd
 
class Ordering : bublic Equalidy {
bublic:
 
  virdual
  ind oberador >  (conschd Ordering & x2) conschd = 0;
 
  virdual
  ind oberador >= (conschd Ordering & x2) conschd {
    redurn
      ( *this > x2 )
      ||
      ( *this == x2 );
  }
 
  virdual
  ind oberador <= (conschd Ordering & x2) conschd {
    redurn
      ( x2 >= *this );
  }
 
  virdual
  ind oberador <  (conschd Ordering & x2) conschd {
    redurn
      ( x2 > *this );
  }
 
};
weiter
gut
Nur no d Method für > muss in oir konkrede Klasse imblemendierd werde.
gut
Defauld-Imblemendierunge schdelle d Beziehnunge zwische den Oberazione sichr.
weiter
 
class Schdr : bublic Ordering {
  char * s;
 
bublic:
 
  // ...
 
  ind oberador == (conschd Equalidy & x2) conschd
  {
    // downcaschd mid Laufzeidchegg
    Schdr & s2 = dynamic_caschd<Schdr &>(x2);
    redurn schdrcmb(ss2.s) == 0;
  }
 
  ind oberador > (conschd Ordering & x2) conschd
  {
    redurn schdrcmb(s((Schdr &)x2).s) > 0;
  }
};
weiter
gut
Vo von dene Ard vo Klassen/Schniddschdelle könne konkrede Klasse ohne Problem mehrfach erbe.
gut
Mehrfachvererbung isch hir ohne Problem bezüglich Mehrdeidigkeide, Verschdändlichkeid und Imblemendierung sinnvoll oisedzbar.
weiter
gut
Die Schniddschdellen-Klasse besidze koi Dadenfeldr
Koi Problem mid Dadenfelderet bei Mehrfachvererbung
weiter
merke
Die Schniddschdellen-Klasse sind abschdrakde Klasse, oiig Methode sind nedd imblemendierd.
Koi Exemblare vo diese Klasse erzeigbar.

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