![]() |
unterschied VERERBUNG & POLYMORPHIE
hallo leute,
mir steht morgen eine infoklausur bevor und ich ahbe beim lernen gerade ein problem gefunden... ich verstehe alles was es mit mehreren units und klassen auf sich hat, kann es auch anwenden aber nun bin ich über die worte polymorphie und vererbung gestolpert... ich kann damit nichts anfangen... ich weiß nicht genau worin da der unterschied besteht und wie man den unteschied erkennt... könnt ihr mir vllt helfen?! mfg speedax23 |
Re: unterschied VERERBUNG & POLYMORPHIE
Hilft Dir der
![]() |
Re: unterschied VERERBUNG & POLYMORPHIE
ehrlich gesagt nein ich weiß das das beides was damit zu tun hat das man vorherig geschaffene sachen auch in anderen verwenden kann... aber was genau is der unterschied ...kann ja nich das einzige sein das polymorphie immer was mit virtual und abstrakt zutun hat... iw ie muss ich ihm die sache morgen ja nachweisen und begründen könne...
|
Re: unterschied VERERBUNG & POLYMORPHIE
Ich würde sagen, beides ist eng miteinander verknüpft, ich bin kein Experte was solche Definitionen angeht, also nagel mich bitte nicht darauf fest, ich kann dir nur sagen, wie ich diese Bezeichnungen auffassen würde.
Vererbung ist es, wenn ich eine Klasse von einer anderen ableite, um neue Funktionen hinzuzufügen, also die Klasse zu erweitern. Polymorphie ist es, wenn ich die Basisklasse eigentlich als Schnittstelle verwende, um auf diese abgeleiteten Klassen zuzugreifen. Ich könnte z.b. die Klasse TFahrzeug mit der Methode "Fahre" deklarieren, dann TAuto und TFahrrad davon ableiten und erst in diesen Klassen die Methode implementieren (bzw. überschreiben). Weil beide den gleichen Vorfahren haben, brauche ich nicht zu wissen, um was es sich bei einem x-beliebigen Fahrzeug handelt, und kann trotzdem "Fahre" aufrufen. IMO einer der größten Vortteile von OOP.
Delphi-Quellcode:
interface
types TFahrzeug = class procedure Fahre; virtual; // virtual ist hier wichtig, erzwingt "Späte Bindung", was für's Überschreiben notwendig ist end; // Vererbung: (hier wird allerdings nur eine leere Methode geerbt) TAuto = class(TFahrzeug) procedure Fahre; override; end; TFahrrad = class(TFahrzeug) procedure Fahre; override; end; implementation procedure TFahrzeug.Fahre; // wenn man sowas vermeiden will soltle man natürlich abstract benutzen begin end; procedure TAuto.Fahre; begin ShowMessage('Ich bin ein Auto'); end; procedure TFahrrad.Fahre; begin ShowMessage('Ich bin ein Fahrrad'); end; // Polymorphie: var UnbekanntesFahrObjekt: TFahrzeug; begin UnbekanntesFahrObjekt := TAuto.Create: UnbekanntesFahrObjekt.Fahre; UnbekanntesFahrObjekt.Free; UnbekanntesFahrObjekt := TFahrrad.Create: UnbekanntesFahrObjekt.Fahre; UnbekanntesFahrObjekt.Free; end |
Re: unterschied VERERBUNG & POLYMORPHIE
also würdest du die bezeichnung vererbung als ein nutzen besetehender und dannd as verändern bezeichnen und als polymorphie das nutzen nur an sich?
|
Re: unterschied VERERBUNG & POLYMORPHIE
Vererbung ist für mich an sich einfach das Ableiten einer Klasse von einer anderen. Polymorphie ist es, wenn ich über einen Vorfahren auf ein Objekt zugreife bzw. einer Variable die Instanz einer vom typen der Variable abgeleiteten Klasse zuweise.
|
Re: unterschied VERERBUNG & POLYMORPHIE
habs nichso mit fachbegriffen muss ich sagen... aber is das nich das was ich gerade meinte oder lieg ich falsch?
|
Re: unterschied VERERBUNG & POLYMORPHIE
Zitat:
|
Re: unterschied VERERBUNG & POLYMORPHIE
*verdammt* ... naja ich versuchs nochmal also cih erstelle eine klasse... dann leite ich eine andere klasse von dieser ab... das ist vererbung...glaub ich(?)... und wenn ich diese abgeleitete dann verwende und mit ner ausgabe verknüpfe is das polymorphie????
|
Re: unterschied VERERBUNG & POLYMORPHIE
Polymorphie bedeutet zum Beispiel, dass eine procedure / function mehrfach mit dem selben Namen vorhanden sein kann, aber zum Beispiel einen anderen rückgabewert liefert.
edit: polymorphie ist natürlich KEINE Mehrfachvererbung. |
Re: unterschied VERERBUNG & POLYMORPHIE
gut, keine ahnung was interfaces sind aber wir haben die ganze sache in verbindung mit einer unit in der wir ne klasse erstellen und meinetwegen dort beschreiben wie die variable eingeliefert wird mithilfe einer pocedure und in einer anderen unit im selben projekt nutzen wir dann die klasse ausm ersten als basisklasse für eine 2. und bums soll das wohl vererbung und/oder polymorphie vom fachbegriff her sein
|
Re: unterschied VERERBUNG & POLYMORPHIE
Zitat:
![]() @speedax:
Delphi-Quellcode:
Und bitte gib dir mehr Mühe mit deinen Beiträgen. Ich habe teilweise echt Mühe zu verstehen, was du sagen willst, und deine Beiträge strotzen nur so vor Tippfehlern. Du willst schließlich was von uns, also bitte mache es den Menschen, die dir helfen wollen nicht unnötig schwer.
// bezieht sich auf meinen code von oben
var Fahrzeug: TAuto; begin Fahrzeug := TAuto.Create; Fahrzeug.Fahre; Fahrezeug.Free; end; // Das ist KEINE Polymorphie (jedenfalls nach meiner Definition) // Folgendes IST Polymorphie: var Fahrzeug: TFahrzeug; begin Fahrzeug := TAuto.Create; Fahrzeug.Fahre; Fahrezeug.Free; end; // Siehst du den Unterschied? |
Re: unterschied VERERBUNG & POLYMORPHIE
![]() Wichtig ist in diesem Zusammenhang auch noch das Konzept virtueller Methoden/Klassen, die in der Regel Polymorphie ermöglichen. Vererbung und Polymorphie sind also keine nebeneinander stehenden Konzepte, sondern Polymorphie kann in einer Vererbungshierachie gegeben sein, oder auch nicht. Edit: Namenlozer liegt nicht ganz daneben übrigens. Was du zeigst, ist wie eine Polymorphie angewendet aussehen kann, es ist aber nicht klar, dass bei dir TFahrzeug die Methode Fahre der Klasse TAuto aufruft - dann wäre diese nämlich polymorph. Sie könnte aber auch einfach überschrieben/reintroduced sein! |
Re: unterschied VERERBUNG & POLYMORPHIE
ich sehe ihn tfahrzeug und taut...aber warum ist das untere welche und das obere nicht ...weil die klasse auf die du dich beziehst tfahrzeug ist?
|
Re: unterschied VERERBUNG & POLYMORPHIE
kann ich das so erklären?
wenn ich sage ich habe eine klasse eins function rechnen(addiet 2 zahlen) und ich leite jetzte die klasse einsplus ab dann hat die ja auch die function rechnen geerbt wenn ich aber will das die function rechnen auch subtrahiert oder nur subtrahiert dann definiere cih die mit diesem override neu...is das dann plymorphie? |
Re: unterschied VERERBUNG & POLYMORPHIE
Zitat:
@speedax: Bitte keine Doppel-Posts. [EDIT] (verdammt, ich bin langsam) Zitat:
Ich habe es mal etwas abgeändert:
Delphi-Quellcode:
[/EDIT]
interface
types TFahrzeug = class procedure MacheGeraeusch; virtual; abstract; procedure Fahre; end; TAuto = class(TFahrzeug) procedure MacheGeraeusch; override; end; TFahrrad = class(TFahrzeug) procedure MacheGeraeusch; override; end; implementation procedure TFahrzeug.Fahre; begin ShowMessage('Start'); MacheGerauesch; ShowMessage('Ziel erreicht'); end; procedure TAuto.MacheGeraeusch; begin ShowMessage('Brumm'); end; procedure TFahrrad.MacheGeraeusch; begin ShowMessage('Quietsch?'); end; var UnbekanntesFahrObjekt: TFahrzeug; begin UnbekanntesFahrObjekt := TAuto.Create: UnbekanntesFahrObjekt.Fahre; UnbekanntesFahrObjekt.Free; UnbekanntesFahrObjekt := TFahrrad.Create: UnbekanntesFahrObjekt.Fahre; UnbekanntesFahrObjekt.Free; end |
Re: unterschied VERERBUNG & POLYMORPHIE
Zitat:
Delphi-Quellcode:
An der Stelle *** wird TOneDerivate.Foo ausgeführt, obwohl TBaseClass.Foo aufgerufen wird. Das ist Polymorphie.TBaseClass = class private public procedure Foo; virtual; abstract; end; TOneDerivate = TBaseClass private public procedure Foo; override; end; implementation var AnObject: TBaseClass; TOneDerivate.Foo; begin DoSomething; end; begin AnObject := TBaseClass.Create; AnObject.Foo; // *** end; |
Re: unterschied VERERBUNG & POLYMORPHIE
wo hab ich doppelgepostet?
was haltet ihr von meiner erklärung mit dem rechnen-beispiel |
Re: unterschied VERERBUNG & POLYMORPHIE
1) Auf Seite 1 ganz unten
2) Das Beispiel ist falsch. Das ist lediglich Überschreiben, und wenn du die Methode auf einer Variablen der Basisklasse (eins) aufrufst, wird auch diese ausgeführt, und nicht die von einsplus, was bei Polymorphie passieren müsste. |
Re: unterschied VERERBUNG & POLYMORPHIE
Zitat:
Bitte guck dir noch mal den editierten Teil meiner obigen Nachricht an. Vielleicht ist es so verständlicher. |
Re: unterschied VERERBUNG & POLYMORPHIE
Tut mir ja leid, aber mir geht ganz schön die "Muffe" da hab ich persönlich nicht so auf die Formulierung geachtet und werde in Zukunft darauf achten.
Mein Problem ist einfach nur das ich es immmernoch nicht begriffen habe weil ich nicht klar trennen kann worin jetzt anhand eines Beispiels der Unterschied besteht. Haltet mich für blöde, aber sonst bin ich was das Programmieren angeht eigentlich ganz gut ... halt so gut wie man nach 3 Jahren LEistungskurs Info ist... aber diese 2 Worte machen mich WAHNSINNIG. |
Re: unterschied VERERBUNG & POLYMORPHIE
Zitat:
Was ist der Unterschied zwischen Microsoft und Windows? |
Re: unterschied VERERBUNG & POLYMORPHIE
Zitat:
Delphi-Quellcode:
function MachWas(A: Integer): Integer; overload;
function MachWas(A: String): Integer; overload; // Geht, Parametertyp unterschiedlich function MachWas(A: Integer; B: String): Integer; overload; // Geht, Parameteranzahl unterschiedlich function MachWas(B: Integer; A: String): Integer; overload; // Geht nicht. Namen sind egal. Anzahl, Reihenfolge und Datentypen sind gleich --> gleiche Signatur --> Fehler function MachWas(A: String): String; overload; // Geht nicht. Rückgabewert gehört nicht zur Signatur --> gleiche Signatur --> Fehler |
Re: unterschied VERERBUNG & POLYMORPHIE
aber mein lehrer hat so formuliert... er gibt uns morgen u.A. auch aufgaben wo wir nen quelltext sehen und wir anhand genau diesen Textes entscheiden sollen ob polymorphie oder vererbung und es auch beweisen...
|
Re: unterschied VERERBUNG & POLYMORPHIE
Zitat:
|
Re: unterschied VERERBUNG & POLYMORPHIE
hey Leute,
ich wollte mich nochmal bei euch bedanken! Wie ihr teilweise vermutet habt, kam mir früh beim erneuten durcharbeiten die sogenannte "Erleuchtung..." das war gestern wirklich zu viel nach 6h lernen habe ich einfach nichts mehr in den Schädel bekommen und die Klausur heute verlief zufriedenstellend. Nochmal: tausend dank! mfg speedax |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz