PROFESSIONAL NEWSGROUPS
WINDEV
,
WEBDEV
and
WINDEV Mobile
Home
|
Recent messages
|
Connect
|
Sign out
|
English
Home
→
WINDEV 2024
→
Instance d'interface dynamique
Instance d'interface dynamique
Started by AZIZ AIT ZAGHAR, Jul., 27 2024 9:58 AM - 2 replies
Connect yourself…
AZIZ AIT ZAGHAR
#1
Registered member
20 messages
Posted on July, 27 2024 - 9:58 AM
Bonjour,
Est-il possible de créer une "Instance" d'interface de manière dynamique c'est à dire en passant par une chaine qui porterait le type de l'interface.
Ci-dessous un code simplifié :
//Déclaration des interfaces :
I_Produit_simple
est une
interface
...
FIN
I_Produit_paramétré
est une
interface
...
FIN
C
Produit_simple
est une
C
lasse
Implémente I_Produit_simple
...
FIN
C
Produit_parametré
est une
C
lasse
Implémente I_Produit_paramétré
...
FIN
//Utilisation
SELON
n
TypeProduit
CAS
1
s
NomClasseConcrète
est une chaîne
=
C
Produit_simple
CAS
2
s
NomClasseConcrète
est une chaîne
=
C
Produit_paramétré
FIN
iProduit
est un
I_Produit_simple
<
-
allouer un
s
NomClasseConcrète
Mon problème est sur cette dernière ligne, je ne sais pas la rendre générique, je suis obligé de mettre en dur le nom de l'interface alors que le type de la classe concrète est porté une chaine.
Sauf erreur de ma part, la compilation dynamique n'est pas utilisable à mon sens car l'objet devant accueillir le résultat de la compilation dynamique doit être type.
J'ai essayé l'Inférence de type avec un truc du style :
Déclaration globale de la fenêtre
I_Poduit_simple est un I_Produit_simple
I_Poduit_parametré est un I_Produit_paramétré
...
{gsNomInterface,indVariable} <- allouer un gsNomClasse
soit gMonProduit <- {gsNomInterface,indVariable}
Probléme > Le type 'interface' n'est pas autorisé dans une inférence de type.
l'idée est de remplacer :
iMonProduit est un I_Produit_simple par iMonProduit est un sNomInterface
Je ne sais pas si j'ai été clair ...
Cordialement.
Report
0
0
Pierre
#2
Registered member
159 messages
Posted on July, 27 2024 - 2:21 PM
Bonjour,
Pour rendre générique quelque-chocs qui ne l'était pas voici comment j'ai procédé :
Procedure MaFenêtre
(
gpcl
MaPreparation
est un objet
dynamique
)
s
Ordre
est une chaîne
gpcl
NewFamille
est un objet
dynamique
//gclNewfamille est un CFamillePrépa
s
Ordre
=
"gpclNewFamille = allouer un "
+
gpcl
MaPreparation.m_clItem
..
Classe
//+"(clUnePiece)"
ExécuteCode
(
s
Ordre
)
J'espère que c'est une piste qui pourra t'aider
Cordialement,
--
Pierre
Report
0
0
AZIZ AIT ZAGHAR
#3
Registered member
20 messages
Posted on July, 27 2024 - 8:11 PM
Bonjour,
Merci pour cette piste, mais malheureusement ça ne fonctionne pas avec les Interfaces.
Il y a pas pas mal de choses qui fonctionne avec les Interfaces, comme par exemple il n'est pas possible de récupérer la définition d'une interface comme on le fait naturellement avec une classe.
J'essais d'utiliser les Interfaces pour appliquer les principes SOLID et la mise en place de Design Pattern (Builder, Strategy ..) sur a base de ce qui est fait dans des tuto Java, mais plus j'avance plus je me retrouve coincé.
Merci tout de même pour la contribution.
Report
0
0
→ Go back to WINDEV 2024
WINDEV 2024
WEBDEV 2024
WINDEV Mobile 2024
WINDEV (earlier versions)
WINDEV 26
WINDEV 2024
WINDEV 2024
WINDEV 2024
WINDEV 25
WEBDEV 2024
WEBDEV 2024
WEBDEV 2024
WINDEV Mobile 2024
WINDEV Mobile 2024
WINDEV (earlier versions)
WINDEV (earlier versions)
WEBDEV (earlier versions)
WEBDEV (earlier versions)
WINDEV Mobile (earlier versions)
WINDEV Mobile (earlier versions)
Reports & Queries
Reports & Queries
Off-topic
Off-topic
Tools
Tools
Français
English
Español
Portuguesa
Close this window
Search type
Only topics
All the messages
Search period
Any time
Past hour
Past 24 hours
Past week
Past month
Past year
Cancel
Preview of your message
Adding an image
Import an image from a URL
Send an image from a file of your disk
Drop a file or click "Browse..."
or
Cancel
0%
WLanguage
SQL
XML, HTML
JAVA, Javascript
Text