![]() |
Neustrukturierung (nach OOP) meines Programmes
Hallo, ich habe ein sehr gewachsenes Programm welches mit einer
Industrieelektronik über USB kommuniziert. Diese Elektronik gab es ursrprünglich nur als CO2 / Druck Mess und Auswertelektronik. Jetzt kann die eine Platine (abhängig von der Firmware) aber auch z.B.: -Sauerstoff messen oder - Schalllaufzeit etc (wer weiß was noch kommt :-)) Mein Programm benutzt zwar Klassen (aber viel zu große und im Prinzip sind es nur Container für Funktionen) Also habe ich bedingt durch das wachsen der Anforderungen nicht gerade OOP-like programmiert, das würde ich gerne ändern, aber ich bräuchte ein paar Anregungen von euch. Hierzu noch ein paar Infos: Es gibt zurzeit 3 Geräterversionen: -Druck -Sauerstoff -Schall zurzeit ist alles in einer Klasse TGeraet Beispiel
Delphi-Quellcode:
wobei zb.: getSchall und getLaufzeit die Werte aus der gleichen Adresse vom Gerät holen.
getSeriennummer(var SN:string);
getDruck(var Druck:int); getSauerstoff(var Sauerstoff:double); getSchall (var Schall:double) In der GUI mach ich dann sowas:
Delphi-Quellcode:
case deviceID
1: getDruck(druck); 2: getSauerstoff(st); 3: getSchall(schall); end; also mir gefällt die ganze Geschichte nicht so, sie mach Änderungen seeehr schwierig... Vielen Dank schonmal für eure Anregungen. |
Re: Neustrukturierung (nach OOP) meines Programmes
Zitat:
Sherlock |
Re: Neustrukturierung (nach OOP) meines Programmes
Hi,
da hängt noch viel mehr dran: - Ein/Ausblenden von Menüs / Editfeldern /Labels etc - Einheiten ändern sich - uvm. Also so vereinfacht wie ich es dargestellt habe ist es wirklich nicht, leider :-) Ich mache diese Überpüfung zig mal. Durch ein Redesign würde ich mir eine flexiblere Erweiterung fü kommende Geräte wünschen. Und eine bessere Fehlersuche / besseren Verständnis des eigenen Quellcodes :-) Gruß |
Re: Neustrukturierung (nach OOP) meines Programmes
Ich würde vielleicht hergehen und es nach Kategorien ordnen. Damit meine ich, suche Dir alle Gemeinsamkeiten von den Geräten raus und packe diese in eine Klasse. Die Unterschiede würde ich dann jeweils in eine extra Klasse packen. Die extra Klassen würde ich dann von der gemeinsamen Klasse ableiten.
|
Re: Neustrukturierung (nach OOP) meines Programmes
Hi,
ja genau so habe ich es geplant, will jetzt auch aus den gemachten Fehlern einwenig lernen. Ich habe ja viele Komponenten die ich ausblende einblende etc. Kann ich diese Logik auch irgendwie in die Klasse die dem Gerät angehört packen? Also quasi dass die GUI sagt hier das sind meine Kompos entscheide du welche du brauchst welche nicht und was du damit machst. Wäre das ein eher schlechtes Design? Oder sollte die Logik über die Anzeige generell in der GUI selbst liegen? Bisher ist es ja so
Delphi-Quellcode:
edit:sorry Tags vergessen
if softwareversion = 1 then
begin lblxyz.visible:=false; editxyz.visible:=false; end; if softwareversion = 2 then begin lblxyzaa.visible:=false; editxyzaa.visible:=true; end; Gruß |
Re: Neustrukturierung (nach OOP) meines Programmes
Ich würde das ganze so machen :
Delphi-Quellcode:
So würde ich das ganze aufbauen. Wie gesagt, es ist nicht komplett und soll auch nur die grobe Struktur zeigen, wie ich es aufbauen würde.
type
THauptklasse = class private FZeigeMenuepunkt1 : boolean; FZeigeMenuepunkt2 : boolean; published property ZeigeMenuepunkt1 : booelan read FZeigeMenuepunkt1 write FZeigeMenuepunkt1; property ZeigeMenuepunkt2 : booelan read FZeigeMenuepunkt2 write FZeigeMenuepunkt2; end; TSchall = class(THauptklasse) private // Irgendwas machen public // Irgendwas machen protected // Irgendwas machen published // Irgendwas machen end; {...} procedure ZeigeMenupunkte; var Schall : TSchall; begin Schall := TSchall.Create; try Menupunkt1.Visible := Schall.ZeigeMenuepunkt1; {...} finally Schall.Free end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz