Eric Anquetil ([email protected])
Dépt. Informatique
Insa
Rennes
Eric Anquetil ([email protected])
Dépt. Informatique
Insa Rennes
Insa
Rennes
Version 4.2
Insa
Rennes
uéesuées
Notes de cours sur la
p
ro
g
rammation orientée ob
j
ets
c
es appliq
c
es appliq
pg j
en C++ et Java
d
es scien
cd
es scien
c
national
d
national
d
Institut Institut
Eric Anquetil ([email protected]) 03/09/2010
Eric Anquetil ([email protected]) / CPOO C++ et Java / Version
4.2 / 02/09/2010 1
Notes de cours sur la
programmation orientée objets
en C++ et Java
Préambule
Une première approche
des concepts objets
Vers la programmation objet
Programmation modulaire (encapsulation)
CC++
Abstraction de données CC++
Abstraction de données / généricité … CC++
Introduction à la programmation orientée objet
Concepts objets : la notion d’objet
Concepts objets : la notion de classe
Généricité : Héritage
Généricité : Héritage et Polymorphisme
Agrégation
L'approche objet
Les langages C++ et Java
Notion d’objet et de classe en C++
Les classes - définition
Les classes - définition d’une méthode
Les classes - instanciation
Encapsulation
Constructeurs - Déclaration
Constructeurs - Définition
Constructeurs - Surcharge
Surcharge de fonction
Arguments par défaut
Membre static
Variable
static
Fonction membre constante
Fonction inline
Quelques éléments
pour programmer en C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Eric Anquetil ([email protected]) 03/09/2010
Eric Anquetil ([email protected]) / CPOO C++ et Java / Version
4.2 / 02/09/2010 2
- entrées / sorties
- string / vector
- espace de nommage
Structure générale d’un programme
Fichier d'en-tête - Commentaires
Entrées - sorties (Streams ou flots)
Entrées - sorties fichiers
Un 1er petit programme : la classe Date
Un 1er petit programme : utilisation
Classe String
Classe stringstream
Espace de nommage (définition / accès)
Espace de nommage (alias)
Préambule sur la STL … suite dans le chap. STL
Les conteneurs élémentaires
Les Vecteurs (vector)
Les Vecteurs (vector)
Les propriétés de C++
- références / pointeurs
- surcharges d'opérateurs
- friend / classe interne
Références et Pointeurs
Passage par référence
Passage par valeur / Recopie ( )
Passage par référence / Pas de recopie
Retour par valeur ( recopie )
Passage et Retour par référence
Auto-références
Passage par référence et Auto-référence
Surcharge d’opérateurs conventionnels
Conversion implicite
Définition externe étendue
Notion d’ami : Friend
Surcharge d’opérateurs et notion de Friend
Classe interne : "nested class"
Gestion de la mémoire
- allocation
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Eric Anquetil ([email protected]) 03/09/2010
Eric Anquetil ([email protected]) / CPOO C++ et Java / Version
4.2 / 02/09/2010 3
- affectation / clonage
- constructeur par recopie
Les zones mémoires
Allocation dynamique et libération
Notion de destructeur : ~X( )
Une 1ère amorce de programmation de liste
Mise en œuvre du destructeur
Allocation de n éléments
Opérateur d’ Affectation
( operator = )
Affectation en profondeur
Constructeur par recopie
Implémentation d’un constructeur par recopie
Une implémentation homogène
Une implémentation homogène
Remarques et notion de clonage
Bilan : Affectation et Constructeur par recopie
Gestion mémoire
en Java (Rappel)
Le ramasse miette ou « garbage collector »
La méthode finalize()
Conception objet en C++
- agrégation
- héritage
- polymorphisme
- attachement statique et dynamique
- fonction virtuelle
- classe abstraite
Abstraction - Généricité
Agrégation : classe Point / Rectangle
Agrégation : exemple de Base
Héritage : exemple de Base
Contrôle d’accès aux membres - : privé + :
publique #: protected
Contrôle d’accès à la classe de base
Constructeurs : agrégation et héritage
Redéfinition <> Surcharge
Relation entre classe de base et classe dérivée
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
Eric Anquetil ([email protected]) 03/09/2010
Eric Anquetil ([email protected]) / CPOO C++ et Java / Version
4.2 / 02/09/2010 4
Relation entre classe de base et classe dérivée
Résumé : héritage, agrégation, …
Polymorphisme : conversion entre objets
Polymorphisme : conversion entre objets
Polymorphisme : conversion entre pointeurs
Polymorphisme : conversion entre pointeurs
Fonctions virtuelles
Attachement statique et dynamique
Collection hétérogène d’objets
Classe abstraite
Destructeur virtuel
Copie en profondeur & clonage
Exemple possible de définition de figure : Figure.h
Figure.cpp
Figure_exe.cpp && résultats
Concepts avancés en Java / C++
Un petit bilan : le modèle objet en JAVA / C++
Héritage multiple et Interface
Héritage multiple C++ et Interface JAVA
Cas simple d’héritage multiple en C++
Héritage multiple : classe de base dupliquée
Héritage multiple : partage de classe de Base
Résolution des ambiguïtés
Utilisation de l’héritage multiple ?
Interface Java
Interface Java
Exemple d'utilisation d'interface
Exemple d'interface : diagramme de classe
NB : Interface et héritage
Interface Versus Classe abstraite
Classe paramétrée
notion de Template
Introduction : classes paramétrées
Mise en œuvre de classe
template
(interface .h)
Mise en œuvre de classe
template
(f. membres)
Template
multi-type (paramétrage /type ou
/valeur)
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
Eric Anquetil ([email protected]) 03/09/2010
Eric Anquetil ([email protected]) / CPOO C++ et Java / Version
4.2 / 02/09/2010 5
Paramètre template par défaut
Fonction template et Spécialisation
Précautions avec «l'instanciation»
Les Generics – en Java
Rappel
Les Generics - introduction
Les Generics – Définition de “generics”
Les Generics – Définition de “generics”
Les Generics – Héritage
Les Generics – Wildcards et Bounded Wildcards
Les méthodes Generic
Introduction à
la librairie standard
du c++ (STL)
Introduction à la STL
Les conteneurs élementaires
Les Vecteurs
Notion d‘itérateur
Recherche - Insertion - Suppression
Les listes
Les files (queue) et piles (stack)
Conteneurs associatifs : set, map,
Les ensembles (set)
Les tables d’associations (map)
Les Objets fonction (foncteur) / operator()
Les Objets fonction / operator()
Les Objets fonction / operator() / fonction trier
(sort)
Concepts avancés en Java
Flots(stream) en Java
Les flots(stream) en Java : java.io.*
Les flots(stream) : flots d'octets (8 bits)
Les flots(stream) : flots de char (16 bits)
Les flots(stream) : flots de char avec tampon
Les flots(stream) : flots de données avec tampon
Les flots(stream) : flots de données avec tampon
Les flots basiques : orientés byte (octet)
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
Eric Anquetil ([email protected]) 03/09/2010
Eric Anquetil ([email protected]) / CPOO C++ et Java / Version
4.2 / 02/09/2010 6
Les flots avancés : orientés char (Unicode)
Java 5 (Tiger) / Rappel
printf - scanner
Printf : Sortie standard formatée
le scanner : entrée formatée
Sérialisation en Java
Sérialisation : introduction
Sérialisation : mise en œuvre automatique
Sérialisation : mise en œuvre automatique
Sérialisation : un 1er exemple
Sérialisation avec Serializable
Sérialisation : un 2ème exemple
Sérialisation : un 2ème exemple
Sérialisation : mise en œuvre manuelle
Sérialisation : manuelle / Exemple
Sérialisation : manuelle / exemple
Sérialisation : partiellement manuelle / transient
Sérialisation : partiellement manuelle / transient
Sérialisation : partiellement manuelle /
Serializable
Sérialisation : partiellement manuelle /
Serializable
Sérialisation : manuelle / exemple
Sérialisation : un premier Bilan
Sérialisation : les données statiques
Sérialisation : les données statiques / exemple
Sérialisation : les données statiques / exemple
Sérialisation : les données statiques / exemple
Masquage / Java
Redéfinition et surcharge (pas de masquage en
Java)
Redéfinition et surcharge (pas de masquage en
Java)
RTTI
Run Time Type Identification
RTTI et Java : getClass / getName / forName /
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
Eric Anquetil ([email protected]) 03/09/2010
Eric Anquetil ([email protected]) / CPOO C++ et Java / Version
4.2 / 02/09/2010 7
newInstance
RTTI et C++ : type_info / typeid
RTTI et C++ : dynamic Cast
Égalité et
Comparaison d'objets en Java
Égalité d'objets
Égalité d'objets (surcharge de equals)
Égalité d'objets (redéfinition de equals)
Comparaison d'instances et héritage
Comparaison rigide : méthode equals()
Comparaison rigide
Comparaison souple : méthode comparable()
Comparaison : exemple de diagramme de classe
Exemple de comparaisons souples et rigides
Gestion des exceptions
Notion d'erreur
Traitement des cas d'erreurs exceptionnelles
Exemple général sur le mécanisme d'exception
Le principe
Protocole C++ : émission d'exceptions
Protocole C++ : spécification d'exceptions
Protocole C++ : fonction terminate
Exceptions standards en C++
Capture et traitement d'exceptions
Protocole Java : lancement d'exceptions
Retransmission d’une exception
Exception standard en Java
Protocole Java : Java.lang.Throwable
Créer vos propres classes d'exceptions
Protocole Java : bloc finally
Remarques sur la gestion mémoire
Bilan sur les exceptions
Application d’un design pattern
Mise en œuvre
du modèle « commande »
Rappels des objectifs du modèle « commande »
Mise en œuvre du undo/redo
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
Eric Anquetil ([email protected]) 03/09/2010
Eric Anquetil ([email protected]) / CPOO C++ et Java / Version
4.2 / 02/09/2010 8
Manipulation de « figures » : undo/redo
Manipulation de figures : undo/redo
Mise en œuvre du modèle « commande » / undo
Mise en œuvre du modèle « commande » / undo
Mise en œuvre du modèle « commande » / undo
Mise en œuvre du modèle « commande » / undo
Mise en œuvre du modèle « commande » / undo
Retour sur le modèle « commande » / undo
Modèle « commande » / gestion de commandes
simples
Utilisation du modèle « Memento »
pour la mise en place du « Undo »
Description du Modèle “Memento”
Exemple d’utilisation : Undo pour la manipulation
d’objets de type A
La classe Memento - MementoA
La classe Auteur – classe A
Le Surveillant - CommandA
Le Surveillant – CommandA / Code
Utilisation /Test
La notion de frameworks
Concept de « framework »
Concept de « framework »
l'Architecture
Document / Vue
des MFC
2 mots sur l'Architecture Document / Vue des
MFC
Exemple de Modèle Document / Vue
Les interdépendances
La notion de document
La notion de vue
Exemple de conception
d’un Framework
Exemple de conception d’un Framework complet
Méthodologie : organisation des classes
Abstraction / Utilisation des concepts génériques
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
1 / 167 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !