Introduction
Ce document trace les grandes lignes d’un cours de niveau interm´ediaire por-
tant sur la conception par objets et la programmation orient´ee objet. Le langage
objet choisi est le Python. Le langage de mod´elisation objet est UML. Ce cours
s’adresse `a des ´etudiants ayant des comp´etences en programmation imp´erative,
mais d´ebutant en programmation objet. L’objectif est de connaˆıtre les principes
g´en´eraux de l’approche objet (classes, h´eritage, associations, polymorphisme) et
de savoir les mettre en œuvre.
Pour la notation UML, on se r´ef´erera au site uml.free.fr. Il existe un
nombre impressionnant de livres sur la programmation objet en Python. On
pourra ainsi regarder le site de (www.python.org) qui contient des tutoriels
Python int´eressants.
La lecture de ce document n’est pas forc´ement lin´eaire. Notamment, il peut
ˆetre utile de lire en parall`ele l’introduction au langage Python.
1 Introduction `a l’approche objet
1.1 Vision fonctionnelle et vision objet
Dans la vision fonctionnelle, on s´epare les donn´ees des op´erations que l’on
effectue dessus. Le processus de conception naturel est donc d’identifier les
donn´ees manipul´ees, pr´evoir des structures de donn´ees adapt´ees, puis ´ecrire
des fonctions qui vont prendre une partie de ces donn´ees en entr´ees et fabriquer
des nouvelles donn´ees en sortie. On parle d’approche syst´emique. Cette vision
est bien adapt´ee `a certaines situations. Les bases de donn´ees classiques et la
m´ethode MERISE fonctionnent ainsi sur ce principe. Cela peut ˆetre aussi adapt´e
`a certains probl`emes de calcul scientifiques, o`u les donn´ees en entr´ee et en sortie
sont clairement identifi´es. En revanche, cette approche devient d´elicate lorsqu’il
s’agit de mod´eliser et/ou de simuler des processus plus complexes, avec des
donn´ees d’origine vari´ee, qui ne se pr´esentent pas toujours sous la forme. L’ap-
proche syst´emique est alors handicap´ee, car elle cherche `a anticiper pr´ecis´ement
les donn´ees qu’elle manipule. On voit aussi que cette vision implique souvent
une analyse ascendante de la probl´ematique, o`u le concepteur/programmmeur
se pose d’abord la question de comment il va stocker ses donn´ees.
Dans la vision objet, on regroupe les donn´ees et les op´erations qui sont
propres `a ces donn´ees. Pour r´esoudre un probl`eme donn´e, on fait collaborer entre
eux des objets qui vont communiquer entre eux pour r´esoudre le probl`eme. On
parle de message passing. De fait, on s’int´eresse plus aux services/messages que
rendent/comprennent chaque objet qu’`a comment les donn´ees sont repr´esent´ees
au sein de l’objet. On dispose de plus de moyens pour regrouper des objets entre
eux, de fa¸con durable ou non.
Normalement chaque objet est responsable de ses donn´ees, et un objet ex-
1