Einzelnen Beitrag anzeigen

David Martens

Registriert seit: 29. Sep 2003
205 Beiträge
 
Delphi XE Enterprise
 
#14

Re: Zugriff auf Public nur wenn Bedingung erfüllt ist

  Alt 2. Mai 2010, 11:29
Hi,

1. würde ich ein Interface erstellen, in dem alle gemeinsamen Funktionen/Prozeduren/Properties der 3 Betriebssystemklassen definiert werden.

2. Das Gleiche dann für die 3 Klassen separat.

3. Den Interfaces eine GUID verpassen dann kannst du die Supports Funktion benutzen. !Wichtig!

4. Die 3 Klassen dann vom gemeinsamen Interface und dem spezialisierten ableiten, dann müssen die F./P./P. in den 3 Klassen auch vorhanden sein, sonst komiliert er erst garnicht.

5. In den 3 Klassen nicht private/protected verwenden, sondern strict private/strict protected, dann sind diese auch in der Unit private/protected.

So noch ein wenig Code:
Delphi-Quellcode:
  IWindows = interface(IInterface)
    ['{9cd3bd90-e18a-4e4f-a720-93b515181025}'] // von [url]www.guidgenerator.com[/url]
    function Add(sum1, sum2: Integer): Integer; // als Beispiele
    function Sub(sub1, sub2: Integer): Integer;
  end;

  IWin7 = interface(IInterface)
    ['{e71d5c68-08ae-4f7c-8239-fd058c77f7b2}']
    function Mul(mul1, mul2: Integer): Integer;
  end;

  IWinXP = interface(IInterface)
    ['{788e59bc-3f7a-4456-8951-8cce2abf1a71}']
    function Div(div1, div2: Integer): Integer;
  end;

  TUpdateEngine = class(IWindows)
    function Add(sum1, sum2: Integer): Integer;
    function Sub(sub1, sub2: Integer): Integer;
    ...
  end;
  TWin7 = class(TUpdateEngine, IWin7)
    function Mul(mul1, mul2: Integer): Integer;
    ...
  end;
  TWinXP = class(TUpdateEngine, IWinXP)
    function Div(div1, div2: Integer): Integer;
    ...
  end;

procedure ToWas;
var
  Engine : TUpdateEngine; // oder IWindows wenn die Var. nicht inizialisiert werden muß
  I7 : IWin7;
  IXP : IWinXP;
begin
  Engine := GetEngine;
  Engine.Add();

  if Supports(Engine, IWin7, I7) then
    I7.Mul();

  if Supports(Engine, IWinXP, IXP) then
    IXP.Div();
end;
Mit der Methode bist du wirklich OOP und auch sehr sauber.
  Mit Zitat antworten Zitat