AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

OOP Programmierung eines Prüfprogrammes

Ein Thema von DelphiManiac · begonnen am 1. Apr 2009 · letzter Beitrag vom 2. Apr 2009
 
DelphiManiac

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

OOP Programmierung eines Prüfprogrammes

  Alt 1. Apr 2009, 16:23
Hallo,

ich entwickle zurzeit ein Prüfprogramm für eine Hardware

- Relais testen
- LED's testen
- Kalibrieren von Ausgängen / Eingängen...

Ich wollte die nun, nach anfänglichen nicht OOP-konformen Implementierungen jetzt mal sauber konzipieren,
aber dafür brauche ich eure Hilfe.

So sieht es zurzeit aus:

Klasse:
 TPruefling Implementiert alle Methoden um mit dem Prüfling zu kommunizieren.
Beispiel: Set_Relais_1(true); // Schalte Relais 1 vom Prüfling


Delphi-Quellcode:
  TTest = class(TObject)
  private
    FshouldStopp:Boolean;
  protected
    FPruefling:TPruefling;
    FPruefGeraet:TPruefGeraet;
    FUSB:TSchnittstelle;
    FProgressEvent:TProgressEvent;
    FPruefText:string;
    procedure SetProgressEvent( Event : TProgressEvent );
    procedure ShowProgressToGUI(PruefText:String;Fortschritt:Integer);
  public
    constructor Create; virtual;
    destructor Destroy; override;
    function Execute:TTestResult; virtual;abstract;
    procedure StoppTest;
    property PruefText:String
      read FPruefText;
    property OnShowProgress:TProgressEvent
      read FProgressEvent write SetProgressEvent;
  end;
Oberklasse für einen Test



Delphi-Quellcode:
  TTestRelais = class(TTest)
  private
  public
    constructor Create; override;
    function Execute:TTestResult; override;
  end;
Spezielle Testklasse abgleitet von TTest

Delphi-Quellcode:
TControlTest = class(TObject)
private
  FTests:array of TTest;
  FactualTest: TTest;
  FTestObjList:TObjectList;
  FAnzahlTest:Integer;
  FStoppTesting:Boolean;
// FKalibrierWerte:TKalibrierDaten;
  FOnShowTestName:TShowTestName;
  FOnProgressEvent:TProgressEvent;
    procedure setFonProgressEvent(const Value: TProgressEvent);
    procedure setOnShowTestName(const Value: TShowTestName);
  procedure ClearKalbrierwert;
    function getTests(TestNr:integer): TTest;
public
  PruefNummer:Word;
  constructor Create;
  destructor Destroy;override;
  procedure AddTest(const aTest:TTest);
  procedure ClearTest;
  function StarteTestAblauf:TTestResult;
  procedure StoppeTestAblauf;

  property OnShowTestName : TShowTestName
    read FOnShowTestName write setOnShowTestName;
  property OnShowFortschrittGesamt:TProgressEvent
    read FOnProgressEvent write setFonProgressEvent;
  property AnzahlTests : Integer
    read FAnzahlTest;
  property Tests[index:integer] : TTest
    read getTests;
end; // of TControlTest = class(TObject)

Also ich habe also im Prinzip eine GUI die die spezifischen Tests in die Controlklasse einfügt, diese Controlklasse übernimmt dann das Ausführen der Tests (arbeitet die Liste ab).

Jetzt ist das Problem, das ich immer habe, wenn ich solche losen Kopplungen mache, wie ich dann am Besten die Unteschiedlichkeit der Tests behandle.

Beispiel ich habe ein TestRelais Klasse, diese steuert nacheinander die Relais an und liest sich zurück ob das Relais geschaltet hat, nun will ich nach jedem Ansteueren das grafisch darstellen in meiner GUI....

Dann müsste ich wohl ein Callback realisieren, der in der Testklasse direkt aufgerufen wird, oder, da die TControlTestklasse ja da auch keinen Zugriff mehr hat (während der Ausführung eines einzelnen Tests), richtig, oder?


Vielen Dank schonmal für Anregungen...

Gruß
DM
  Mit Zitat antworten Zitat
 


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 13:37 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