Un certain échec de la POO est montré avec une classe Square héritant de Rectangle, où Square est logiquement une spécialisation de Rectangle et devrait donc en hériter, mais tout s'effondre lorsque vous essayez de modifier la longueur ou la largeur d'un carré.
Existe-t-il un terme spécifique pour décrire ce qui ne va pas dans ce cas?
Réponses:
Wikipedia se réfère simplement à lui comme le problème Circle-ellipse
la source
Je considérerais cela comme une violation du principe de substitution de Liskov - la
Square
sous - classe viole spécifiquement l'invariant selon lequel la longueur et la largeur sont indépendantes.la source
À un niveau plus fondamental que le principe de substitution de Liskov, il s'agit d'une erreur de catégorie ou d'une erreur de catégorie
Dans le contexte de la modélisation du comportement, un carré n'est tout simplement pas un type de rectangle.
Lorsque vous réalisez cela, le problème disparaît car l'hypothèse initiale (un carré est un type de rectangle) est supprimée du jeu.
Le problème avec cette réponse est que depuis l'école, il est percé dans toute personne faisant de la géométrie qu'un carré est un type de rectangle. Mais il est très important de comprendre que cela n'est vrai que dans un contexte très spécifique (la classification des formes géométriques en fonction des propriétés de leurs angles internes). En termes de comportement, un carré n'est pas un rectangle. Voir un ensemble de classification dans le mauvais contexte est une erreur de catégorie.
la source