|

Écrivez
à AILES ! |

Retour
vers programmation |

Retour
vers les questions Objet |

Retour vers les
questions sur les
paradigmes POO |
|
|
Questionnaire Objet
Les
Paradigmes POO
[WikiWikiWeb], [javaworld], [eiffel]
|
Le titre l'annonce :
"les" paradigmes,
en écho à "les" langages de programmation. Ces
derniers, bien sûr, mettent tous un point d'honneur à ne pas
respecter l'un ou l'autre de ces paradigmes! |
Les 3
Paradigmes de base :
Facile :
1/ L'Héritage,
au minimum "héritage de type", normalement "héritage
de classe", permet de définir ce qu'un
objet étend / modifie d'un autre. Cette modification concerne
son interface uniquement (Héritage
de type) ou son implémentation (Héritage
de classe).
2/ L'Encapsulation,
qui permet de regroupement
de plusieurs items dans un container (physique ou logique), et
qui est très souvent lié au masquage
d'information, afin de rendre
visible uniquement les caractéristiques de conception stable d'un
concept. (typiquement au travers d'accesseurs).
3/ Le Polymorphisme,
qui permet de travailler avec plusieurs types
d'objets comme s'ils n'en représentaient qu'un. On notera que
le type de polymorphisme employé dans la programmation objet est
avant tout de type universel,
plus précisément un "polymorphisme
d'inclusion", donc basé sur l'héritage.
Autres paradigmes
On peut trouver typiquement ces autres grandes caractéristiques qui
font ou non partis des langages :
- Identifiant de Objet (Object Identity)
: généré par le système, unique, indépendant de la valeur de
ses attributs, invisible par l'utilisateur;
- Gestion automatique de la mémoire (Automated memory management)
;
- Types abstraits de données (Abstract Data Types) ;
- État modifiable (Mutable state)
- Généricité (Genericity),
qui n'est en fait une autre forme de polymorphisme : le "polymorphisme
paramétré". Cf.
types génériques.
Paradigmes non respectés
Dès l'examen des 3 paradigmes de base,
on peut y voir un soucis : L'implémentation objet de Perl
n'inclue pas l'encapsulation, d'après
[WikiWikiWeb].
A l'évidence, la gestion automatique de la
mémoire n'est pas comprise dans le C++ !
L'identifiant unique d'un objet n'est pas toujours
aussi unique : certains langages recyclent cet identifiant, l'attribuant
ainsi à plusieurs objet au cours du cycle de vie d'un programme...
On notera que certains "extrémistes"
vont jusqu'à ignorer l'héritage, le considérant comme une simple
"implémentation" du polymorphisme!!! Typiquement, Smalltalk
considère que 2 classes possèdent une fonction de même nom sont
polymorphiques, même si elles ne sont reliées par aucune relation
d'héritage!
Quant à la généricité, elle est réclamée
à grand cri depuis au moins 2 ans (2001-2003) par les adeptes de
Java, pour lesquels une liste "d'objets" (sans type bien
précis) est peu pratique!
Les Paradigmes Post POO :
On ne peut pas parler pour l'instant de
véritable successeur au paradigme de programmation objet. Ces
méthodes viennent donc compléter les caractéristiques de base que
sont l'héritage, l'encapsulation et le polymorphisme.
=> Programmation par aspect
: comme remarqué dans paradigmes
de langage de programmation, ce type de programmation -
objet - s'inspire d'un autre paradigme qui ne l'est pas - objet -
:
|