Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 11, 2025 07:07

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 06, 2007 10:11 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Versuch auf jeden Fall deine Klassen klein zu machen. Einfache Aufgaben pro Klasse. Keine Riesenapperate. (Manchmal lässt sich sowas nicht vermeiden, z.B. bei KIs kann eine Klasse durchaus 1000-2000 Zeilen lang werden.) Sorg dafür, dass die Manager/Controller nur die Steuerung innehaben. Die eigentlichen Aufgaben sollten dann von Sklavenklassen (;)) unten drunter gemacht werden. Dadurch kannst du auch leicht Änderungen einbauen. Du musst dann nur den Controller ändern, die restlichen Klasse interessiert das nicht.

Das ist natürlich jetzt ins blaue geraten. Aber zumindest diese Richtung könnte dir helfen.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 06, 2007 11:33 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jun 24, 2003 19:09
Beiträge: 732
nochmal zum Grundproblem zurück... bin selbst schon auf das gleiche Problem gestoßen und die einfachste Lösung ist die variablen in der Klasse einfach als TObject zu deklarieren...

also
Code:
  1.  
  2. type
  3.   TTexturemanager = class(Tobject)
  4.   private
  5.     Engine: TObject
  6. [...]
  7.   end;


Dein constructor frißt dann auch TObject als Parameter und die eigentliche Unit für TEngine schmeißt du in die uses deklaration unter implementation rein.
Willst du deine klasse TEngine dann in irgendeiner Prozedur benutzen deklarierst du einfach ne lokale variable vom typ TEngine in der Prozedur/Funktion (das ist dort ja möglich weil die unit unter implementation deklariert ist).

Code:
  1. var
  2.   MyEngine : TEngine;
  3. begin
  4.   MyEngine := TEngine(Engine);
  5.   ...
  6. end;


Ist im Ende auch nix anderes als mit Pointer rum zu schießen... nur so macht man es richtig.
Sieht auf den ersten Blick umständlich aus, aber ist eigentlich nix weiter dabei :)


Was mir auch gerade noch beim schreiben des beispiel codes aufgefallen ist ist das du deinen privaten Variablen nen einheitliche prefix verpassen solltest... also FEngine, z.b.
einfach damit man nicht mit lokalen variablen durcheinander kommt oder published variablen mit get/set funktionen und gleichem Namen ohne prefix deklarieren kann.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 06, 2007 21:46 
Offline
DGL Member

Registriert: So Aug 20, 2006 23:19
Beiträge: 564
Jojo mit Billys Variante erleichtert man sich ja nur das Typecasten etwas, aber im Grunde ist es eben auch ein Typecast. Dennoch ist das wohl noch die leichteste Variante und ich werds wohl so mal machen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 07, 2007 21:51 
Offline
DGL Member

Registriert: So Aug 20, 2006 23:19
Beiträge: 564
Ich hab noch eine Variante gefunden.
Ich stelle in meiner Engine.pas direkt eine globale Variable Engine vom Typ TEngine bereit.

dann kann ich die Engine.pas in jedem manager in der zweiten Uses einbinden und auf Engine zugreifen. Danach ist nur noch Engine global, wobei ich der meinung bin, dass das auch kein problem sein sollte. so komme ich um ettliche globale variablen und ne menge typecasts rum.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]