AGB  ·  Datenschutz  ·  Impressum  







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

Vererbung, Aggregation, Assoziation?

Ein Thema von mo_greene · begonnen am 4. Jun 2007 · letzter Beitrag vom 13. Mai 2008
Antwort Antwort
Seite 1 von 2  1 2      
mo_greene

Registriert seit: 10. Dez 2006
Ort: Berlin
136 Beiträge
 
Turbo Delphi für Win32
 
#1

Vererbung, Aggregation, Assoziation?

  Alt 4. Jun 2007, 14:06
Hallo,
ich wollte mal fragen ob mir jemand den gefallen tun kann und direkt im folgendem Programm zeigen kann wo Vererbungen vorliegen, wo Aggregationen und wo Assoziationen? Wäre ich euch dankbar!

Delphi-Quellcode:
unit View_Control;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, uModell;

type
  TView = class(TForm)
    GroessePnl: TPanel;
    GewichtPnl: TPanel;
    GroesseEdt: TEdit;
    GewichtEdt: TEdit;
    BMIPnl: TPanel;
    AusgabePnl: TPanel;
    RechneBtn: TButton;
    EndeBtn: TButton;
    procedure EndeBtnClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure RechneBtnClick(Sender: TObject);
    procedure Datenaktualisieren;
    procedure Maskeaktualisieren;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  View: TView;
  Modell: TModell;
  a : integer;

implementation

{$R *.dfm}

procedure TView.EndeBtnClick(Sender: TObject);
begin
 close;
end;

procedure TView.FormCreate(Sender: TObject);
begin
 Modell := TModell.Create;
end;

procedure TView.Datenaktualisieren;
begin
    Modell.setGroesse(strtoint(GroesseEdt.Text));
    Modell.setGewicht(strtoint(GewichtEdt.Text));
end;

procedure TView.Maskeaktualisieren;
begin
    AusgabePnl.Caption := inttostr(Modell.getBMI);
end;

procedure TView.RechneBtnClick(Sender: TObject);
begin
   Datenaktualisieren;
   Maskeaktualisieren;
end;

end.

Mfg David
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Vererbung, Aggregation, Assoziation?

  Alt 4. Jun 2007, 14:22
Klingt mir irgendwie nach ner Hausaufgabe
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
mo_greene

Registriert seit: 10. Dez 2006
Ort: Berlin
136 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Vererbung, Aggregation, Assoziation?

  Alt 4. Jun 2007, 14:30
nee , Vorbereitung auf eine Klausur!
  Mit Zitat antworten Zitat
WoTo

Registriert seit: 28. Jun 2004
Ort: Rotenburg (Wümme)
102 Beiträge
 
Delphi 2005 Enterprise
 
#4

Re: Vererbung, Aggregation, Assoziation?

  Alt 4. Jun 2007, 14:39
Hallo David,
da ich im Moment kein UML-Buch zur Hand habe, muß ich aus meiner Erinnerung dir antworten:

Vererbung:
TView erbt von TForm

Aggregationen:
GroessePnl: TPanel;
GewichtPnl: TPanel;
GroesseEdt: TEdit;
GewichtEdt: TEdit;
BMIPnl: TPanel;
AusgabePnl: TPanel;
RechneBtn: TButton;
EndeBtn: TButton;

Diese Objekte leben nicht weiter, wenn TView gelöscht wird (FreeAndNil). Daher Aggregationen.

Assoziationen
Modell müßte eine Assoziation zu TView sein, da dies rein theoretisch weiterleben würde, auch wenn TView gelöscht wird.

Ich hoffe, daß dies richtig ist. Ansonsten bei Google mit dem Stichwort UML suchen.

Gruß,
Woto
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Vererbung, Aggregation, Assoziation?

  Alt 4. Jun 2007, 14:57
Bitte, bitte, mit Zucker oben drauf...
... sage nicht, euer Info-Lehrer hat sich solch einen Bratzen ausgedacht...

Assoziation kommt dort praktisch nicht vor, weil du Modell in eine globale Variable schreibst.
Das ist so wie es da geschrieben ist, absolut falsch.
Du kannst nicht im Konstruktor von TView für jede Instanz eine globale Variable besetzen, die eine globale Variable bedeutet, dass bei der nächsten Instanz von TView, dort eine neue Instanz drin steht.
Somit würden pötzlich beide neuen Views mit dem gleichen neuen Modell arbeiten und die alte Modell-Instanz ist ein Speicherleck!

Es macht auch maximal im Document/View Pattern Sinn das Modell mit/von dem View zu erzegen.
Normalerweise will man ja möglichst austauschbare Views für das gleiche Modell haben, right?

Hier kommen wir zur ersten Assoziation:
Du könntest TView eine öffentliche Eigenschaft "Modell" geben.
Wenn man nun einen View anlegt, kann man ihm dann die Daten zuweisen, es können also auch 2 Views auf den gleichen Daten arbeiten, wenn erwünscht.
Der View ist ja nicht dein Programm, er implementiert ja nur begrenzt Logik (nur die, die direkt mit User-interaktionen zusammenhängen also keine Geschäftslogik darstellen) er sollte also mit einer bestehenden Instanz des Modells arbeiten, es aber weder anlegen noch vernichten.
Das widerspräche der ganzen Idee hinter MVP oder MVC: nämlich Austauschbarkeit & Fokus auf Teilaufgaben.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
mo_greene

Registriert seit: 10. Dez 2006
Ort: Berlin
136 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Vererbung, Aggregation, Assoziation?

  Alt 4. Jun 2007, 19:00
Wäre es dann so richtig?

Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, uModell;

type
  TView = class(TForm)
    GroessePnl: TPanel;
    GewichtPnl: TPanel;
    GroesseEdt: TEdit;
    GewichtEdt: TEdit;
    BMIPnl: TPanel;
    AusgabePnl: TPanel;
    RechneBtn: TButton;
    EndeBtn: TButton;
    procedure EndeBtnClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure RechneBtnClick(Sender: TObject);
    procedure Datenaktualisieren;
    procedure Maskeaktualisieren;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  View: TView;
  a : integer;
Ich habe Modell nicht mehr als Variable deklariert! So in Ordnung?


P.S. Das Programm funktioniert trotzdem Aber trotzdem danke für deine Hilfe
  Mit Zitat antworten Zitat
mo_greene

Registriert seit: 10. Dez 2006
Ort: Berlin
136 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Vererbung, Aggregation, Assoziation?

  Alt 6. Jun 2007, 18:54
wäre nett, wenn jemand antworten könnte vielen, vielen dank
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Vererbung, Aggregation, Assoziation?

  Alt 6. Jun 2007, 19:54
Versuche du doch die Frage zu beantworten und wir sagen dir dann, ob du richtig liegst. Ist auch besser als Klausurvorbereitung
Markus Kinzler
  Mit Zitat antworten Zitat
mo_greene

Registriert seit: 10. Dez 2006
Ort: Berlin
136 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Vererbung, Aggregation, Assoziation?

  Alt 6. Jun 2007, 20:23
ja stimmt schon! ich denke es sollte so richtig sein wie ich es zuletzt gepostet habe!
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Vererbung, Aggregation, Assoziation?

  Alt 6. Jun 2007, 21:20
Du hast einen neuen UML Begriff erfunden: Destruktion
weil du nun überhaupt kein Modell mehr hast
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:24 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