AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Ordentlicher Aufbau eines Programms u. der Klassen
Thema durchsuchen
Ansicht
Themen-Optionen

Ordentlicher Aufbau eines Programms u. der Klassen

Ein Thema von Pfoto · begonnen am 14. Nov 2005 · letzter Beitrag vom 14. Nov 2005
Antwort Antwort
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#1

Ordentlicher Aufbau eines Programms u. der Klassen

  Alt 14. Nov 2005, 17:31
Hallo zusammen,

ich mache zwar (auch Dank des Forums) immer mehr Fortschritte und mein Programm tut auch schon vieles was ich will, aber ich befürchte, dass ich noch keinen ordentlichen Aufbau habe.

Nun habe ich viele Prozeduren nach logischen Gesichtspunkten selbst erstellten Objekten untergeordnet, aber ich bin mir nicht sicher, ob mein Gedankenweg richtig ist.

Sollte man eine Hauptklasse erstellen, die wiederum andere Klassen enthält?
also z.B.
- TMeinProgramm
---- TSettings
------- TKonstante
------- TUserEinstellungen
---- TUserInterface
---- TDatenbankzugriff
etc.
und dann das Ganze bei Form.Create TMeinProgramm erstellen

Oder reicht es, die Klassen/Objekte einfach einzeln in einer Unit zu haben und diese dann alle nacheinander in Form.Create bzw. bei Bedarf zu erstellen?
Auch weiß ich nicht, ob die Klassen innerhalb des Hauptformulars deklariert werden sollten, so dass sie praktisch alle zum Objekt Hauptformular(TForm) gehören. Oder ist das "Geschackssache"?


Noch ein Problem:
Die Ausgabe im MainForm möchte ich ja auch über die Objekt-Methoden machen.
Sollte ich da einfach den Pointer einer MainForm-Komponente als Parameter übergeben, so dass das Objekt direkt darauf zeichnet (z.B. DrawText(AForm: TForm) oder eher Ereignisse auslösen, die wiederum im Hauptprogramm abgefangen werden?


Wie handhabt ihr das? Auch Links zu Tutorials, Büchertipps etc. sind willkommen.
Vielen Dank im Vorraus.


Gruß
Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Ordentlicher Aufbau eines Programms u. der Klassen

  Alt 14. Nov 2005, 17:38
der richtige ansatz ist der den du skiziert hast. Also das du nur TMeinProgramm erstellst und dieses dann nur TSettings etc. erstellst. In TSettings muss dann im Constructor das erstellt werden was dort dazu gehört.
Der Grund ist auch recht einfach. TKonstante und TUserSettings wird IMMER gebraucht wenn du TSettings brauchst also ist es auch sinnvoll dies in TSettings zu erzeugen (Denn wenn du TSettings außerhalb von TMeinProgramm mal brauchst müsstest du ja sonst TKonstante etc. wieder von Hand erzeugen obwohl es ja sowies immer gebraucht wird im Zusammenhang mit TSettigns)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Ordentlicher Aufbau eines Programms u. der Klassen

  Alt 14. Nov 2005, 17:43
Ich mach das genauso.

Zum Beispiel:
Delphi-Quellcode:
-TGame.Create <---------
---TSpielfeld.Create |
-----Background.Create |
-----Einheit.Create |
-------OnClick-------->|
---TBackgroundMusic.Create
Wenn nun eine Einheit angeklickt wird, schleife ich dies über Events bis an mein Game weiter.

Ich denke allerdings wie du das nun im einzelnen machst ist Wurscht und "Geschackssache" .

TGame erzeuge ich eben dann wenn mein Spiel beginnen soll. Vorteil ist das du nur ein Objekt braust, das sich dann automatisch um alles kümmert, im Normalerweise ist das ja eigentlich das Formular.

(SirThornberry war leider früher als ich)
Andreas
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: Ordentlicher Aufbau eines Programms u. der Klassen

  Alt 14. Nov 2005, 19:46
Hi,
ich glaube einen gewissen Anteil "Geschmackssache" hast du natürlich auch in der OOP. Aber halt nicht alles ist Geschmackssache, ein Teil ist auch Idee und Erfahrung.
Prinzipiell lohnt es sich immer sehr modular zu arbeiten. Einerseits kannst du kleine Units die eine mächtige, tolle, schöne Klasse enthalten auch mehr als einmal verwenden. Wenn du allerdings eine riesige Toolsammlung in einer Unit mit zusätzlich noch 3 Formularen (mal ganz übertrieben) hast, dann hast du keinen Überblick mehr und wirst eher dazu neigen eine Klasse neu zu schreiben. Copy und Paste mit mehreren Klassen in einer Datei ist auch nicht zu empfehlen.

Zudem sollte jede Klasse immer nur das enthalten, was wirklich zusammen gehört. Und damit sollte deine Hauptanwendung / dein Hauptformular nur zur Anzeige dienen. Alles was berechnet wird (mal sehr abstrakt für alle Aktionen), sollte gekapselt sein. Natürlich musst du dazu immer noch im Konstruktor Instanzen erzeugen, aber bei einem Event werden dann halt nur ganz wenige Methoden einzelner Instanzen aufgerufen.
Damit bleibt dein Code gut schlank und damit auch leicht verständlich und lesbar. Großer Code mit ganz vielen tollen Zeilen in einer Unit beeindruckt natürlich gar keinen (schon gar nicht beim Verstehen, Verändern oder Fehlersuchen).

Aber auch wenn du dir die Grundsätze von OOP anguckst, geht es vorallem darum, dass jedes Objekt ein Teil von einer Welt ist. Dabei soll ein Objekt nach aussen immer eine Black-Box sein und vorallem nur den Teil der Welt kennen, der für dieses Objekt wichtig ist. Deshalb ist auch deine Struckturierung total richtig gewählt. Es sollten immer nur die Teile zusammenkommen, die zusammen gehören. Hat wirklich viele Vorteile wenn man das Konsequent durchhält.

Gruß Der Unwissende
  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 04:49 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