| Autor |
Beitrag |
HenryHux
      
Beiträge: 542
Erhaltene Danke: 33
Windows 7 Premium
Delphi XE, Eclipse
|
Verfasst: Mo 31.01.11 16:51
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
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: 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.
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
HenryHux 
      
Beiträge: 542
Erhaltene Danke: 33
Windows 7 Premium
Delphi XE, Eclipse
|
Verfasst: 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
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: 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 
      
Beiträge: 542
Erhaltene Danke: 33
Windows 7 Premium
Delphi XE, Eclipse
|
Verfasst: 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
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 542
Erhaltene Danke: 33
Windows 7 Premium
Delphi XE, Eclipse
|
Verfasst: 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
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: 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.
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
HenryHux 
      
Beiträge: 542
Erhaltene Danke: 33
Windows 7 Premium
Delphi XE, Eclipse
|
Verfasst: 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
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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.
|
|
|