[PDF] La programmation orientée objet - 4e édition : Cours et exercices en





Previous PDF Next PDF



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 2

Cette 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 par

un 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-5

H. 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 objet

Cours et exercices en UML 2,

avec Java 5, C# 2, C++, Python, PHP 5 et LINQ

Hugues Bersini

La programmation

orientée objet

Cours et exercices en UML 2

avec Java 5, C# 2, C++, Python, PHP 5 et LINQ bersini 2008 25/11/08 12:26 Page 1

La programmation

orientÈe objet bersini2008 titre 20/11/08 13:38 Page 1

DA 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,

licence

N°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 P

O 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.0

N°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 Squeak

N°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 objet

N°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.com

Le 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-5

Cet 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 ? . . . . . . . . . . . . . . . . . . 9

Le trio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

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 reu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 07

L'orienté objet

VI Un premier petit programme complet dans les cinq langages . . . . . . . . . . . . . . . . 39

La classe et la logistique de développement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

CHAPITRE 3

Du faire savoir au savoir-faire... du procédural à l'OO . . . . . . . . . . . . . . . . 57

Objectif 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 . . . . . . . . . . . . . 79

Auto-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 07

Table des matières

VII

CHAPITRE 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 . . . . . . . . . . . . . . . . . . . . . . 212

Héritage des attributs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

Bersini 4e.book Page VII Mardi, 2. décembre 2008 7:58 07

L'orienté objet

VIII

Hé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 . . . . . . . . . . . . . . . . . . . . . . . . 325

Introduction à 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 07

Table des matières

IX

CHAPITRE 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 . . . . . 387

Objets distribués sur le réseau : pourquoi ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388

RMI (Remote Method Invocation) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391

Corba (Common Object Request Broker Architecture) . . . . . . . . . . . . . . . . . . . . . 397

Rajoutons 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 . . . . . . . . . . . 434

Du 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 07

L'orienté objet

X

En 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 07

Table des matières

XI

CHAPITRE 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 07

Avant-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 07

L'orienté objet

2

globalité 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] Apprendre ? vivre ensemble - unesdoc - Unesco

[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