Institut national des sciences appliquées
Eric Anquetil ([email protected])
Dépt. Informatique
Insa Rennes
Version 5.0
Institut national des sciences appliquées
Notes de cours sur la
programmation orientée objets
en C++ et Java
Eric Anquetil ([email protected])
Dépt. Informatique
Insa Rennes
Institut national des sciences appliquées
Sommaire
CHAP. 1 : Préambule
Vers la programmation objet 9
Programmation modulaire (encapsulation) C→C++ 10
Abstraction de données C→C++ 11
Abstraction de données / générici… C→C++ 12
Introduction à la programmation orientée objet 13
Concepts objets : la notion d’objet 14
Concepts objets : la notion de classe 15
Généricité : Héritage 16
Généricité : Héritage et Polymorphisme 17
Agrégation 18
L'approche objet 19
Les langages C++ et Java 20
CHAP. 2 : Introduction : Objet et Classe
Les classes - définition 22
Les classes - définition d’une méthode 23
Les classes - instanciation 24
Encapsulation 25
Constructeurs - Déclaration 26
Constructeurs - Définition 27
Constructeurs - Surcharge 28
Surcharge de fonction 29
Arguments par défaut 30
Membre static 31
Variable static 32
Fonction membre constante 33
Fonction inline 34
CHAP. 3 : Ecrire son premier programme
Structure générale d’un programme 36
Fichier d'en-tête - Commentaires 37
Entrées - sorties (Streams ou flots) 38
Entrées - sorties fichiers 39
Un 1er petit programme : la classe Date 40
Un 1er petit programme : utilisation 41
Classe string 42
Classe stringstream 43
Espace de nommage (définition / accès) 44
Espace de nommage (alias) 45
Préambule sur la STL … suite dans le chap. STL 46
Les conteneurs élémentaires 47
Les Vecteurs (vector) : préambule 48
Les Vecteurs (vector) : préambule 49
CHAP. 4 : Références, pointeurs, opérateurs, classes internes
Références et Pointeurs 51
Passage par référence 52
Passage par valeur / Recopie ( ) 53
Passage par référence / Pas de recopie 54
Retour par valeur ( recopie ) 55
Passage et Retour par référence 56
Auto-références 57
Passage par référence et Auto-référence 58
Surcharge d’opérateurs conventionnels 59
Conversion implicite 60
Définition externe étendue 61
Notion d’ami : Friend 62
Surcharge d’opérateurs et notion de Friend 63
Classe interne : "nested class" 64
CHAP. 5 : Mémoire: allocation, clonage, constructeur
Zones mémoires 66
Allocation dynamique et libération 67
Notion de destructeur : ~X( ) 68
Une 1ère amorce de programmation de liste 69
2
Institut national des sciences appliquées
Sommaire
Mise en œuvre du destructeur 70
Allocation de n éléments 71
Opérateur d’ Affectation ( operator = ) 72
Affectation en profondeur 73
Constructeur par recopie 74
Implémentation d’un constructeur par recopie 75
Une implémentation homogène 76
Une implémentation homogène 77
Remarques et notion de clonage 78
Bilan : Affectation et Constructeur par recopie 79
CHAP. 6 : Java : Mémoire (Rappels)
Le ramasse miette ou « garbage collector » 81
La méthode finalize() 82
CHAP. 7 : Aggrégation, héritage, polymorphisme, classe
abstraite
Abstraction - Généricité 84
Agrégation : classe Point / Rectangle 85
Agrégation : exemple de Base 86
Héritage : exemple de Base 87
Contrôle d’accès : privé, publique, protected 88
Contrôle d’accès à la classe de base 89
Constructeurs : agrégation et héritage 90
Redéfinition <> Surcharge 91
Relation entre classe de base et classe dérivée 92
Relation entre classe de base et classe dérivée 93
Résumé : héritage, agrégation, … 94
Polymorphisme : conversion entre objets 95
Polymorphisme : conversion entre objets 96
Polymorphisme : conversion entre pointeurs 97
Polymorphisme : conversion entre pointeurs 98
Fonctions virtuelles 99
Attachement statique et dynamique 100
Collection hétérogène d’objets 101
Classe abstraite 102
Destructeur virtuel 103
Copie en profondeur & clonage 104
Exemple possible de définition de figure : Figure.h 105
Figure.cpp 106
Figure_exe.cpp && résultats 107
CHAP. 8 : Héritage multiple
Héritage multiple C++ et Interface JAVA 109
Cas simple d’héritage multiple en C++ 110
Héritage multiple : classe de base dupliquée 111
Héritage multiple : partage de classe de Base 112
Résolution des ambiguïtés 113
Utilisation de l’héritage multiple ? 114
CHAP. 9 : Java : Interface
Interface Java 116
Exemple d'utilisation d'interface 117
Exemple d'interface : diagramme de classe 118
NB : Interface et héritage 119
Interface Versus Classe abstraite 120
CHAP. 10 : Exceptions
Notion d'erreur 122
Traitement des cas d'erreurs exceptionnelles 123
Exemple général sur le mécanisme d'exception 124
Le principe 125
Protocole C++ : émission d'exceptions 126
Protocole C++ : spécification d'exceptions 127
Protocole C++ : fonction terminate 128
Exceptions standards en C++ 129
Capture et traitement d'exceptions 130
Protocole Java : lancement d'exceptions 131
3
Institut national des sciences appliquées
Sommaire
Retransmission d’une exception 132
Exception standard en Java 133
Protocole Java : Java.lang.Throwable 134
Créer vos propres classes d'exceptions 135
Protocole Java : bloc finally 136
Remarques sur la gestion mémoire 137
Bilan sur les exceptions 138
CHAP. 11 : Template
Introduction : classes paramétrées 140
Mise en œuvre de classe template (interface .h) 141
Mise en œuvre de classe template (f. membres) 142
Template multi-type (paramétrage /type ou /valeur) 143
Paramètre template par défaut 144
Fonction template et Spécialisation 145
Précautions avec «l'instanciation» 146
CHAP. 12 : Java : Generics
Introduction 148
Définition de “generics” 149
Définition de “generics” 150
Héritage 151
Wildcards et Bounded Wildcards 152
Generic 153
CHAP. 13 : STL : Introduction
Introduction à la STL 155
Les conteneurs élementaires 156
Les Vecteurs 157
Notion d‘itérateur 158
Recherche - Insertion - Suppression 159
Les listes 160
Les files (queue) et piles (stack) 161
Conteneurs associatifs : set, map, 162
Les ensembles (set) 163
Les tables d’associations (map) 164
CHAP. 14 : Objet foncteur
Les Objets fonction / operator() 166
Les Objets fonction / operator() / fonction trier (sort) 167
CHAP. 15 : Java : Flots (Stream)
Les flots(stream) en Java : java.io.* 169
flots d'octets (8 bits) 170
flots de char (16 bits) 171
flots de char avec tampon 172
flots de données avec tampon 173
flots de données avec tampon 174
Les flots basiques : orientés byte (octet) 175
Les flots avancés : orientés char (Unicode) 176
CHAP. 16 : Java : Scanner
Printf : Sortie standard formatée 178
le scanner : entrée formatée 179
CHAP. 17 : Java : Sérialisation
introduction 181
mise en œuvre automatique 182
mise en œuvre automatique 183
un 1er exemple 184
Sérialisation avec Serializable 185
un 2ème exemple 186
un 2ème exemple 187
mise en œuvre manuelle 188
Sérialisation : manuelle / Exemple 189
Sérialisation : manuelle / exemple 190
Sérialisation : partiellement manuelle / transient 191
Sérialisation : partiellement manuelle / transient 192
Sérialisation : partiellement manuelle / Serializable 193
4
Institut national des sciences appliquées
Sommaire
Sérialisation : partiellement manuelle / Serializable 194
Sérialisation : manuelle / exemple 195
un premier Bilan 196
Sérialisation : les données statiques 197
Sérialisation : les données statiques / exemple 198
Sérialisation : les données statiques / exemple 199
Sérialisation : les données statiques / exemple 200
CHAP. 18 : Java : Masquage
Redéfinition et surcharge 202
Redéfinition et surcharge 203
CHAP. 19 : RTTI : Run Time Type Identification
RTTI et Java : getClass / getName / forName / newInstance 205
RTTI et C++ : type_info / typeid 206
RTTI et C++ : dynamic Cast 207
CHAP. 20 : Java : Egalité & Comparaison d'objet
Égalid'objets 209
Égalité d'objets (surcharge de equals) 210
Égalid'objets (redéfinition de equals) 211
Comparaison d'instances et héritage 212
Comparaison rigide : méthode equals() 213
Comparaison rigide 214
Comparaison souple : méthode comparable() 215
Comparaison : exemple de diagramme de classe 216
Exemple de comparaisons souples et rigides 217
CHAP. 21 : Interopérabilité : dll & .net
Deux mots sur .net et C++ managé 219
Introduction à l’interopérabilité 220
Mixer du C/C++ avec le C++/CLI au niveau des sources 221
DLL C++ : Dynamic Link Library 222
DLL C++ : Commandes de pré-compilation 223
Wrapper C++/CLI 224
Création de la classe Wrapper en C++ managé 225
Utilisation de la classe Wrapper en C++ managé pure 226
Utilisation de la classe Wrapper en C# 227
Récapitulatif 228
Notion sur le Marshalling (conversion de type) 229
Outils pour automatiser la création du Wrapper (SWIG) 230
Test de la DLL C++ : Classes Coordonnée et Tir 231
Swig : Configuration 232
Swig: Génération & Tests 233
CHAP. 22 : WPF : Introduction
Présentation de Wpf (Windows Presentation Foundation) 235
WPF : code behind / code designer 236
XAML (eXtensible Application Markup Language) 237
Visual Studio : 1ère application wpf / Xaml 238
Visual Studio : Xaml/c# - Réalisation d'une action 239
WPF : Disposition des contrôles WPF dans une fenêtre 240
WPF: le contrôle Canvas / un petit exemple 241
WPF: un petit exemple 242
WPF: liaison avec une Dll C++ 243
WPF: une 1ère idée sur le data binding 244
Aperçu des événements routés 245
Routage d'événements 246
Visual Studio : Solution complète (cf. code) 247
CHAP. 23 : Notion de framework : ex. MFC
Concept de « framework » 249
Concept de « framework » 250
2 mots sur l'Architecture Document / Vue des MFC 251
Exemple de Modèle Document / Vue 252
Les interdépendances 253
La notion de document 254
La notion de vue 255
5
1 / 346 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 !