II. La programmation par objets
•programmation procédurale 'Fortran, Algol, Pascal, C,
Ada, ML, Caml, Haskell, programmation fonctionnelle.
•programmation dirigée par les données =programmation
par objets, Simula, Smalltalk, C++, Eiffel, Java, Ocaml.
Turing award 2001 pour Nygaard et Dahl: For ideas
fundamental to the emergence of object oriented
programming, through their design of the programming
languages Simula I and Simula 67.
F. Morain – École polytechnique – Introduction à l’Informatique (INF 311) – Promo X2012 9/60
Pourquoi la programmation par objets?
•Modularité: les objets favorisent le regroupement des
fonctions et des données ⇒structuration.
Rem. Modularité 6⇒ programmation par objets (cf. Modula, ML).
•Programmation incrémentale: on définit des classes
qu’on peut étendre par héritage a posteriori (e.g. AWT),
cf. INF421, INF431. ⇒très populaire dans l’industrie.
•Très utilisée dans les boîtes à outils graphiques (look
commun à toutes les fenêtres) et réseau (données et
méthodes se déplacent simultanément).
F. Morain – École polytechnique – Introduction à l’Informatique (INF 311) – Promo X2012 10/60
Objets en Java
Les objets sont les instances d’une classe. Ils ont un état (la
valeur de leurs champs de données) et un ensemble de
méthodes attachées.
données
méthodes
données
méthodes
données
méthodes
code
données
statiques
F. Morain – École polytechnique – Introduction à l’Informatique (INF 311) – Promo X2012 11/60
Objets en Java: exemple
public class Rationnel{
public long num, den;
public Rationnel(long n, long d){
this.num = n;
this.den = d;
}
public static Rationnel mult(Rationnel r1,
Rationnel r2){
return new Rationnel(r1.num *r2.num,
r1.den *r2.den);
}
public Rationnel multiplierPar(Rationnel r){
return new Rationnel(this.num*r.num,
this.den*r.den);
}
}
Le compilateur différencie une méthode de classe, identifiée
par static, d’une méthode d’objet sans static. On
explique plus loin la raison de ces noms.
F. Morain – École polytechnique – Introduction à l’Informatique (INF 311) – Promo X2012 12/60