Miguel Moquillon wrote:
Bonjour, je peux mettre mon grain de sels ? :)
<hs>
C'est mon newsreader qui est dans les choux, ou le tien qui délire sur
l'encodage ?
</hs>
bruno at modulix wrote:
Il est clair que la syntaxe la plus courante reste 'objet message args',
qui est plus proche du "sujet verbe complément", et donc exprime mieux
(sémantiquement) le concept.
Tout à fait. Ceci vient en plus du monde Smalltalk. Pour parler syntaxe, je
trouve même leur syntaxe d'envoie de messages à un objet bcp plus
pertinent
que les autres langages objet.
Un meilleur exemple serait de présenter également un objet "livre" et un
objet "robinet". Eux aussi comprennent les messages "ouvrir" et
"fermer", et ce ne sont clairement pas des sous-classes de "porte". Un
livre et une porte appartiennent-ils au même type ? (ou "à un" même
type, ce qui est différent) ? La réponse dépend évidemment de la
définition de "type", et il n'y a clairement pas consensus sur cette
définition.
Ce n'est pas vrai (ou totalement vrai).
Bin pourtant si.
Il y a actuellement deux
définitions
possibles du typage:
- celui, plus ancienne, de Liskov, dans lequel un type définit l'interface
de l'objet (donc l'héritage est centré sur le sous-typage (je ne parle pas
de l'héritage d'implémentation qui est autre chose)),
- celui, plus actuelle, de Cook, dans laquelle une classe définit une
famille polymorphique de types (donc l'héritage est centré sur la
sous-classification (ça se dit en français ce machine ?)).
Dans certains langages (langages à prototypes comme Self ou Javascript,
ou langages très dynamiques comme Python), il est possible de modifier
dynamiquement l'interface et/ou l'implémentation d'un objet donné.
Quand tu modifies l'interface de ton objet, les modifs doivent se
répercuter
sur l'ensemble des sous-types. Si non, alors mauvais langage car il
n'applique pas correctement les relations mathématiques du typage.
J'ai bien parlé d'un *objet*, pas d'une classe (en faisant abstraction
du fait que dans certains langages, les classes soient elles-mêmes des
objets).
Les "relations mathématiques du typage", c'est bien beau, mais ça a quel
sens dans un langage à prototype ?-)
Par contre, effectivement, la modif de l'implémentation d'un service dans
une classe d'objet doit se répercuter sur l'ensemble des instances de la
classe.
De toute façon, AMHA, les langages objet à types (C++, Java, ...) ou Ã
classes (Smalltalk, Eiffel, ...) implémentent de façon complexe les
concepts et principes de l'objet. Avec les langages objet à prototypes, je
pense que nous arrivons à une simplification des choses, ce qui permet de
se concentrer sur les principes même de l'objet et non sur des détails
techniques ou théoriques de ceux-ci (particulièrement les relations
typage-classification).
Oui et non, cf ci-dessus. On peut presque dire que *les* types d'un
objet sont définis par l'utilisation effective (cf les mécanismes
d'inférence de type - ou plus simplement le duck-typing !-).
--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in 'onurb@xiludom.gro'.split('@')])"