AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

unterschied VERERBUNG & POLYMORPHIE

Ein Thema von speedax · begonnen am 4. Nov 2009 · letzter Beitrag vom 5. Nov 2009
Antwort Antwort
Seite 2 von 3     12 3      
speedax

Registriert seit: 18. Mär 2009
Ort: Cottbus
36 Beiträge
 
#11

Re: unterschied VERERBUNG & POLYMORPHIE

  Alt 4. Nov 2009, 20:21
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
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#12

Re: unterschied VERERBUNG & POLYMORPHIE

  Alt 4. Nov 2009, 20:28
Zitat von M. Hassmann:
Polymorphie ist mehrfachvererbung und ist meines wissens nach in delphi mit klassen nicht möglich.
Davon steht bei Wikipedia nichts. Hab ich auch ehrlich gesagt noch nie gehört, ich glaube du verwechselst da was.

@speedax:
Delphi-Quellcode:
// 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?
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.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#13

Re: unterschied VERERBUNG & POLYMORPHIE

  Alt 4. Nov 2009, 20:30
Dieser Artikel ist eventuell passender. Bei Polymorphie geht's letztlich darum, dass Methoden einer Klasse auch die Implementierung einer "späteren" Ableitung verwenden kann - hat also an sich erst mal herzlich wenig mit Mehrfachvererbung zu tun (was das oben beschriebene Ableiten von mehreren Klassen bzw. Implementieren von Interfaces wäre). Das heisst bisher waren alle Antworten in diesem Thread falsch.
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!
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
speedax

Registriert seit: 18. Mär 2009
Ort: Cottbus
36 Beiträge
 
#14

Re: unterschied VERERBUNG & POLYMORPHIE

  Alt 4. Nov 2009, 20:31
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?
  Mit Zitat antworten Zitat
speedax

Registriert seit: 18. Mär 2009
Ort: Cottbus
36 Beiträge
 
#15

Re: unterschied VERERBUNG & POLYMORPHIE

  Alt 4. Nov 2009, 20:35
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?
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#16

Re: unterschied VERERBUNG & POLYMORPHIE

  Alt 4. Nov 2009, 20:36
Zitat von Medium:
Dieser Artikel ist eventuell passender. Bei Polymorphie geht's letztlich darum, dass Methoden einer Klasse auch die Implementierung einer "späteren" Ableitung verwenden kann - hat also an sich erst mal herzlich wenig mit Mehrfachvererbung zu tun (was das oben beschriebene Ableiten von mehreren Klassen bzw. Implementieren von Interfaces wäre). Das heisst bisher waren alle Antworten in diesem Thread falsch.
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.
Gut, der Preis für die schönste Formulierung geht an dich Das gleiche habe ich aber im Grunde auch sagen wollen...

@speedax: Bitte keine Doppel-Posts.

[EDIT]
(verdammt, ich bin langsam)

Zitat von Medium:
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!
Ah, ich verstehe was du meinst. Ja, ist vielleicht etwas missverständlich, gebe ich zu. Ich hatte versucht, dass Beispiel so schlank wie möglich zu halten.

Ich habe es mal etwas abgeändert:
Delphi-Quellcode:
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
[/EDIT]
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#17

Re: unterschied VERERBUNG & POLYMORPHIE

  Alt 4. Nov 2009, 20:43
Zitat von NamenLozer:
Gut, der Preis für die schönste Formulierung geht an dich


Delphi-Quellcode:

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;
An der Stelle *** wird TOneDerivate.Foo ausgeführt, obwohl TBaseClass.Foo aufgerufen wird. Das ist Polymorphie.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
speedax

Registriert seit: 18. Mär 2009
Ort: Cottbus
36 Beiträge
 
#18

Re: unterschied VERERBUNG & POLYMORPHIE

  Alt 4. Nov 2009, 20:47
wo hab ich doppelgepostet?

was haltet ihr von meiner erklärung mit dem rechnen-beispiel
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#19

Re: unterschied VERERBUNG & POLYMORPHIE

  Alt 4. Nov 2009, 20:51
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.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#20

Re: unterschied VERERBUNG & POLYMORPHIE

  Alt 4. Nov 2009, 20:53
Zitat von speedax:
wo hab ich doppelgepostet?

was haltet ihr von meiner erklärung mit dem rechnen-beispiel
Das [Beispiel] ist grammatikalisch so ein Schwachsinn, dass es unmöglich kaum zu verstehen ist. Lies du dir deine Posts eigentlich durch, bevor du sie abschickst? Übrigens ist das auch genau die Stelle, wo du doppelt gepostet hast.

Bitte guck dir noch mal den editierten Teil meiner obigen Nachricht an. Vielleicht ist es so verständlicher.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz