AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

OOP Programmierung eines Prüfprogrammes

Ein Thema von DelphiManiac · begonnen am 1. Apr 2009 · letzter Beitrag vom 2. Apr 2009
Antwort Antwort
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
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: OOP Programmierung eines Prüfprogrammes

  Alt 2. Apr 2009, 10:57
Schau dir mal DUnit an.
Wenn deine Test vollständig automatisiert ablaufen sollen, dann kannst du im Prinzip DUnit komplett verwenden.
Ansonsten kannst du dir grössere Teile daraus kopieren oder vielleicht nur deinen eigenen TestRunner schreiben.
Andreas
  Mit Zitat antworten Zitat
DelphiManiac

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

Re: OOP Programmierung eines Prüfprogrammes

  Alt 2. Apr 2009, 11:18
Ich habe DUnit schonmal grob überflogen,

aber du hast recht, ich kann mir da wahrscheinlich sehr viel abgucken. Deswegen werde ich jetzt erstmal die Sourcen durchstöbern und hoffen, das ich die Funktionsweise dahinter erkennen kann...

Vielen Dank

Gruß
DelphiManiac
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: OOP Programmierung eines Prüfprogrammes

  Alt 2. Apr 2009, 11:52
Zitat von DelphiManiac:
Deswegen werde ich jetzt erstmal die Sourcen durchstöbern und hoffen, das ich die Funktionsweise dahinter erkennen kann...
Die Sourcen sind OOP-technisch harter Stoff; wenn du alles verstehst, dann kannst du dich selbst schon als "OOP-Guru" bezeichnen.
Andreas
  Mit Zitat antworten Zitat
DelphiManiac

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

Re: OOP Programmierung eines Prüfprogrammes

  Alt 2. Apr 2009, 12:25
Ich will es ja nicht zu 100 % verstehen (das ist wohl auch nicht ohne Hilfe vom Entwicklerteam möglich)


Aber das Grundgerüst will ich mir schonmal angucken um die Herangehensweise zu kapieren.

Ein UML Diagramm würde mir wahrscheinlich auf den ersten Blick mehr sagen, als 1000 Zeilen Quellcode, aber naja, da muss ich jetzt wohl durch
  Mit Zitat antworten Zitat
DelphiManiac

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

Re: OOP Programmierung eines Prüfprogrammes

  Alt 2. Apr 2009, 12:30
Aber hier gibts ja sogar UML und zwar in der Hilfe,... na dann geh ich erstmal daran...
  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 10:48 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