algorithmique programmation objettettaman/classes/algoprogobjet/2012/...programmation orientée...
TRANSCRIPT
![Page 1: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/1.jpg)
Andrea G. B. Tettamanzi, 2012 1
AlgorithmiqueAlgorithmiqueProgrammation ObjetProgrammation Objet
PythonPython
Andrea G. B. TettamanziUniversité de Nice Sophia Antipolis
Département Informatique
![Page 2: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/2.jpg)
Andrea G. B. Tettamanzi, 2012 2
CM - Séance 3
Introductionà la programmation
orientée objet
![Page 3: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/3.jpg)
Andrea G. B. Tettamanzi, 2012 3
Plan
• Introduction
• Encapsulation
• Types de données abstraits
• Héritage et polymorphisme
• Programmation OO en langage Python
• Éléments d'UML
• Patrons de conception orientés objet
![Page 4: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/4.jpg)
Andrea G. B. Tettamanzi, 2012 4
Origines
• La programmation orientée objet surgit dans les années '80
• Logiciels de plus en plus complexes, travail en équipe
• Contrôler la complexité des logiciels
• Code réutilisable pour contenir les coûts du développement
• Contenir les coûts de la maintenance :
– Ajout de nouvelles fonctionnalités
– Modification de fonctionnalités existantes
– portage sur d'autres plate-formes ou environnements
• Coordonner et répartir le travail de développement
• Modularité
![Page 5: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/5.jpg)
Andrea G. B. Tettamanzi, 2012 5
Evolution de la programmation
1940 1950 1960 1970 1980 1990 2000
Assembly
Langage machine
Fortran
Cobol
CAlgol
Forth
Pascal
programmationstructurée
programmationorientée objet
Lisp
Basic
PL/1
Prolog
Smalltalk
Scheme
Modula-2
ADA
C++
Java
patrons deconception
Python
![Page 6: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/6.jpg)
Andrea G. B. Tettamanzi, 2012 6
Programmation orientée objet
Discipline de programmation dans laquelle le programmeur établit
• non seulement les structures de données,
• mais aussi les opérations qui peuvent leurs être appliquées.
Ainsi,
• la structure de données devient un objetobjet qui inclut
– Données, appelées attributsattributs
– Opérations, appelées méthodesméthodes
• Le programmeur peut définir des relationsrelations entre les objets
![Page 7: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/7.jpg)
Andrea G. B. Tettamanzi, 2012 7
Encapsulation
• Seules les opérations définies à l'intérieur d'une structure de données peuvent manipuler les données de cette structure :
– L'utilisation d'opérations certifiées sur les structures de données garantit leur consistence
– Élimine une parmi les causes d'erreur les plus importantes
• Cacher les détails de réalisation :
– Avère la modularité du code
– facilite l'extension et la maintenance
– facilite l'individuation des erreurs
![Page 8: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/8.jpg)
Andrea G. B. Tettamanzi, 2012 8
Type abstrait de données
• Possède un type
• Définit un ensemble d'opérations, qui constituent son interface
• Les opérations de l'interface sont la seule manière d'accéder au type abstrait de données
• Son domaine d'application est défini par des axiomes et des préconditions
![Page 9: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/9.jpg)
Andrea G. B. Tettamanzi, 2012 9
Exemple : Type abstrait de données“Nombre Naturel”
• Type : “Nombre Naturel”
• Opérations définies (Interface) :
– S(n), n + m, n x m, etc.
– n = m, n < m, n | m, premier(n), etc.
• Axiomes et préconditions :
– n + 0 = 0 + n = n
– n + S(m) = S(n) + m
– n x 0 = 0 x n = 0
– n x S(m) = (n x m) + n
– etc.
![Page 10: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/10.jpg)
Andrea G. B. Tettamanzi, 2012 10
Objets et Classes
NomClasse
attributs
méthodes
C'est-à-dire, données
objet1: NomClasse instances de la classe
C'est-à-dire, opérations, fonctions
objet2: NomClasse
![Page 11: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/11.jpg)
Andrea G. B. Tettamanzi, 2012 11
Visibilité
NomClasse
- données privées
données protégées
+ données publiques
- méthodes privées
méthodes protégées
+ méthodes publiques
visibles que au codede la classe
visibles que au codede la classe et dessous-classes
![Page 12: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/12.jpg)
Andrea G. B. Tettamanzi, 2012 12
Héritage : Définition
L'héritage est la caractéristique d'un langage orienté objet qui fait
que les objets d'une classe “héritent” toutes les propriétés définies
pour les classes de niveau supérieur :
– attributs;
– méthodes;
– etc.
Historiquement, c'est une des caractéristiques les plus
controversées.
![Page 13: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/13.jpg)
Andrea G. B. Tettamanzi, 2012 13
Héritage
A
B
C
a
a
a
b
b
![Page 14: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/14.jpg)
Andrea G. B. Tettamanzi, 2012 14
Vision naïve-intuitive
Agenda
Par jour Semanale Mensuelle
![Page 15: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/15.jpg)
Andrea G. B. Tettamanzi, 2012 15
Sous-classe = sous-type
“B sous-type de A pour chaque programme qui utilise des objets
de classe A, on peut utiliser des objets de classe B à leur place
sans que le comportement logique du programme change”.
Une sous-classe ne peut pas contraindre le comportement des
super-classes.
Principe de substitution de Liskov
![Page 16: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/16.jpg)
Andrea G. B. Tettamanzi, 2012 16
Exemple
?
![Page 17: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/17.jpg)
Andrea G. B. Tettamanzi, 2012 17
Exemple
protected double b, h;
setBase(double);setHeight(double);
![Page 18: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/18.jpg)
Andrea G. B. Tettamanzi, 2012 18
Exemple
protected double b;
setBase(double);
protected double h;
setHeight(double);
![Page 19: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/19.jpg)
Andrea G. B. Tettamanzi, 2012 19
Deux notions cohabitent dans l'héritage :
– Héritage d'interface ou subtyping;
– Héritage de réalisation ou subclassing.
Types d'héritage
![Page 20: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/20.jpg)
Andrea G. B. Tettamanzi, 2012 20
Héritage de réalisation
Il s'agit d'un mécanisme de réutilisation du code.
La sous-classe réutilise les méthodes des super-classes.
![Page 21: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/21.jpg)
Andrea G. B. Tettamanzi, 2012 21
Héritage d'interface
Il s'agit d'un mécanisme de compatibilité entre des types.
Il permet le polymorphisme par sous-typage.
Une sous-classe est un sous-type compatible vers le haut avec
tous les types définis tout au long de sa chaîne d'héritage.
![Page 22: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/22.jpg)
Andrea G. B. Tettamanzi, 2012 22
Héritage
A
a, b
+ f(x)+ g(x, y)
B
c
+ h(x)
O1 : A
O2 : B
codef(x)
f(x)
h(x)
A
B
o1
o2
![Page 23: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/23.jpg)
Andrea G. B. Tettamanzi, 2012 23
Deux ordres d'avantages :
– fusion d'interfaces provenant de sources différentes ;
– réutilisation de code provenant de sources différentes.
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.
Héritage multiple
![Page 24: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/24.jpg)
Andrea G. B. Tettamanzi, 2012 24
Polymorphisme
Proprieté d'une même entité qui se manifeste dans des formes
différentes dans de contextes différents…
In Informatique :
Idée d'autoriser le même code à être utilisé avec différents types,
ce qui permet des implémentations plus abstraites et générales.
![Page 25: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/25.jpg)
Andrea G. B. Tettamanzi, 2012 25
Exemple : monomorphisme
int max(int a, int b) :
if(a > b) : return a
else : return b
double maxd(double a, double b) :
if(a > b) : return a
else : return b
![Page 26: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/26.jpg)
Andrea G. B. Tettamanzi, 2012 26
Exemple : monomorphisme
int max(int a, int b) :
if(a > b) : return a
else : return b
double maxd(double a, double b) :
if(a > b) : return a
else : return b
![Page 27: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/27.jpg)
Andrea G. B. Tettamanzi, 2012 27
Classification selon Cardelli-Wegner
Polymorphisme
universel
ad hoc
paramétré
par sous-typage
overloading
coercion
![Page 28: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/28.jpg)
Andrea G. B. Tettamanzi, 2012 28
La même fonction ou les mêmes opérateurs peuvent être
appliqués à des types différents.
Exemple (en C):
double x, y, z;
int i, j, k;
z = x + y;
k = i + j;
Overloading
![Page 29: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/29.jpg)
Andrea G. B. Tettamanzi, 2012 29
Coercion
Les arguments d'une fonction ou opérateur sont transformés
implicitement en le type applicable.
Exemple (en C):
double pow(double, double);
…
double x, y;
int n;
y = pow(x, n);
![Page 30: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/30.jpg)
Andrea G. B. Tettamanzi, 2012 30
Polymorphisme paramétré
Fonctions et opérateurs paramétrés selon le type auquel il peuvent
être appliqués.
Exemple (en C++):
template <typename T> T max(T a, T b)
{
if(a > b) return a;
else return b;
}
Typique de la “programmation générique”.
![Page 31: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/31.jpg)
Andrea G. B. Tettamanzi, 2012 31
Polymorphisme par sous-typage
• Une méthode (c'est-à-dire une opération) peut être appliquée à tous les objets qui appartiennent à la classe qui la prévoit dans son interface.
• Le principe de substitution de Liskov s'applique
• Typique de la programmation orientée objet
![Page 32: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/32.jpg)
Andrea G. B. Tettamanzi, 2012 32
Exemple : max
interface Comparable
{
int compareTo(Comparable c);
}
static Comparable max(Comparable a, Comparable b)
{
if(a.compareTo(b) > 0) return a;
else return b;
}
![Page 33: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/33.jpg)
Andrea G. B. Tettamanzi, 2012 33
Programmation OO en Python
• Les objets sont l'abstraction des données en Python.
• Toutes les données dans un programme Python sont représentés par des objets, y compris le code.
• Un objet possède :
– Une identité (= son adresse en mémoire) : id()
– Un type (opérations supportées + valeurs possibles)
– Une valeur (mutable ou immutable, selon le type)
• Chaque classe et instance de classe possède un espace de noms (namespace), réalisé par un dictionnaire.
• Python n’adhère pas au fait de protéger le code vis-à-vis du programmeur. Python encapsule les objets comme un namespace unique mais c’est une encapsulation transparente
![Page 34: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/34.jpg)
Andrea G. B. Tettamanzi, 2012 34
Définition d'une classe
class NomCls(cl1,cl2,cl3): """documentation""" # bloc instructions, définition des méthodes, etc.
nom de la classe (identificateur)superclasses desquelles las classe hérite
def __init__(self,arg1,arg2): """documentation""" # initialisation d'une instance. self.arg1 = arg1 self.arg2 = arg2
Pas de définition explicite d'interface, on utilise les classes pour cela
![Page 35: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/35.jpg)
Andrea G. B. Tettamanzi, 2012 35
Création et utilisation d'une instance
instance = NomCls(arg1,arg2)
instance.méthode(x,y)
instance.attribut
NomCls.attribut_de_classe
![Page 36: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/36.jpg)
Andrea G. B. Tettamanzi, 2012 36
UML
Le langage universel de modélisation (Unified Modeling Language, UML) est une famille de notations graphiques qui aide à décrire et concevoir des logiciels, notamment
ceux construits en utilisant un style orienté objet•
![Page 37: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/37.jpg)
Andrea G. B. Tettamanzi, 2012 37
Ingrédients de UML
• Le “vocabulaire” de UML inclut trois types d'ingrédients :
– Entités (choses, things): abstractions pertinentes
– Relations : lient des entités entre elles
– Diagrammes : regroupent ensembles intéressants d'entités
![Page 38: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/38.jpg)
Andrea G. B. Tettamanzi, 2012 38
Types d'entités
• Structurales :
– Classes, interfaces, collaborations, cas d'utilisation, composantes, nœuds
• Comportementales :
– Messages, états
• De regroupement :
– Paquets
• Annotations :
– Notes
![Page 39: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/39.jpg)
Andrea G. B. Tettamanzi, 2012 39
Entités structurales
Windoworiginsizeopen()close()move()display()
Classes
Interfaces
ISpelling
Collaborations
Chaîne deresponsabilité
Cas d'utilistion
Insertion ordre
Composantes
Noeuds
Server
OrderForm.java
![Page 40: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/40.jpg)
Andrea G. B. Tettamanzi, 2012 40
Entités comportementales
Messages
display
Etats
Waiting
![Page 41: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/41.jpg)
Andrea G. B. Tettamanzi, 2012 41
Entités de regroupement
Règles de gestion
Paquets
![Page 42: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/42.jpg)
Andrea G. B. Tettamanzi, 2012 42
Entités d'annotation
Note
Revient avec une référence au clientstub de l'objet distant
![Page 43: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/43.jpg)
Andrea G. B. Tettamanzi, 2012 43
Types de Relations
Dépendences Associations
Généralisations Réalisations
0..1 *employeur employé
![Page 44: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/44.jpg)
Andrea G. B. Tettamanzi, 2012 44
Diagrammes
• Il existe 13 types distingués de diagrammes UML :
– Activité
– Cas d'utilisation
– Classes
– Communication
– Composantes
– Déploiement
– Interaction
– Machines à états
– Objets
– Paquets
– Séquence
– Structure des composantes
– Temporisation
![Page 45: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/45.jpg)
Andrea G. B. Tettamanzi, 2012 45
Patrons de conception
La programmation orientée objet toute seule ne suffit pas.
Idée de “patron de conception” = schema.
Aggrégations de plusieurs classes logiquement liées.
![Page 46: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/46.jpg)
Andrea G. B. Tettamanzi, 2012 46
Concevoir un programme orienté objet réutilisable signifie :
– Identifier des objets pertinents ;
– Les regrouper dans des classes de la juste granularité ;
– Définir leurs interfaces ;
– Définir la hiérarchie des classes et des interfaces ;
– Établir des relations signifiantes entre elles ;
– Répondre aux spécificités du problème ;
– Se maintenir assez généraux pour pouvoir traiter d'autres
problèmes du même type.
Conception orientée objet (1)
![Page 47: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/47.jpg)
Andrea G. B. Tettamanzi, 2012 47
Conception orientée objet (2)
Difficilement un projet « réussit bien » au premier essai :
– Il va être recyclé dans des contextes différents ;
– Il va être modifié à chaque fois pour repondre à des besoins différents ;
– Il pourra être amélioré ;
– Finalement, la meilleure solution sera trouvée.
![Page 48: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/48.jpg)
Andrea G. B. Tettamanzi, 2012 48
Expertise de conception
La différence entre un concepteur débutant et un expert :
– Parcours par essais et erreurs ;
– répertoire de solutions déjà conçues ;
– Aptitude à trouver la solution la plus appropriée.
Autrement dit, le concepteur expert possède un répertoire de schémas de conception prouvés qu'il peut adapter à des nouvelles situations.
Ceci est le sens de patron de conception.
![Page 49: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/49.jpg)
Andrea G. B. Tettamanzi, 2012 49
Patron de conception
Un patron de conception décrit :
– Un problème que l'on retrouve souvent en écrivant des programmes ;
– Le noyau de sa solution.
![Page 50: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/50.jpg)
Andrea G. B. Tettamanzi, 2012 50
Structure d'un patron
Un patron de conception est constitué par :
– Son nom;
– La description du problème, du contexte d'application ;
– La solution :
– Éléments (classes et objets) constitutifs ;
– Les relations entre les éléments ;
– Les conséquences de son application :
– résultats;
– Avantages/désavantages.
![Page 51: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/51.jpg)
Andrea G. B. Tettamanzi, 2012 51
Exemples de patrons
Des patrons sont la réédition orientée objet de techniques de
programmation très anciennes :
ex. interprète.
D'autres patrons peuvent servir comme des briques de base pour construire des architectures logicielles versatiles et performantes :
ex. adaptateur, itérateur, etc.
![Page 52: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/52.jpg)
Andrea G. B. Tettamanzi, 2012 52
Pour approfondir
Il existe des ouvrages qui examinent les patrons de conception les
plus importants. Par exemple :
Gamma, Helm, Johnson, Vlissides
Design Patterns: Elements of reusable object-oriented software
Addison-Wesley, 1995
![Page 53: Algorithmique Programmation Objettettaman/Classes/AlgoProgObjet/2012/...Programmation orientée objet Discipline de programmation dans laquelle le programmeur établit • non seulement](https://reader033.vdocuments.pub/reader033/viewer/2022050100/5f3fadce0255cc14281fc212/html5/thumbnails/53.jpg)
Andrea G. B. Tettamanzi, 2012 53
Merci de votre attention