Différence entre généralisation, héritage et spécialisation
Quelle est la différence entre généralisation, héritage et spécialisation ? – Des termes tels que super-classe, sub-classe ou héritage apparaissent quand on pense à l’approche orientée objet. Ces concepts sont très importants dans les langages de programmation orientés objet tels que Java ou C ++.
Illustration en UML
(On spécialise)Véhicule ——–> Voiture
Véhicule ——–> Camion
(On généralise)
Voiture ——–> Véhicule
Camion ——–> Véhicule
La relation de généralisation/spécialisation est implémentée dans des langages de programmation orientés objet avec héritage.
Voici quelques formes de généralisation en POO:
Polymorphisme: Fait référence à la capacité d’un langage de programmation à traiter les objets différemment selon leur type de données ou leur classe. Plus précisément, il s’agit de la possibilité de redéfinir les méthodes pour les classes dérivées.
Généricité: Permet au programmeur de créer des classes, des interfaces et des méthodes dans lesquelles le type de données est spécifié en tant que paramètre. Il permet d’écrire un algorithme indépendant de tout type de données spécifique. Il est devenu possible de créer une seule classe, une interface ou une méthode qui fonctionne automatiquement avec tous les types de données (Integer, String, Float, etc.). Il a augmenté la capacité de réutiliser le code facilement.
Patterns: Un pattern exprime une solution générale à un problème de conception commun. Les attributs et le comportement des composants individuels ne sont que partiellement définis pour permettre l’interprétation et l’application du modèle à un large éventail de situations.
Conclusion:
La généralisation est le terme que nous utilisons pour désigner l’abstraction des propriétés communes dans une classe de base en UML. Lorsque nous implémentons la généralisation dans un langage de programmation, cela s’appelle l’héritage. Donc, la généralisation et l’héritage sont pareils, la terminologie diffère juste selon le contexte d’utilisation.