Classe abstraite vs classe concrète
La plupart des langages de programmation modernes orientés objet tels que Java et C # sont basés sur des classes. Ils réalisent les concepts orientés objet tels que l'encapsulation, l'héritage et le polymorphisme grâce à l'utilisation de classes. Les classes sont une représentation abstraite d'objets du monde réel. Les classes peuvent être concrètes ou abstraites selon le niveau de mise en œuvre des fonctionnalités de leurs méthodes. Une classe concrète implémente complètement toutes ses méthodes. Une classe abstraite peut être considérée comme une version limitée d'une classe régulière (concrète), où elle peut contenir des méthodes partiellement implémentées. Typiquement, les classes concrètes sont appelées classes (juste).
Quelle est la classe de béton?
La classe par défaut est une classe concrète. Le mot-clé class est utilisé pour définir les classes (par exemple en Java). Et généralement, elles sont simplement appelées classes (sans l'adjectif concret). Les classes concrètes décrivent la représentation conceptuelle d'objets du monde réel. Les classes ont des propriétés appelées attributs. Les attributs sont implémentés sous forme de variables globales et d'instances. Les méthodes dans les classes représentent ou définissent le comportement de ces classes. Les méthodes et les attributs des classes sont appelés les membres de la classe. Généralement, l'encapsulation est obtenue en rendant les attributs privés, tout en créant des méthodes publiques pouvant être utilisées pour accéder à ces attributs. Un objet est l'instance d'une classe. L'héritage permet à l'utilisateur d'étendre des classes (appelées sous-classes) à partir d'autres classes (appelées super classes). Le polymorphisme permet au programmeur de substituer un objet d'une classe à la place d'un objet de sa super classe. En règle générale, les noms trouvés dans la définition du problème deviennent directement des classes dans le programme. Et de même, les verbes deviennent des méthodes. Public, privé et protégé sont les modificateurs d'accès typiques utilisés pour les classes..
Quelle est la classe abstraite?
Les classes abstraites sont déclarées à l'aide du mot-clé Abstract (par exemple, en Java). En règle générale, les classes abstraites, également appelées classes de base abstraites (ABC), ne peuvent pas être instanciées (une instance de cette classe ne peut pas être créée). Ainsi, les classes abstraites n'ont de signification que si le langage de programmation prend en charge l'héritage (possibilité de créer des sous-classes à partir d'une extension de classe). Les classes abstraites représentent généralement un concept abstrait ou une entité avec une implémentation partielle ou nulle. Par conséquent, les classes abstraites agissent comme des classes parent desquelles les classes enfant sont dérivées, de sorte que la classe enfant partage les caractéristiques incomplètes de la classe parent et que des fonctionnalités puissent être ajoutées pour les compléter.
Les classes abstraites peuvent contenir des méthodes abstraites. Les sous-classes étendant une classe abstraite peuvent implémenter ces méthodes abstraites (héritées). Si la classe enfant implémente toutes ces méthodes abstraites, elle devient une classe concrète. Mais si ce n'est pas le cas, la classe enfant devient également une classe abstraite. Cela signifie simplement que lorsque le programmeur désigne une classe en tant qu'abstrait, elle dit que la classe sera incomplète et qu'elle comportera des éléments devant être complétés par les sous-classes héritées. C'est un bon moyen de créer un contrat entre deux programmeurs, ce qui simplifie les tâches de développement logiciel. Le programmeur, qui écrit le code à hériter, doit suivre exactement les définitions de la méthode (mais peut bien sûr avoir sa propre implémentation).
Quelle est la différence entre la classe abstraite et la classe concrète?
Les classes abstraites ont généralement une implémentation partielle ou aucune. D'autre part, les classes concrètes ont toujours une implémentation complète de son comportement. Contrairement aux classes concrètes, les classes abstraites ne peuvent pas être instanciées. Par conséquent, les classes abstraites doivent être étendues afin de les rendre utiles. Les classes abstraites peuvent contenir des méthodes abstraites, mais pas les classes concrètes. Lorsqu'une classe abstraite est étendue, toutes les méthodes (abstraites et concrètes) sont héritées. La classe héritée peut implémenter toutes les méthodes. Si toutes les méthodes abstraites ne sont pas implémentées, cette classe devient également une classe abstraite.