Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
12. Jun 2015
Das Problem ist, dass sich Deine Beispiele immer auf Deine aktuelle Projektstruktur beziehen und losgelöst nicht so ganz klar sind.
Mein Vorschlag:
Baue Dir mal ein völlig eigenständiges Testprojekt mit Fahrzeugen (Auto, Fahrrad, Boot), Tieren (Ente, Fisch) und Früchten (Apfel, Banane).
So siehst Du eindeutig, welche Klassen Gemeinsamkeiten haben und welche nicht.
Die Klassen brauchen...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
12. Jun 2015
Du musst das etwas strukturierter betrachten.
Basisklassen sind ja gut und nützlich. Aber sie müssen nur das wissen und können, was wirklich alle Ableitungen gemeinsam haben.
Wenn Du eine Objektkopie erzeugen willst, dann kann Deine Basisklasse z.B. folgende Methode haben.
TBaseClass = class
function CreateCopy: TBaseClass; virtual;
end;
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
10. Jun 2015
Dann hatte ich vermutlich eine Anwendung mit meiner Turniersoftware (siehe Homepage).
Ich hatte dazu Datenklassen und visuelle Controls voneinander getrennt.
Die Datenklassen haben die gesamte Logik und Daten gekapselt - also das eigentliche Projekt und den Turnierzustand abgebildet.
Die Controls konnten dann ein Datenobjekt referenzieren (TvSpieler z.B. einen TdSpieler).
So kann man gut...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
10. Jun 2015
Genau.
Was die Controls zeichnen geht von außen niemanden etwas an.
Ob sie intern ein Polygon verwalten oder mehrere Farben oder Textumbrüche ist normalerweise Privatsache der spezialisierten Klasse.
Nach außen musst Du ja nur das öffentlich machen, was die Umgebung Deiner Werkzeuge interessiert.
Du kannst Deine Basisklasse ja rel. klein halten:
TBaseClass = class
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
10. Jun 2015
Schreib doch mal, was Du da vor hast.
Willst Du nur eine Werkzeuginstanz?
Sollen das sichtbare Controls werden?
Was soll das Projekt machen und was die Fabrik?
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
9. Jun 2015
Dann lag ich wohl falsch... :oops:
Ich dachte, man darf die Methode dann nur nicht aufrufen...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by stahli,
8. Jun 2015
Wenn Du eine abstrakte Methode aufrufst, bekommst Du eine Fehlermeldung.
Abstrakte Methoden sind also nicht schädlich, aber Du darfst sie halt nicht aufrufen ohne sie zu überschreiben.