Salut tout le monde.
Je désire créer une API. J'ai déjà tout le code des objets métiers qui sert dans une application. Le but est de faire une API sur cette application.
J'ai suivi quelques tutoriels et je suis en train de prendre en main le biniou.
Je me heurte sur un problème d'architecture.
Comment faire coller les objets COM aux objets métiers ?
J'ai par exemple 2 objets métiers : TMyComposant et TMyComposantList.
TMyComposantList possède une méthode GetByNom qui prend le nom du TMyComposant en paramètre et renvoie le TMyComposant correspondant. Rien de bien sorcier.
Dans l'API, je crée 2 interfaces IComMyComposant et IComMyComposantList avec leurs objets implémentés associés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 function GetByNom( aNom : string ) : TMyComposant; var i : Integer; begin Result := nil; for i := 0 to Count - 1 do if Items[ i ].Nom = aNom then begin Result := Items[ i ]; Break; end; end;
J'ai défini une propriété ByNom prenant un WideString en paramètre et retournant un IComMyComposant.
Mais ensuite, je ne peux pas mettre :
Avec FMyComposantList étant un TMyComposantList mis en private.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 function TComMyComposantList.Get_ByNom( const aNom : WideString ) : IComMyComposant; begin Result := FMyComposantList.GetByNom( aNom ); end;
Je ne peux pas faire ainsi car ça va retourner un TMyComposant et non pas un IComMyComposant.
Je ne voudrais pas non plus devoir redévelopper chacune des méthodes mais pouvoir les réutiliser.
Je me suis dit que peut-être serrait-il mieux d'intégrer l'un dans l'autre. C'est-à-dire faire dériver mes composants directement TAutoObject et non plus de TObject, mais le soucis est que les composant dérivent pour l'instant de TComponent et qu'il n'existe pas de TAutoComponent.
J'ai aussi des objets qui dérivent de TList et si je veux faire dériver de TAutoObject, je suis coincé car on ne peut pas faire d'héritage multiple en Delphi.
En fait, je ne sais pas très bien qu'elle architecture choisir pour développer une API. Et je ne trouve que de l'aide théorique sur les objets COM et pas de conseils sur leur utilisation.
Merci pour votre aide, j'espère que j'ai pas été trop confus.
Partager