Une pair n'est pas ensemble
Merci. Mais Je crois que le principe de Liskov invalide cette modélisation.
En effet, du point de vue d'un client qui aurait récupérer une liste d'ensemble, il ne sait pas et ne doit pas savoir s'il a affaire a un ensemble général (instance de la classe mère Ensemble, ou à une instance de Paire, fille de ensemble):
Exemple en pseudo code:
Ensemble un_ensemble_1
Ensemble un_ensemble_2
Paire une_paire
List une_liste_de_ensemble = [un_ensemble_1, un_ensemble_2, une_paire]
for un_ensemble in une_liste_de_ensemble:
un_ensemble.ajouter ("nouvel element")
Le client, qui récupère une liste d'ensemble, s'attend au contrat des Ensembles, c'est à dire, s'attend à ajouter autant d'éléments qu'il veut à un ensemble. Or une Paire ne peut accepter plus de 2 éléments: Le client sera donc surpris par une Exception qu'il n'attend pas.
Il me semble donc que l'ajout de la contrainte "cardinalité =2" dans la Pair ne permet pas de hériter de Ensemble, car La classe Pair nie certaines propriétés de la classe mère Ensemble: celle d'ajout sans borne d'élément.
Zorgi