Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Programm auf OOP umschreiben
HenryHux - Mo 31.01.11 16:51
Titel: Programm auf OOP umschreiben
Hi, da ich mittlerweile die Vorzüge von OOP erkannt habe, wollte ich auch anfangen diese zu nutzen.
Ich kenne die Grundlagen, dadran sollte es nicht allzusehr scheitern.
Doch ging mein erster Versuch weit daneben, deswegen wollte ich mal fragen, was denn wohl die beste Konzeptplanung ist.
Ich habe ein recht umfangreiches Programm, ohne Klasse.
Die will ich zusammen in Klassen fassen um die dann als Thread ausführen zu lassen.
Doch will ich die auf jede Fall auf mehrere Klassen verteilen, oder zumindest wegen der Übersichlichkeit auf mehrere Units.
Funktioniert es eine Klasse auf mehrere Units zu verteielen?
Oder muss ich die jeweils voneinander erben lassen?
Lg
Bergmann89 - Mo 31.01.11 17:38
Hey,
für die Konzeptplanung eignet sich ein UML-Tool, damit kann man die Klassen gut darstellen und planen.
Eine Klasse auf mehrere Units ist nicht möglich, da musst du das ganze dann vererben. Dann kannst du die abgeleitete Klasse in eine extra Unit auslagern.
MfG Bergmann.
HenryHux - Mo 31.01.11 17:49
Ok, danke das hatte ich schon probiert.
Gab aber Probleme mit Variablen.
Ich dachte public Variablen würden den Erben ihr Werte auch mitgeben - leider nicht.
Und da ich die ganze Klassengeschichte zum Threaden mache, kommen mir globale Variablen da sehr ungelegen.
Jetzt muss ich sehn, wie ich Variablen übergebe.
Sind ca 20 die für mehrere Klassen zugänglich sein müssen, aber nicht Global sein dürfen.
Wie kann ich das am besten machen?
So sieht das bei mir aus
Klasse Nr.1 ruft Klasse Nr.2 auf, welche per Funktionen Werte übergibt. Soweit kein Problem, könnte bis dahin auch alle Vars in Klasse 1 definieren.
Danach muss Klasse Nr.1 die Variablen aber an 2 weitere Klassen weitergeben. 20 Variablen sind viel um die per Parameter zu übergebe.
Wie mache ich das also am besten?
In Klasse Nr.1 ein Record anlegen und das weitergeben?
Lg
Regan - Mo 31.01.11 17:50
Hallo,
HenryHux hat folgendes geschrieben : |
| Ich habe ein recht umfangreiches Programm, ohne Klasse. |
HenryHux hat folgendes geschrieben : |
| Doch ging mein erster Versuch weit daneben, deswegen wollte ich mal fragen, was denn wohl die beste Konzeptplanung ist. |
Wenn du keinen Termin für das Ausliefern dieses Programmes hast, dann würde ich vorschlagen, dass du das alte Programm wegwirfst (also gedanklich) und komplett von vorne beginnst. Dieses von dir beschriebene "Umschreiben" funktioniert nicht. Das Problem liegt darin, dass du einfach versuchen wirst, deine Methoden in Klasse zu packen. Allerdings ist das kein OOP.
Viele Grüße
Regan
Edit: Zu langsam :(
HenryHux - Mo 31.01.11 18:00
Ich habe ja schon neu angefangen, aber das Problem bleiben die Variablen.
Gibt es denn eine Möglichkeit records als Parameter zu übergeben?
jaenicke - Mo 31.01.11 18:05
Ja, Records kannst du dafür nehmen. Oder sogar eine eigene Klasse wiederum, kommt ganz darauf an was du damit genau machst.
HenryHux - Mo 31.01.11 21:49
So, danke hat so wunderbar geklappt.
War zwar viel Umschreibearbeit, aber alleine wegen der Threadbarkeit war es das Wert.
Lg
Bergmann89 - Mo 31.01.11 22:13
Hey,
HenryHux hat folgendes geschrieben : |
| Ich dachte public Variablen würden den Erben ihr Werte auch mitgeben - leider nicht. |
eigentlich werden die schon weitergegeben?! Das soltle funktionieren:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| TTestClass1 = class(TObject) public TestVar: Integer; end;
TTestClass2 = class(TTestClass1) public procedure ShowTestVar; end;
procedure TTestClass2.ShowTestVar; begin ShowMessage(IntToStr(TestVar)); end; |
alle Felder und Methoden, die als protected, public oder published deklariert sind sollten in der abgeleiteten Klasse verfügbar sein. Und wenn sich die 2 Klassen in der selben Unit befinden, dann sollten auch die Felder und Methoden die unter private stehen sichtbar sein.
MfG Bergmann.
HenryHux - Mo 31.01.11 23:45
Ja, die Variablen sind verfügbar, aber nicht die Werte.
D.h wenn ich in der einen Klasse die Variable Klasse1.a veränder, verändert sich nicht Klasse2.a ..
Das war mein Problem.
Lg
jaenicke - Di 01.02.11 06:30
HenryHux hat folgendes geschrieben : |
Ja, die Variablen sind verfügbar, aber nicht die Werte.
D.h wenn ich in der einen Klasse die Variable Klasse1.a veränder, verändert sich nicht Klasse2.a .. |
Wie meint du das? Du hast doch ein konkretes Objekt. Und innerhalb des Objektes kannst du die Variable bzw. das Feld nutzen.
Wenn du zwei verschiedene Objekte hast, hast du natürlich auch je eine unabhängige Variable.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!