Question

J'essaie d'implémenter le modèle de spécification composite, selon le Document de spécifications par Fowler et Evans.

À première vue, j'ai pensé que la mise en œuvre de isGeneralizationOf serait différent pour la conjonction et la disjonction.

En particulier, je pensais que la logique de la conjonction serait

(1) Soit Specx la conjonction de Speca et Specb. Ensuite, Specx est une généralisation de Specc uniquement si Speca et Specb sont une généralisation de Specc.

Et je pensais que la logique pour la disjonction serait

(2) Soit Specy la disjonction de Speca et Specb. Ensuite, Specy est une généralisation de Specc si Speca ou Specb est une généralisation de Specc.

Cependant, à la page 16 du document, ils montrent cette méthode:

CompositeSpecification >> isGeneralizationOf: aSpecification
"True if each component is subsumed. False if any component is not subsumed."
^ (self components contains:
        [:each |(each isGeneralizationOf: aSpecification) not ]) not

Mon raisonnement dans (1) et (2) est-il correct? Si c'est mal, pourquoi? S'il est correct, pourquoi les auteurs ont-ils définie une seule méthode pour être héritée à la fois par les spécifications de conjonction et de disjonction? Quelle est leur intention ici?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top