Je n'ai pas trop de temps, aussi je répond assez rapidement. Je suis désolé
par avance pour toutes fautes d'orthographes ou autres erreurs.
zwetan wrote:
je suis désolé, mais JavaScript n'offre pas ce support.
je ne suis pas du tout d'accord
mais c'est surtout que les principes centraux du paradigme objet
je les definis comme cela
- abstraction
- encapsulation
- modularité
- hierarchie
Je suppose que quand tu parles de hiérarchie, tu penses au typage ou à la
classification selon le typage de Liskov ou celui de Cook.
Sinon, pour faire simple et court, abstraction + encapsulation + modularité
est décrit par un seul principe : l'objet.
Les concepts fondamentaux de l'objet sont à mes yeux, pour résumer:
- ADT,
- sous-typage ou classification (sachant que la classification est pour moi
et par expérience la meilleur expression du typage en objet),
- polymorphisme
et JavaScript supporte facilement ces 4 principes
JavaScript comme C peuvent supporter, autrement dit, donner le moyen de les
implémenter, ces principes avec plus ou moins du boulot. Ce qui ne veut pas
dire qu'ils _offrent_ le support de ces principes.
Ce n'est pas parce que en javaScript tu as Object que ceci en fait un
langage objet. En tout cas, mon expérience avec me confirme dans cette
appréciation.
c'est _toi_ qui pense que JavaScript est limité
et je peux te jurer que non :)
Tout langage est de toute façon limité. Le seul que je connaisse et qui
puisse lever /naturellement/ ses propres limitations est Smalltalk.
si tu regardes l'evolution de langages comme Java ou C#
tu verras qu'il y a bcp de concepts dynamiques qui leurs sont rajoutés
"apres coup"
ces meme concepts dynamiques existant deja en JavaScript
Je ne remet pas en cause les concepts dynamique. Si tu parles des types
dynamiques dans les langages objet, je suis même convaincu que c'est un
moyen d'expression qui te permet d'écrire un système objet avec bcp de
facilité et de souplesse.
les langages aussi sont en constantes evolution
Oui je suis d'accord
des langages comme Python et JavaScript n'ayant pas de typage statique
au depart se tournent vers de l'annotation de type par exemple
mouais bof (c'est mon opinion)
J'attends de voir...
avec un langage comme JavaScript on est au plus pres des objets,
ce n'est pas un mal et cela n'empeche pas du tout (au contraire je trouve
que c'est pls facile)
la realisation de systemes objets
On est plus près de l'objet avec Eiffel que JavaScript, avec Python que
JavaScript.
meme si JavaScript a un model objet basé sur les prototype et la
delegation au contraire des plus traditionnels models objets basés sur les
classes ce sont juste 2 approches differentes a l'orientation objet
Je suis d'accord que les classes ou les prototypes sont deux approches du
paradigme objet.
Maintenant, JavaScript est un langage à prototypes de fonctions et non
d'objets. Pour avoir une vision réelle de ce qu'est un langage objet à
prototypes, cf. Self, Slate, io, lisaac, etc.
quelques references
[ ... ]
Je lirais ces références un peu plus tard (il est possible, mise à part
celui sur JavaScript, comme pour le dernier, que je les ai déjà lu). Quant
à la dernière référence, ce n'est pas pour autant que cela fait de
JavaScript un langage objet. Il existe plusieur formes de prototypage comme
il existe plusieurs formes de modules ou types structurés. Dire que
JavaScript est un langage objet revient à dire que Ada 83 est aussi un
langage objet sous prétexte qu'il supporte la modularité et le
sous-typage !
Mais peut-être qu'à la lecture de l'article sur JavaScript, je changerais
mon opinion sur celui-ci.
Miguel