AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Neustrukturierung (nach OOP) meines Programmes

Neustrukturierung (nach OOP) meines Programmes

Ein Thema von DelphiManiac · begonnen am 27. Feb 2009 · letzter Beitrag vom 27. Feb 2009
Antwort Antwort
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#1

Neustrukturierung (nach OOP) meines Programmes

  Alt 27. Feb 2009, 10:41
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:
getSeriennummer(var SN:string);
getDruck(var Druck:int);
getSauerstoff(var Sauerstoff:double);
getSchall (var Schall:double)
wobei zb.: getSchall und getLaufzeit die Werte aus der gleichen Adresse vom Gerät holen.


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.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.769 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Neustrukturierung (nach OOP) meines Programmes

  Alt 27. Feb 2009, 10:51
Zitat von DelphiManiac:
also mir gefällt die ganze Geschichte nicht so, sie mach Änderungen seeehr schwierig...
Wirklich? Auf den ersten Blick sieht das für mich sehr einfach aus. Neuer Messwert -> weitere Zeile im case und fertig. Was versprichst Du Dir genau von einem Redesign?

Sherlock
Oliver
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#3

Re: Neustrukturierung (nach OOP) meines Programmes

  Alt 27. Feb 2009, 10:57
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ß
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#4

Re: Neustrukturierung (nach OOP) meines Programmes

  Alt 27. Feb 2009, 11:10
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.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#5

Re: Neustrukturierung (nach OOP) meines Programmes

  Alt 27. Feb 2009, 11:24
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:
if softwareversion = 1 then
begin
lblxyz.visible:=false;
editxyz.visible:=false;
end;

if softwareversion = 2 then
begin
lblxyzaa.visible:=false;
editxyzaa.visible:=true;
end;
edit:sorry Tags vergessen

Gruß
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#6

Re: Neustrukturierung (nach OOP) meines Programmes

  Alt 27. Feb 2009, 12:00
Ich würde das ganze so machen :
Delphi-Quellcode:
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;
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.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz