Le 03-01-2006, Miguel Moquillon <moqui@home.fr> a écrit :
Marc Boyer wrote:
C'est dans un bouquin sur le temps réel que j'ai trouvé la
première définition qui me satisfasse: elle offre deux niveaux,
ADT (Abstract Data Type) et OOP.
De plus, ce qui est intéressant dans l'ADT, et que l'on ne retrouve que dans
très peu de langages objets, est la définition de conditions (pré et
post-conditions des opérations) et des invariants.
Pre/post, j'ai oublié de mentionné tellement ça me paraît évident,
(j'en fait même en procédural) mais en effet, rappelons le.
L'invariant, c'est sujet à discussion: l'invariant est
souvent lié à l'implémentation, et dans les rares cas où
il ne l'est pas (genre size()<=capacity()), je pense qu'on
pourrait le déduire des pré/post.
Mais pour moi, POO => pre/post + invariants.
- Pre/post car ce devrait être dans le procédural.
- Invariant, car justement, le role de l'initialiseur,
c'est de mettre en place l'invariant.
Après, pourquoi si peu de support dans les langages ?
C'est une longue discussion. Je pense que si tout le monde
est d'accord pour dire qu'il faudrait énoncer cela,
certains discutent sur le coût de leur vérification,
mais le pire, c'est que faire si on détecte une violation ?
Marc Boyer
--
Entre le fort et le faible, c'est la liberte qui opprime et le droit
qui libere. Henri Lacordaire, Dominicain