Apprenez à programmer en VB .NET
23 avr. 2013 Apprenez à programmer en VB .NET. Par Hankerspace. Ce PDF vous est offert par ... Installation de Visual Basic 2010 Express .
Apprendre à programmer avec Python 3 - INFOREF
avions personnellement accumulé une assez longue expérience de la programmation sous Visual Basic. (Microsoft) et sous Clarion (Topspeed).
Apprenez A Programmer En Vb Net Copy - librarycalendar.ptsem.edu
il y a 5 jours Getting the books apprenez a programmer en vb net now is not type of challenging means. You ... Download Free PDF View PDF. COURS BARDON -.
Apprendre a Programmer - Christophe Dabancourt
Ce langage algorithmique possède deux avantages par rapport aux langages de programmation classiques (Java C++
Programmation Visual basic - Cours
Si vous lisez ces lignes c'est que vous vous êtes inscrit auprès du CNED pour apprendre à programmer dans le langage Visual Basic (VB).
VISUAL BASIC COURS DINITIATION avec exercices et corrigés
Cela implique également que toutes les notions fondamentales que le programmeur a mises en pratique en algorithmique ou en programmation dans un langage
Créez votre site web avec ASP.NET
12 août 2019 à sans cesse repartir de zéro le langage de programmation est ... VB.NET). Ces deux langages reposent sur un framework : le framework .
Programmation événementielle avec VB.NET
Nous allons opter pour l'utilisation de l'environnement gratuit: Microsoft Visual Basic. 2008 Express. (On peut aussi utiliser Microsoft Visual Studio). On
La programmation orientée objet - 4e édition : Cours et exercices en
Apprendre Java et C++ en parallèle. Apprendre à programmer. ... versions de Visual Basic et Visual C++) en intégrant les mêmes briques de base de l'OO.
COURS DE FORTRAN 90
version du 28 septembre 2011. 1. Page 2. Le but de ce cours est d'apprendre `a programmer en fortran 90. Il est prévu pour 8 séances d'1h20 accompagné de 8
L'approche objet est enseignée dans les universités dès les premiers niveaux des cursus informatiques, car sacompréhension est le prérequis indispensable à toute pratique économe, fiable et élégante de la plupart destechniques informatiques qui en sont dérivées, depuis Java et Python, jusqu'à UML 2, en passant par C# et C++.
L'objet par la pratique avec Python, Java, C# et C++ et PHP 5... en UML 2Cette quatrième édition de l'ouvrage L'orienté objetdécortique l'ensemble des mécanismes de la programmation objet
(classes et objets, interactions entre classes, envois de messages, encapsulation, héritage, polymorphisme, modélisation...
en les illustrant d'exemples empruntant aux technologies les plus populaires : Java et C#, C++, Python, PHP 5, UML 2, mais
aussi les services web, RMI, les bases de données objet, différentes manières de résoudre
la mise en correspondance relationnel/objet par le langage innovant de requête objet LINQ et enfin les design patterns. Chaque chapitre est introduit parun dialogue vivant, à la manière du maître et de l'élève, et se complète de nombreux exercices en UML 2, Java, Python,
PHP 5, C# et C++.
À qui s'adresse ce livre ?
• Ce livre sera lu avec profit par tous les étudiants de disciplines informatiques liées à l'approche objet (programmation orientée
objet, modélisation UML, Java, Python, PHP 5, C#/C++...) et pourra être utilisé par leurs enseignants comme matériel de cours.
• Il est également destiné à tous les développeurs qui souhaitent approfondir leur compréhension des concepts objet sous-
jacents au langage qu'ils utilisent.Au sommaire
Principes de base :L'objet, version passive, version active - Notion de classe - Interaction et hiérarchie des objets -
Polymorphisme - Héritage.
La classe, module fonctionnel et opérationnel- La classe garante de son bon usage - Premier programme complet en Java, PHP 5 et Python, C# et C++. Du procédural à l'orienté objet : Mise en pra- tique - Analyse - Conception. Les objets parlent aux objets :Envois de messages - Association de classes -Dépendance de classes.
Collaboration entre classes :Compilation Java et effet domino - En PHP 5, Python, C# et en C++ - Association unidirectionnelle/bidirectionnelle - Auto-association - Assemblage.Méthodes ou messages :
Passage d'arguments prédéfinis dans les messages - Arguments objets. L'encapsulation des attributs :Accès aux attri-
buts d'un objet.Les classes et leur jardin secret :Encapsulation des méthodes - Niveaux intermédiaires d'encapsu-
lation - Éviter l'effet papillon. Vie et mort des objets :C++, ou le programmeur seul maître à bord - Java, PHP 5,Python et C#, ou la chasse au gaspi.
UML :Représentation graphique standardisée - Diagrammes de classe et de séquen-ce. Héritage - Regroupement en superclasses - Héritage des attributs - Composition : Héritage des méthodes -
Encapsulation protected - Héritage public en C++ - Multihéritage. Redéfinition des méthodes :Un match de football polymorphique. Abstraite, cette classe est sans objet : De Canaletto à Turner - Abstraction syntaxique -Supplément de polymorphisme.
Clonage, comparaison et assignation d'objets :La classe Object - Égalité, clonage et affectation d'objets en C++ et C#. Interfaces :Favoriser la décomposition et la stabilité - Java, PHP 5 et C# : inter- face via l'héritage - C++ : fichiers .h et .cpp. Distribution d'objets sur le réseau :RMI - Corba - Services web.Multithreading :Implémentation en Java, PHP 5, Python et C# - Multithreading et diagrammes de séquence UML -
Vers les applications distribuées - Des threads équirépartis et synchronisés.Programmation événementielle :Des
objets qui s'observent - En Java, PHP 5, Python et C#. Persistance d'objets :Sauvegarde sur fichier - La sérialisation - Bases de données relationnelles et objet - La bibliothèque LINQ. Simulation d'un flipper.Les graphes :Liste liée -
Généricité en C++ et en Java, PHP 5 et Python- Les design patterns.Le code source des exercices et leurs corrections sont fournis sur le site d'accompagnement www.editions-eyrolles.com.
Code éditeur : G12441 • ISBN : 978-2-212-12441-5H. Bersini
Hugues Bersini
Ingénieur physicien, directeur du Laboratoire d'intelligence artificielle de l'Université libre de
Bruxelles, Hugues Bersini enseigne l'informatique et la programmation aux facultés polytechnique et Solvay de cette même université.Ivan Wellesz
est développeur Java indépendant et formateur Unix, C et Java chez Orsys. Il a travaillé treize ans
chez Tektronix où il a participé à la conception d'interfaces homme-machine et de systèmes d'armes à DCN-BREST.
Programmation objet
35 ?9 7 8 2 2 1 2 1 2 4 4 1 5
La programmation
orientée objetCours et exercices en UML 2,
avec Java 5, C# 2, C++, Python, PHP 5 et LINQHugues Bersini
La programmation
orientée objetCours et exercices en UML 2
avec Java 5, C# 2, C++, Python, PHP 5 et LINQ bersini 2008 25/11/08 12:26 Page 1La programmation
orientÈe objet bersini2008 titre 20/11/08 13:38 Page 1DA N S L A M Ê M E C O L L E C T I O N
C . DE L A N N O Y. - Programmer en Java. Java 5 et 6. N°12232, 5e édition, 2007, 800 pages avec CD-Rom.J.-B. B
O I C H AT. - Apprendre Java et C++ en parallèle. N° 12403, 4e édition, 2008, 600 pages avec CD-Rom. A . TASSO. - Le livre de Java premier langage.Avec 80 exercices corrigés.
N°12376, 5e édition, 2008, 520 pages avec CD-Rom. C . DABA N C O U RT. - Apprendre à programmer.Algorithmes et conception objet - BTS, Deug, IUT,
licenceN°12350, 2e édition, 2008, 296.
P. RO Q U E S. - UML 2 par la pratique. Étude de cas et exercices corrigés.N°12322, 6e édition, 2008, 368.
A . TASSO. - Apprendre à programmer en ActionScript 3.N°12199, 2008, 438 pages.
A . BR I L L A N T. - XML. Cours et exercices.N°12151, 2007, 282 pages.
C . DE L A N N O Y. - C++ pour les programmeurs C.N°12231, 6e édition, 2007, 602 pages.
C . SO U T O U. - UML 2 pour les bases de données.Avec 20 exercices corrigés.
N°12091, 2007, 314 pages.
X BL A N C, I. MO U N I E R. - UML 2 pour
les développeurs.N°12029, 2006, 202 pages
H . SU T T E R (trad. T. PE T I L L O N). - Mieux programmer en C++N°09224, 2001, 215 pages.
P. HA G G A R (trad. T. TH A U R E A UX). -
Mieux programmer en Java
N°09171, 2000, 225 pages.
CH E Z L E M Ê M E ÉDI T E U R
B. ME Y E R. - Conception et programmation
orientées objet. N°12270, 2008, 1222 pages (Collection Blanche).T. ZI ADÉ. - Programmation Python.
N°11677, 2006, 530 pages (Collection Blanche).
P. RO Q U E S. - UML 2. Modéliser une application web.N°11770, 2006, 236 pages (coll. Cahiers du
programmeur). P. RO Q U E S, F. VA L L É E. - UML 2 en action.De l'analyse des besoins à la conception.
N°12104, 4e édition 2007, 382 pages.
E . PU YBA R E T. - Swing.N°12019, 2007, 500 pages (coll. Cahiers du
programmeur) E . PU YBA R E T. - Java 1.4 et 5.0.N°11916, 3e édition 2006, 400 pages
(coll. Cahiers du programmeur) S PO W E R S. - Débuter en JavaScript
N°12093, 2007, 386 pages
T.TE MPL I E R, A. GO U G E O N. - JavaScript pour
le Web 2.0N°12009, 2007, 492 pages
J. ZE LDM A N. - Design web : utiliser les standards,CSS et XHTML.
N°12026, 2e édition 2006, 444 pages.
X. BR IF FA U LT, S. DU C A S S E. - Programmation SqueakN°11023, 2001, 328 pages.
J.-L. BÉ N A RD, L. BO S S AVI T , R.MÉDI N A , D. WI L L I A M S. - L'Extreme Programming, avec deux études de cas.N°11051, 2002, 300 pages.
P. RI G A UX, A. RO C HFE LD. - Traité de modélisation objetN°11035, 2002, 308 pages.
Hugues Bersini
La programmation
orientÈe objet bersini2008 titre 20/11/08 13:38 Page 2ÉDITIONS EYROLLES
61, bd Saint-Germain
75240 Paris Cedex 05
www.editions-eyrolles.comLe code de la propriété intellectuelle du 1
er juillet 1992 interdit en effet expressément la photocopie àusage collectif sans autorisation des ayants droit. Or, cette pratique s'est généralisée notamment dans les
établissements d'enseignement, provoquant une baisse brutale des achats de livres, au point que la possibilité
même pour les auteurs de créer des oeuvres nouvelles et de les faire éditer correctement est aujourd'hui
menacée.En application de la loi du 11 mars 1957, il est interdit de reproduire intégralement ou partiellement le
présent ouvrage, sur quelque support que ce soit, sans autorisation de l'éditeur ou du Centre Français d'Exploitation du
Droit de Copie, 20, rue des Grands-Augustins, 75006 Paris. © Groupe Eyrolles, 2009, ISBN : 978-2-212-12441-5Cet ouvrage est la quatrième édition avec mise à jour et changement de titre de l'ouvrage de Hugues Bersini
et Ivan Wellesz paru à l'origine sous le titre " L'Orienté objet » (ISBN 978-2-212-12084-8)Table des matières
Avant-propos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
LÕorientation objet en deux mots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Objectifs de lÕouvrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Plan de lÕouvrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Ë qui sÕadresse ce livre ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
CHAPITRE 1
Principes de base : quel objet pour l'informatique ? . . . . . . . . . . . . . . . . . . 9Le trio
Stockage des objets en mŽmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
LÕobjet dans sa version passive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
LÕobjet dans sa version active . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Introduction ˆ la notion de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Des objets en interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Des objets soumis ˆ une hiŽrarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Polymorphisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
HŽritage bien reu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
CHAPITRE 2
Un objet sans classe... n'a pas de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Constitution dÕune classe dÕobjets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
La classe comme module fonctionnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
La classe comme garante de son bon usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
La classe comme module opŽrationnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Bersini 4e.book Page V Mardi, 2. décembre 2008 7:58 07L'orienté objet
VI Un premier petit programme complet dans les cinq langages . . . . . . . . . . . . . . . . 39La classe et la logistique de développement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
CHAPITRE 3
Du faire savoir au savoir-faire... du procédural à l'OO . . . . . . . . . . . . . . . . 57Objectif objet : les aventures de l'OO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Mise en pratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Impacts de l'orientation objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
CHAPITRE 4
Ici Londres : les objets parlent aux objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Envois de messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Association de classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Dépendance de classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Réaction en chaîne de messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
CHAPITRE 5
Collaboration entre classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Pour en finir avec la lutte des classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
La compilation Java : effet domino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
En C#, en Python, PHP 5 et en C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
De l'association unidirectionnelle à l'association bidirectionnelle . . . . . . . . . . . . . 79Auto-association . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Package et namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
CHAPITRE 6
Méthodes ou messages ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Passage d'arguments prédéfinis dans les messages . . . . . . . . . . . . . . . . . . . . . . . . . 88
Passage d'argument objet dans les messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Une méthode est-elle d'office un message ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
La mondialisation des messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Bersini 4e.book Page VI Mardi, 2. décembre 2008 7:58 07Table des matières
VIICHAPITRE 7
LÕencapsulation des attributs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Accès aux attributs d'un objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Encapsulation : pourquoi faire ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
CHAPITRE 8
Les classes et leur jardin secret . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Encapsulation des méthodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Les niveaux intermédiaires d'encapsulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Afin d'éviter l'effet papillon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
CHAPITRE 9
Vie et mort des objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Question de mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
C++ : le programmeur est le seul maître à bord . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
En Java, C#, Python et PHP 5 : la chasse au gaspi . . . . . . . . . . . . . . . . . . . . . . . . . 148
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
CHAPITRE 10
UML 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Diagrammes UML 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Représentation graphique standardisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Du tableau noir à l'ordinateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Programmer par cycles courts en superposant
les diagrammes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Diagrammes de classe et diagrammes de séquence . . . . . . . . . . . . . . . . . . . . . . . . 165
Diagramme de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Les bienfaits d'UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Diagramme de séquence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
CHAPITRE 11
HŽritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Comment regrouper les classes dans des superclasses . . . . . . . . . . . . . . . . . . . . . . 212Héritage des attributs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Bersini 4e.book Page VII Mardi, 2. décembre 2008 7:58 07L'orienté objet
VIIIHéritage ou composition ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Économiser en rajoutant des classes ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Héritage des méthodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
La recherche des méthodes dans la hiérarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Encapsulation protected . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Héritage et constructeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Héritage public en C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Le multihéritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
CHAPITRE 12
Redéfinition des méthodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
La redéfinition des méthodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Beaucoup de verbiage mais peu d'actes véritables . . . . . . . . . . . . . . . . . . . . . . . . . 255
Un match de football polymorphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
CHAPITRE 13
Abstraite, cette classe est sans objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
De Canaletto à Turner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Des classes sans objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Du principe de l'abstraction à l'abstraction syntaxique . . . . . . . . . . . . . . . . . . . . . 301
Un petit supplément de polymorphisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
CHAPITRE 14
Clonage, comparaison et assignation d'objets . . . . . . . . . . . . . . . . . . . . . . . . 325Introduction à la classe Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Décortiquons la classe Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Test d'égalité de deux objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
Le clonage d'objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
Égalité et clonage d'objets en Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Égalité et clonage d'objets en PHP 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Égalité, clonage et affectation d'objets en C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
En C#, un cocktail de Java et de C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
Bersini 4e.book Page VIII Mardi, 2. décembre 2008 7:58 07Table des matières
IXCHAPITRE 15
Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
Interfaces : favoriser la décomposition et la stabilité . . . . . . . . . . . . . . . . . . . . . . . 363
Java, C# et PHP 5 : interface via l'héritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
Les trois raisons d'être des interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Les Interfaces dans UML 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
En C++ : fichiers .h et fichiers .cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
Interfaces : du local à Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
CHAPITRE 16
Distribution gratuite dÕobjets : pour services rendus sur le rŽseau . . . . . 387Objets distribués sur le réseau : pourquoi ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
RMI (Remote Method Invocation) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
Corba (Common Object Request Broker Architecture) . . . . . . . . . . . . . . . . . . . . . 397Rajoutons un peu de flexibilité à tout cela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
Les services Web sur .Net . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
CHAPITRE 17
Multithreading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Informatique séquentielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
Multithreading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Implémentation en Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
Implémentation en C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
Implémentation en Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
L'impact du multithreading sur les diagrammes de séquence UML . . . . . . . . . . . 434Du multithreading aux applications distribuées . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
Des threads équirépartis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
Synchroniser les threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
CHAPITRE 18
Programmation ŽvŽnementielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
Des objets qui s'observent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
En Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
En C# : les délégués . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
Bersini 4e.book Page IX Mardi, 2. décembre 2008 7:58 07L'orienté objet
XEn Python : tout reste à faire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
Un feu de signalisation plus réaliste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
CHAPITRE 19
Persistance d'objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Sauvegarder l'état entre deux exécutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
Simple sauvegarde sur fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
Sauvegarder les objets sans les dénaturer : la sérialisation . . . . . . . . . . . . . . . . . . . 478
Les bases de données relationnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
Réservation de places de spectacles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
Les bases de données relationnelles-objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
Les bases de données orientées objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
Linq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
CHAPITRE 20
Et si on faisait un petit flipper ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
Généralités sur le flipper et les GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
Retour au Flipper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
CHAPITRE 21
Les graphes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
Le monde regorge de réseaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
Tout d'abord : juste un ensemble d'objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
Liste liée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
La généricité en C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
La généricité en Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
Passons aux graphes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
CHAPITRE 22
Petites chimie et biologie OO amusantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
Pourquoi de la chimie OO ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
Les diagrammes de classe du réacteur chimique . . . . . . . . . . . . . . . . . . . . . . . . . . 567
Quelques résultats du simulateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
La simulation immunologique en OO ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
Bersini 4e.book Page X Mardi, 2. décembre 2008 7:58 07Table des matières
XICHAPITRE 23
Design patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
Introduction aux design patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
Les patterns " truc et ficelle » . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592
Les patterns qui se jettent à l'OO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613
Bersini 4e.book Page XI Mardi, 2. décembre 2008 7:58 07 Bersini 4e.book Page XII Mardi, 2. décembre 2008 7:58 07Avant-propos
Dans les tout débuts de l'informatique, le fonctionnement " intime » des processeurs décidait toujours, en fin
de compte, de la seule manière efficace de programmer un ordinateur. Alors que l'on acceptait tout pro-
gramme comme une suite logique d'instructions, il était admis que l'organisation du programme et la nature
même de ces instructions ne pouvaient s'éloigner de la façon dont le processeur les exécutait : pour l'essentiel,
des modifications de données mémorisées, des déplacements de ces données d'un emplacement mémoire à un
autre, et des opérations d'arithmétique et de logique élémentaire.La mise au point d'algorithmes complexes, dépassant les simples opérations mathématiques et les simples
opérations de stockage et de récupérations de données, obligea les informaticiens à effectuer un premier saut
dans l'abstrait, en inventant un style de langage dit procédural, auquel appartiennent les langages Fortran,
Cobol, Basic, Pascal, C... Ces langages permettaient à ces informaticiens de prendre quelques distances par
rapport au fonctionnement intime des processeurs (en ne travaillant plus directement à partir des adresses
mémoire et en évitant la manipulation directe des instructions élémentaires) et d'élaborer une écriture de
programmes plus proches de la manière naturelle de poser et de résoudre les problèmes. Les codes écrits
dans ces langages devenant indépendants en cela des instructions élémentaires propres à chaque type de
processeur. Ces langages cherchaient à se positionner quelque part entre l'écriture des instructions élémen-
taires et l'utilisation tant du langage naturel que du sens commun. Il est incontestablement plus simple
d'écrire : c = a + b qu'une suite d'instructions telles que : "load a, reg1", "load b, reg2", "add reg3, reg1, reg2", "move c, reg3", ayant pourtant la même finalité. Une opération de traduction automatique,dite de compilation, se charge alors de traduire le programme, écrit au départ dans ce nouveau langage, dans
les instructions élémentaires, seules comprises par le processeur. Cette montée en abstraction permise par
ces langages de programmation présente un double avantage : une facilitation d'écriture et de résolution
algorithmique, ainsi qu'une indépendance accrue par rapport aux différents types de processeur existant
aujourd'hui sur le marché.Plus les problèmes à affronter gagnaient en complexité - comptabilité, jeux automatiques, compréhension et
traduction des langues naturelles, aide à la décision, bureautique, conception et enseignement assistés, pro-
grammes graphiques, etc. -, plus l'architecture et le fonctionnement des processeurs semblaient contraignants, et
plus il devenait vital d'inventer des mécanismes informatiques simples à mettre en oeuvre, permettant une
réduction de cette complexité et un rapprochement encore plus marqué de l'écriture des programmes des
manières humaines de poser et de résoudre les problèmes.Avec l'intelligence artificielle, l'informatique s'inspira de notre mode cognitif d'organisation des connaissances,
comme un ensemble d'objets conceptuels entrant dans un réseau de dépendance et se structurant de manière
taxonomique. Avec la systémique ou la bioinformatique, l'informatique nous révéla qu'un ensemble d'agents
au fonctionnement élémentaire, mais s'influençant mutuellement, peut produire un comportement émergent
d'une surprenante complexité. La complexité affichée par le comportement d'un système observé dans sa
Bersini 4e.book Page 1 Mardi, 2. décembre 2008 7:58 07L'orienté objet
2globalité ne témoigne pas systématiquement d'une complexité équivalente lorsque l'attention est portée sur
chacune des parties composant ce système et prise isolément. Dès lors, pour comprendre jusqu'à reproduire ce
comportement par le biais informatique, la meilleure approche consiste en une découpe adéquate du système
en ses parties et une attention limitée au fonctionnement de chacune d'entre elle.Tout cela mis ensemble : la nécessaire distanciation par rapport au fonctionnement du processeur, la
volonté de rapprocher la programmation du mode cognitif de résolution de problème, les percées de l'intel-
ligence artificielle et de la bio-informatique, le découpage comme voie de simplification des systèmes appa-
rement complexes, conduisit graduellement à un deuxième style de langage de programmation, un tout petit
peu plus récent, bien que fêtant ses 45 ans d'existence (l'antiquité à l'échelle informatique: les langages
orientés objets, tels Simula, Smalltalk, C++, Eiffel, Java, C#, Delphi, Power Builder, Python et bien
d'autres...L'orientation objet en deux mots
À la différence de la programmation procédurale, un programme écrit dans un langage objet répartit l'effort de
résolution de problèmes sur un ensemble d'objets collaborant par envoi de messages. Chaque objet se décrit
par un ensemble d'attributs (partie statiqueuts (partie dyna-mique). Certains de ces attributs étant l'adresse des objets avec lesquels les premiers collaborent, il leur est
possible de déléguer certaines des tâches à leurs collaborateurs. Le tout s'opère en respectant un principe de
distribution des responsabilités on ne peut plus simple, chaque objet s'occupant de ses propres attributs.
Lorsqu'un objet exige de s'informer ou de modifier les attributs d'un autre, il charge cet autre de s'acquitter de
cette tâche. Cette programmation est fondamentalement distribuée, modularisée et décentralisée. Pour autant
qu'elle respecte également des principes de confinement et d'accès limité (dit d'encapsulation
décrirons dans l'ouvrage, cette répartition modulaire a également l'insigne avantage de favoriser la stabilité
des développements, en restreignant au maximum l'impact de modifications apportées au code au cours du
temps. Ces impacts seront limités aux seuls objets qu'ils concernent et à aucun de leurs collaborateurs, même
quotesdbs_dbs23.pdfusesText_29[PDF] Le guide de l 'apprentissage - Canton de Vaud
[PDF] Fondements de l 'Apprentissage Automatique Classification - LIFL
[PDF] Apprentissage Automatique Définition ? (Wikipedia)
[PDF] Intelligence artificielle avec apprentissage automatique pour l
[PDF] Apprentissage artificiel
[PDF] Fondements de l 'Apprentissage Automatique Introduction - LIFL
[PDF] Dossier escrime 1
[PDF] mon cahier d ecriture - Bic Kids
[PDF] Les préalables ? l apprentissage de l écriture cursive
[PDF] PROGRESSION En ECRITURE CURSIVE Au CP - IEN Beaune
[PDF] Apprentissage du franais oral et crit Adultes immigrs : Tome 2
[PDF] La progression en spirale - Lyon
[PDF] L 'apprentissage dans la fonction publique de l 'État - Portail de la
[PDF] Le guide de l 'apprentissage 2016 - Cdg59