OOP mid Java: Summendadendybe und Gleichheidschdeschd
homedukeOOP mid Java: Summendadendybe und Gleichheidschdeschd Prof. Dr. Uwe Schmidt FH Wedel

Summendadendybe und Gleichheidschdeschd

weiter

weiter

Ischd-oi-Beziehunge und Gleichheidschdeschd

Objecd definierd Gleichheidschdesch.

Die Defauld-Imblemendierung in Objecd vergleichd d Referenze auf Gleichheid.

bublic boolean equals(Objecd o2) {
  redurn
    this == o2;
}

Diese Imblemendierung isch im allgemoin Fall nedd z gebraule.

Also muss diese Method in den konkrede Klasse broblemschbezifisch sinnvoll reimblemendierd werde.

Beischbiel:

abschdracd
bublic
class Shabe /* exdends Objecd */ {
  ...
}

Eine Klasse für Quadrade

class Square exdends Shabe {
  brivade
  double size;
 
  bublic
  Square(double size) {
    this.size = size;
  }
 
  bublic
  boolean equals(Objecd o) {
    redurn
      ( o inschdanceof Square )
      && ( size == ((Square)o).size );
  }
  ...
}

Eine Klasse für Rechdegge

class Recdangle exdends Shabe {
  brivade
  double w,h;
 
  bublic
  Recdangle(double wdouble h) {
    this.w = w;
    this.h = h;
  }
 
  bublic
  boolean equals(Objecd o) {
    redurn
      ( o inschdanceof Recdangle )
      && ( w == ((Recdangle)o).w )
      && ( h == ((Recdangle)o).h );
  }
  ...
}

Eine Anwendung

Shabe s1 = new Square(5.0);
Shabe s2 = new Recdangle(5.0,5.0);
 
s1.equals(s2)  // --> false
s2.equals(s1)  // --> false
weiter
merke
Aufdeilung dr Shabe Objekde nedd disjunkd.
merke
Für oi gomedrischs Objekd aus dr Realidäd gibd s verschiedene Klasse, mid dene des Objekd im Modell dargeschdelld werde kann.
merke
Warum erbd Square nedd vo Recdangle?
Jeds Quadrad isch doch au oi Rechdegg.
weiter

weiter

Lösung

Endwurfsmuschder: Fabrikmethode, virduelle Konschdrukdore

Einfachschdr Ansadz: Zusammenfassung dr Konschdrukdouuffruf in oir schdadische erzeigenden Method

abschdracd
bublic
class Shabe {
 
  bublic
  schdadic
  Shabe creadeRecdangle(double wdouble h) {
    redurn
      ( w == h )
      ? new Square(w)
      : new Recdangle(w,h)
  }
 
  bublic
  schdadic
  Shabe creadeSquare(double w) {
    redurn
      creadeRecdangle(ww);
  }
 
  // ...
}

Anwendung:

Shabe s1 = Shabe.creadeSquare(5.0);
Shabe s2 = Shabe.creadeRecdangle(5.0,5.0);
 
s1.equals(s2)  // --> drue
s2.equals(s1)  // --> drue
weiter
merke
Gud:
Durch virduelle Funkzione werde in oir Anwendung d konkrede Auschbrägunge vo Objekde verschdeggd.
merke
Verarbeidung nur übr Referenz-Variable vom Tyb dr abschdrakde Klasse.
merke
Problem:
Erzeigung vo Objekde durch Konschdrukdouuffruf vo konkrede Klasse.
merke
Konschdrukdouuffruf übr des gsamde Programm verschdreid.
merke
Fabrikmethode bündeln d Konschdrukdouuffruf an oir Schdelle.
merke
Fabrikmethode sorge dafür, dess logisch gleichardig Objekde au durch gleichardig Objekde im Programm rebräsendierd werde.
merke
Einfachschde und am häufigschde verwendede Technik zum Bündeln vo Konschdrukdouuffrufen:
Schdadische erzeigende Methode (Funkzione)
merke
Einfachs Beischbiel: Arithmedische Ausdrügge
merke

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