Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Erben von parametrischen Klassen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
09.04.2016, 20:47 Uhr
ao

(Operator)



Zitat von Tetje:
Hallo,

ist schon sehr blöde ich habe sehr drauß geachtet und bin meinen Code mehrfach durchgegangen und habe ihn mit deinem Verglichen, und das mehrfach aber es ändert nichts am Problem.

Naja zur Frage, ob man Trible sinnvoll von Pair eben lassen kann. Worin unterscheiden sich den Triple und Pair, was ist denn fundamental anders? Hat denn Pair Eigenschaften die Triple nicht hat?
Das sind nun die Frage, die ich mir stelle und für mich siehts nun so aus... Pair hat alle Eigenschaften die auch Triple hat... im Sinne der Informatik die selben Attribute und überladen auch die selben Operatoren... Was ist der Unterschied, nun Pair hat zwei Attribute und Triple drei, sollange ich gewähre(n kann), dass die ersten zwei Attribute vom selben Typ sind wie die beiden Attibute von Pair, dann kommen mit der Vererbung nur noch das eine Attribut drauß und die Möglichkeit mit anderen Triples zu vergleichen... Wobei man auch hier eingentlich sicherstellen müsste, das deren Typen gleich sind, oder zumindest ähnlich...
Für mich klingt das also schon sehr nach einem sinnvollem Beispiel für Vererbung, oder was spricht aus deiner Sicht dagegen?


Eben, ein Pair hat zwei Elemente, ein Triple hat drei. Würdest du auch Dreirad von Fahrrad ableiten? Oder 50-Euro-Schein von 20-Euro-Schein?

Eine Ableitung ist sinnvoll, wenn die abgeleitete Klasse eine Spezialisierung der Basisklasse ist. Zum Beispiel wäre Auto eine Ableitung von Fahrzeug, und Bus ebenso. Aber Bus ist keine Ableitung von Auto, zumindest nicht mit der Begründung, dass der Bus alle relevanten Eigenschaften vom Auto hat (5 Sitze) und noch weitere (45 Sitze).

Pair und Triple sind nicht nur ähnlich, sie sind sogar fast gleich. Sie unterscheiden sich nur in der Anzahl der Attribute. So wie ein zwei- und ein dreidimensionaler Vector, die würde man ja auch nicht in eine Ableitungsbeziehung zueinander setzen. So gesehen wäre der Ansatz der STL (std::tuple) richtig.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
11.04.2016, 09:34 Uhr
ao

(Operator)



Zitat von Tetje:
solange ich gewähre(n kann), dass die ersten zwei Attribute vom selben Typ sind wie die beiden Attibute von Pair, dann kommen mit der Vererbung nur noch das eine Attribut drauß und die Möglichkeit mit anderen Triples zu vergleichen... Wobei man auch hier eingentlich sicherstellen müsste, das deren Typen gleich sind, oder zumindest ähnlich...

Das garantiert dir der Compiler, wahrscheinlich sogar strenger als dir lieb ist. Versuch doch mal, ein Pair<int, int> mit einem Pair <int, double> zu vergleichen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
12.04.2016, 22:21 Uhr
Tetje



Eines der Standardbeispiele für Vererbung ist zum Beispiel das Quadrat als Supertyp vom dem sich der Subtyp Reckteck ableitet. Der eine Seite mehr hat. Denn Ein Rechteck ist ja kein Quadrat...
Nach deiner Beschreibung sollten eigentlich beide nicht von einander erben... sondern vielleicht eher von einer Schnittstelle Fläche?
Verstehe ich dich richtig?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
13.04.2016, 08:07 Uhr
~global
Gast


Hallo,

anders herum wird ein Schuh draus ...

du kannst das Quadrat vom Rechteck ableiten, da jedes Quadrat auch ein Rechteck ist.
also: Fläche -> Viereck -> Rechteck -> Quadrat

Und in meiner Welt hat ein Quadrat genauso viele Seiten wie ein Rechteck ;-)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
13.04.2016, 11:11 Uhr
Tommix




Zitat von ~global:
Hallo,

anders herum wird ein Schuh draus ...

du kannst das Quadrat vom Rechteck ableiten, da jedes Quadrat auch ein Rechteck ist.
also: Fläche -> Viereck -> Rechteck -> Quadrat

Und in meiner Welt hat ein Quadrat genauso viele Seiten wie ein Rechteck ;-)

Hallo,
ein Musterbeispiel für "Irrtum":
https://de.wikipedia.org/wiki/Liskovsches_Substitutionsprinzip

Gruß,
Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
13.04.2016, 12:15 Uhr
ao

(Operator)


Und hier wird das Ganze an einem Beispiel erläutert (Kreis / Ellipse, ist ja genau das gleiche wie Quadrat und Rechteck): https://de.wikipedia.org/wiki/Kreis-Ellipse-Problem

Interessant finde ich, dass man für beide Ableitungsrichtungen (Rechteck <-- Quadrat und Quadrat <-- Rechteck) gute Gründe anführen kann. Das ist ein deutlicher Hinweis darauf, dass es wohl nicht so einfach ist, wie es naiv betrachtet den Anschein hat.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: