TP_Rules

Programmation Avancée

Moderator: douinj

Post Reply
berry_ju
Posts: 44
Joined: 30 Sep 2021 15:18

TP_Rules

Post by berry_ju » 07 Jan 2022 19:08

Bonsoir,

J'ai quelques questions relatives au patron Rule :
1) Rule est présenté dans la Q3 comme une implémentation d'un Si Alors Sinon. Je ne vois pas l'implémentation du Sinon.
2) Il y a un truc conceptuel sur lequel je bloque un peu :
j'ai l'impression que le pattern avec Rule ne permet pas d'avoir un type différent pour l'entité de la spécification et celui de la commande. Et je trouve ça dommage ce lien de type entre les 2 notions.
Mais c'est peut-être possible et j'ai mal compris.

Autre chose. Je ne suis que modérément content de mon exemple d'application du patron dans la Q4.
Est-il possible de soumettre à nouveau si je fais du refactoring ou si j'ai une autre idée ?

Merci et bonne soirée,

Julien

douinj
Posts: 462
Joined: 18 Mar 2009 15:46

Re: TP_Rules

Post by douinj » 08 Jan 2022 10:09

Bonjour
1) Rule est présenté dans la Q3 comme une implémentation d'un Si Alors Sinon. Je ne vois pas l'implémentation du Sinon.
Oui, il faudrait en faire une classe dérivée, pas demandée au tp
2) Il y a un truc conceptuel sur lequel je bloque un peu :
E comme entité, R comme Résultat (mutable), ils ne sont pas liés, vous les choisissez en fonction de votre application

Code: Select all

    public B execute(E e,R r) throws Exception {
        if(this.specification.isSatisfiedBy(e)){
            B r1 = this.command.execute(e,r);
            return r1;
        }
        return r;
    }
Regardez le rapport de Mengsi Wu sur les congés des agents territoriaux cf l'énoncé
et aussi le support qui ne sera pas présenté ... NFP121_cours11 : VIP pour Variability & Injection Pattern http://lmi92.cnam.fr/nfp121/supports/NF ... t_VIP.pdf
Bonne fin de tp_rule

Et vous pouvez déposer autant de fois que vous voulez avant l'échéance

berry_ju
Posts: 44
Joined: 30 Sep 2021 15:18

Re: TP_Rules

Post by berry_ju » 08 Jan 2022 11:36

Merci pour votre réponse.
J'ai bien compris que E et R sont distincts. Pas de problèmes là-dessus.
Par contre j'aurais aimé pouvoir appliquer une spécification sur une entité et exécuter une commande sur une autre entité en cas de vérification de la spécification.
Par exemple je vérifie qu'un objet A vérifie telle ou telle règle métier et si c'est le cas c'est un objet de type B qui est passé à la commande.
Je ne sais pas si je suis plus clair dans l'expression de ce que je cherche à faire.

Bon week-end.

Julien

douinj
Posts: 462
Joined: 18 Mar 2009 15:46

Re: TP_Rules

Post by douinj » 08 Jan 2022 18:53

ok,
Par exemple je vérifie qu'un objet A vérifie telle ou telle règle métier et si c'est le cas c'est un objet de type B qui est passé à la commande.
public R execute(A a,B b) throws Exception {
if(this.specification.isSatisfiedBy(a)){
B r1 = this.command.execute(a,b);
return r1;
}
return r;
}
La classe <Object,Object> une solution ?

à suivre...

berry_ju
Posts: 44
Joined: 30 Sep 2021 15:18

Re: TP_Rules

Post by berry_ju » 10 Jan 2022 19:32

Bon sang mais c'est bien sûr !
Par contre j'imagine que conceptuellement il y aurait quelque chose de plus satisfaisant à implémenter pour dissocier les 2.
Merci.

douinj
Posts: 462
Joined: 18 Mar 2009 15:46

Re: TP_Rules

Post by douinj » 11 Jan 2022 10:44

Bonjour,
Par contre j'imagine que conceptuellement il y aurait quelque chose de plus satisfaisant à implémenter pour dissocier les 2.
Oui à terme ce genre de code pourrait être généré à l'aide d'outils,
d'autant plus qu'en un conteneur couplé au mécanisme d'injection de dépendances la généricité en interne disparaît,
tout est Object et caché...
Les règles traduites en Java pourraient elles aussi être engendrées par un outil...

Il y a une tentative de génération par injection de code "While" cf. le paquetage instruction

Bonne fin de tp_rules

Post Reply