coût du logiciel: développement et maintenance (la maintenance est en
général plus coûteuse que le développement),
fiabilité du logiciel.
Solutions :
assurer la modularité,
permettre la réutilisation du logiciel,
utiliser des briques de bases certifiées,
La programmation objet essaie de réaliser ces objectifs.
Le typage, Historique ...:
fonctions et procédures (Fortran)
typage (Pascal)
structuration nécessaire des données: struct de C
regroupement logique de diverses données
données + fonctions : notion de modules et de package (exemple Ada)
programmation objet : classe, objets et héritage.
Quelques principes de la programmation objet :
objet et classe :. Une classe généralise la notion de
type: elle définit les données (variables)
et des fonctions (méthodes) utilisables dans la
classe. Un objet est un élément particulier d'une classe avec
un état interne.
encapsulation :
n'est accessible que ce qui doit l'être, séparer l'interface (ce qui
est accessible) de l'implémentation (comment c'est réalisé).
héritage :
relation entre les classes. A hérite de B (A est une sous classe de B,
B est une extension de A)
signifie que A est une sorte de B (avec quelque chose de plus que A).
A a donc au moins les mêmes propriétés (méthodes + variables) que B
A peut avoir des méthodes et des variables qui lui sont propres.
Mais A peut redéfinir certaines méthodes de B.
Liaison dynamique :
Comme A est une sorte de B, un utilisateur travaillant avec un B peut,
en fait, travailler avec un A. Il faudra alors que les méthodes
utilisées soient celles de A.
réutilisation du logiciel :
Classes et objets
encapsulation : restreindre l'accès.
données internes et externes, fonctions internes et externes:
interface explicite.
(en C, portée static, mais édition de liens sans beaucoup de
vérifications).
séparer l'implémentation de la spécification : types de données abstraits.
Une même spécification abstraite et plusieurs implémentations
liaison dynamique ou tardive conséquence directe du point précédent.
Notion de contrat (Eiffel) :
engagement entre le client et le vendeur: la spécification.
le client ne peut utiliser le produit que par son interface qui est
définie par cette spécification.
l'implémentation est cachée au client.
engagement conditionné. Si les préconditions sont assurées (par le
client), le vendeur s'engage.
Sinon pas d'engagement, mais le vendeur doit refuser le traitement
(exception) et en avertir le client.
implémentations différentes ou
déléguées à d'autres.
Mais respect de la spécification.
héritage: le vendeur peut fournir un produit pouvant avoir de
meilleures qualités et établir un sous contrat. Mais le produit fourni
doit avoir au moins les propriétés spécifiées par le contrat.
Si A est le produit, B est une sorte de A si B a au moins les
propriétés de A.