AGB  ·  Datenschutz  ·  Impressum  







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

Klassenbeziehung herstellen?

Ein Thema von 0xDEAD · begonnen am 26. Aug 2009 · letzter Beitrag vom 26. Aug 2009
Antwort Antwort
0xDEAD

Registriert seit: 9. Okt 2008
33 Beiträge
 
#1

Klassenbeziehung herstellen?

  Alt 26. Aug 2009, 13:01
Hi,

ich steh grad auf dem Schlauch und weiß nicht wieso?

Wenn ich eine Beziehung zw. zwei Klassen brauche. Kann ich das dann wie folgt machen?

Delphi-Quellcode:

  TKlasseA = class(TObject)

  TKlasseB = class(TObject)


procedure Test;
begin
  InstanzA := TKlasseA.Create;
  InstanzB := TKlasseB.Create;
  InstanzA.EineBeziehung := InstanzB;
end;

Ist das jetzt Blödsinn oder steh ich nur auf dem Schlauch?
Oder gibt es was besseres?

<°)))o>< DON'T FEED THE TROLLS ><+++°>
  Mit Zitat antworten Zitat
lowF

Registriert seit: 18. Dez 2008
37 Beiträge
 
#2

Re: Klassenbeziehung herstellen?

  Alt 26. Aug 2009, 13:23
Was du da jetzt gemacht hast, ist afaik eine Objektbeziehung, also eine Beziehung zwischen eines Objektes der Klasse A und eines der Klasse B.

Eine Klassenbeziehung sollte zwischen Klassen herrschen, z.B. so:

Delphi-Quellcode:
 KlasseA = class(TObject);
 KlasseB = class(KlasseA);
mfg
lowF
  Mit Zitat antworten Zitat
0xDEAD

Registriert seit: 9. Okt 2008
33 Beiträge
 
#3

Re: Klassenbeziehung herstellen?

  Alt 26. Aug 2009, 13:31
Zitat von lowF:
Eine Klassenbeziehung sollte zwischen Klassen herrschen, z.B. so:

Delphi-Quellcode:
 KlasseA = class(TObject);
 KlasseB = class(KlasseA);
Das würde ich jetzt eine Ableitung nennen.

In meinem Beispiel fehlt grad noch was:

Delphi-Quellcode:
TKlasseA = class(TObject)
  EineBeziehung: TKlasseB;

TKlasseB = class(TObject)


procedure Test;
begin
  InstanzA := TKlasseA.Create;
  InstanzB := TKlasseB.Create;
  InstanzA.EineBeziehung := InstanzB;
end;

Sinn und Zweck soll sein,
dass aus InstanzA eine Methode der KlasseB aufgerufen werden kann.
<°)))o>< DON'T FEED THE TROLLS ><+++°>
  Mit Zitat antworten Zitat
Benutzerbild von MacGuyver
MacGuyver

Registriert seit: 9. Sep 2003
Ort: Wildeshausen
293 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Klassenbeziehung herstellen?

  Alt 26. Aug 2009, 13:37
Moin oxDEAD,

das siehst du so richtig. Jupp, das wollte ich auch gerade so schreiben.
Dann sieht das so aus:
Delphi-Quellcode:
TKlasseA = class(TObject)
  EineBeziehung : TKlasseB;

TKlasseB = class(TObject)
  EineBeziehung : TKlasseA;
Und was sieht daran blöd aus?

Stefan
Englisch eine Weltsprache? Zu kompliziert und der nahe Osten würde Englisch als Pflichtweltsprache nicht akzeptieren.
IDO wäre genau das Richtige: http://forum.idolinguo.de/index.php oder www.idolinguo.de
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Klassenbeziehung herstellen?

  Alt 26. Aug 2009, 13:38
So sollte es auch funktionieren.

Die Klasse A ist dann der Aggregator(Seite 4) der Klasse B.

Delphi-Quellcode:
TKlasseA = class(TObject)
  EineBeziehung: TKlasseB;

TKlasseB = class(TObject)

...
constructor TKlasseA.create;
begin
  ...
  eineBeziehung := TKlasseB.create;
end;

procedure Test;
begin
  InstanzA := TKlasseA.Create;
end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
0xDEAD

Registriert seit: 9. Okt 2008
33 Beiträge
 
#6

Re: Klassenbeziehung herstellen?

  Alt 26. Aug 2009, 14:29
Mir fällt es immer noch schwer das UML-Modell in richtigen Quellcode umzusetzen, ist wohl Übungssache.

Ich überlege, ob ich mal sowas wie ModelMaker einsetzen soll. Das will ich aber erst, wenn ich diese Thema wirklich richtig verstanden habe. Von daher erstmal alles selber coden.



Nochwas:

Jetzt habe ich InstanzA und InstanzB erstellt.
Muss ich beim Destruktor von InstanzA die Variable befreien?

EineBeziehung.Free; Oder reicht das:

InstanzB.Free;
<°)))o>< DON'T FEED THE TROLLS ><+++°>
  Mit Zitat antworten Zitat
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#7

Re: Klassenbeziehung herstellen?

  Alt 26. Aug 2009, 14:33
InstanzB.Free ist besser.

Da EineBeziehung auf InstanzB verweist würde bei beiden Varianten die gleiche Wirkung erzielen und die InstanzB entfernen, aber idealerweise wird eine Instanz dort entfernt, wo sie erzeugt wird.
  Mit Zitat antworten Zitat
lowF

Registriert seit: 18. Dez 2008
37 Beiträge
 
#8

Re: Klassenbeziehung herstellen?

  Alt 26. Aug 2009, 17:34
Also ich muss widersprechen

Bin gerade frisch aus der Schule mit Abi und wir haben gelernt, dass das, was du jetzt machst, eine Objektbeziehung ist, also eine Beziehung zwischen Objekten.
Hättest du geschrieben, dass du willst, dass ein Objekt die Methode eines Objektes einer anderen Klasse aufrufen soll, dann wär es mir klar gewesen, dass du Objektbeziehung meinst

Oder widerspricht mir da jemand? (Geht mir gerade nur um den Unterschied zwischen Objekt- und Klassenbeziehung.
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:06 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