Académique Documents
Professionnel Documents
Culture Documents
Apo Cm04 Poo
Apo Cm04 Poo
Programmation Objet
Python
Andrea G. B. Tettamanzi
Université de Nice Sophia Antipolis
Département Informatique
andrea.tettamanzi@unice.fr
Introduction
à la programmation
orientée objet
• Introduction
• Encapsulation
• Types de données abstraits
• Héritage et polymorphisme
Lisp Scheme
Prolog
Andrea G. B. Tettamanzi, 2017 5
Programmation orientée objet
• Possède un type
NomClasse
attributs C'est-à-dire, données
méthodes C'est-à-dire, opérations, fonctions
objet2: NomClasse
NomClasse
visibles que au code
- données privées de la classe
données protégées
+ données publiques visibles que au code
- méthodes privées de la classe et des
sous-classes
méthodes protégées
+ méthodes publiques
– attributs;
– méthodes;
– etc.
B
a b
C
a b
Andrea G. B. Tettamanzi, 2017 13
Vision naïve-intuitive
Agenda
Sous-classe = sous-type
?
Andrea G. B. Tettamanzi, 2017 16
Exemple
protected double b, h;
setBase(double);
setHeight(double);
protected double b;
setBase(double);
protected double h;
setHeight(double);
Héritage d'interface :
– La correction peut être vérifiée statiquement (= au moment
de la compilation);
Héritage de réalisation :
– Plus problématique : ex., la même méthode réalisée
(comment ?) en deux super-classes distinguées.
Andrea G. B. Tettamanzi, 2017 23
Polymorphisme
In Informatique :
paramétré
universel
par sous-typage
Polymorphisme
overloading
ad hoc
coercion
double x, y, z;
int i, j, k;
z = x + y;
k = i + j;
Andrea G. B. Tettamanzi, 2017 28
Coercion
interface Comparable
{
int compareTo(Comparable c);
}