Autor Beitrag
HenryHux
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
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)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Mo 31.01.11 17:50 
Hallo,

user profile iconHenryHux hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe ein recht umfangreiches Programm, ohne Klasse.

user profile iconHenryHux hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
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)
BeitragVerfasst: Mo 31.01.11 22:13 
Hey,

user profile iconHenryHux hat folgendes geschrieben Zum zitierten Posting springen:
Ich dachte public Variablen würden den Erben ihr Werte auch mitgeben - leider nicht.

eigentlich werden die schon weitergegeben?! Das soltle funktionieren:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 01.02.11 06:30 
user profile iconHenryHux hat folgendes geschrieben Zum zitierten Posting springen:
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.