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