630
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

La programmation orientée objet - 4e édition : Cours et ... · PDF fileÉDITIONS EYROLLES 61, bd Saint-Germain 75240 Paris Cedex 05 Le code de la propriété intellectuelle du 1er

Embed Size (px)

Citation preview

  • Lapproche objet est enseigne dans les universits ds les premiers niveaux des cursus informatiques, car sacomprhension est le prrequis indispensable toute pratique conome, fiable et lgante de la plupart destechniques informatiques qui en sont drives, depuis Java et Python, jusqu UML 2, en passant par C# et C++.Lobjet par la pratique avec Python, Java, C# et C++ et PHP 5 en UML 2Cette quatrime dition de louvrage Lorient objet dcortique lensemble des mcanismes de la programmation objet(classes et objets, interactions entre classes, envois de messages, encapsulation, hritage, polymorphisme, modlisation)en les illustrant dexemples empruntant aux technologies les plus populaires : Java et C#, C++, Python, PHP 5, UML 2, maisaussi les services web, RMI, les bases de donnes objet, diffrentes manires de rsoudre la mise en correspondance relationnel/objet par le langage innovant de requte objet LINQ et enfin les design patterns. Chaque chapitre est introduit parun dialogue vivant, la manire du matre et de llve, et se complte de nombreux exercices en UML 2, Java, Python, PHP 5, C# et C++.

    qui sadresse ce livre ? Ce livre sera lu avec profit par tous les tudiants de disciplines informatiques lies lapproche objet (programmation oriente

    objet, modlisation UML, Java, Python, PHP 5, C#/C++) et pourra tre utilis par leurs enseignants comme matriel de cours. Il est galement destin tous les dveloppeurs qui souhaitent approfondir leur comprhension des concepts objet sous-

    jacents au langage quils utilisent.

    Au sommairePrincipes de base : Lobjet, version passive, version active Notion de classe Interaction et hirarchie des objets Polymorphisme Hritage. La classe, module fonctionnel et oprationnel La classe garante de son bon usage Premier programme complet en Java, PHP 5 et Python, C# et C++. Du procdural lorient objet : Mise en pra-tique Analyse Conception. Les objets parlent aux objets : Envois de messages Association de classes Dpendance de classes. Collaboration entre classes : Compilation Java et effet domino En PHP 5, Python, C# et enC++ Association unidirectionnelle/bidirectionnelle Auto-association Assemblage. Mthodes ou messages :Passage darguments prdfinis dans les messages Arguments objets. Lencapsulation des attributs : Accs aux attri-buts dun objet. Les classes et leur jardin secret : Encapsulation des mthodes Niveaux intermdiaires dencapsu-lation viter leffet papillon. Vie et mort des objets : C++, ou le programmeur seul matre bord Java, PHP 5,Python et C#, ou la chasse au gaspi. UML : Reprsentation graphique standardise Diagrammes de classe et de squen-ce. Hritage Regroupement en superclasses Hritage des attributs Composition : Hritage des mthodes Encapsulation protected Hritage public en C++ Multihritage. Redfinition des mthodes : Un match de footballpolymorphique. Abstraite, cette classe est sans objet : De Canaletto Turner Abstraction syntaxique Supplment de polymorphisme. Clonage, comparaison et assignation dobjets : La classe Object galit, clonageet affectation dobjets en C++ et C#. Interfaces : Favoriser la dcomposition et la stabilit Java, PHP 5 et C# : inter-face via lhritage C++ : fichiers .h et .cpp. Distribution dobjets sur le rseau : RMI Corba Services web.Multithreading : Implmentation en Java, PHP 5, Python et C# Multithreading et diagrammes de squence UML Vers les applications distribues Des threads quirpartis et synchroniss. Programmation vnementielle : Desobjets qui sobservent En Java, PHP 5, Python et C#. Persistance dobjets : Sauvegarde sur fichier La srialisation Bases de donnes relationnelles et objet La bibliothque LINQ. Simulation dun flipper. Les graphes : Liste lie Gnricit 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 daccompagnement www.editions-eyrolles.com.

    Code

    dite

    ur :

    G124

    41

    ISBN

    : 97

    8-2-

    212-

    1244

    1-5

    H. B

    ersi

    ni

    Hugues Bersini Ingnieur physicien, directeur du Laboratoire dintelligence artificielle de lUniversit libre deBruxelles, Hugues Bersini enseigne linformatique et la programmation aux facults polytechniqueet Solvay de cette mme universit.Ivan Wellesz est dveloppeur Java indpendant et formateur Unix, C et Java chez Orsys. Il a travaill treize anschez Tektronix o il a particip la conception dinterfaces homme-machine et de systmes darmes DCN-BREST.

    Prog

    ram

    mat

    ion

    obje

    t

    35

    97

    82

    21

    21

    24

    41

    5

    La programmation

    orienteobjet

    Cours et exercices en UML 2,avec Java 5, C# 2, C++, Python, PHP 5 et LINQ

    Hugues Bersini

    La programmationoriente

    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 1

  • La programmationoriente

    objet

    bersini2008 titre 20/11/08 13:38 Page 1

  • Dans la mme collection

    c. Delannoy. Programmer en Java. Java 5 et 6. N12232, 5e dition, 2007, 800 pages avec CD-Rom.

    J.-B. Boichat. Apprendre Java et C++ en parallle. N 12403, 4e dition, 2008, 600 pages avec CD-Rom.

    a. tasso. Le livre de Java premier langage. Avec 80 exercices corrigs. N12376, 5e dition, 2008, 520 pages avec CD-Rom.

    c. DaBancourt. Apprendre programmer. Algorithmes et conception objet - BTS, Deug, IUT, licence N12350, 2e dition, 2008, 296.

    P. roques. UML 2 par la pratique. tude de cas et exercices corrigs. N12322, 6e dition, 2008, 368.

    a. tasso. Apprendre programmer en ActionScript 3. N12199, 2008, 438 pages.

    a. Brillant. XML. Cours et exercices. N12151, 2007, 282 pages.

    c. Delannoy. C++ pour les programmeurs C. N12231, 6e dition, 2007, 602 pages.

    c. soutou. UML 2 pour les bases de donnes. Avec 20 exercices corrigs. N12091, 2007, 314 pages.

    X Blanc, i. mounier. UML 2 pour les dveloppeurs. N12029, 2006, 202 pages

    h. sutter (trad. t. Petillon). Mieux programmer en C++ N09224, 2001, 215 pages.

    P. haggar (trad. t. thaureauX). Mieux programmer en Java N09171, 2000, 225 pages.

    chez le mme Diteur

    B. meyer. Conception et programmation orientes objet. N12270, 2008, 1222 pages (Collection Blanche).

    t. ziaD. Programmation Python. N11677, 2006, 530 pages (Collection Blanche).

    P. roques. UML 2. Modliser une application web. N11770, 2006, 236 pages (coll. Cahiers du programmeur).

    P. roques, F. Valle. UML 2 en action. De lanalyse des besoins la conception. N12104, 4e dition 2007, 382 pages.

    e. PuyBaret. Swing. N12019, 2007, 500 pages (coll. Cahiers du programmeur)

    e. PuyBaret. Java 1.4 et 5.0. N11916, 3e dition 2006, 400 pages (coll. Cahiers du programmeur)

    S Powers. Dbuter en JavaScript N12093, 2007, 386 pages

    T. temPlier, a. gougeon. JavaScript pour le Web 2.0 N12009, 2007, 492 pages

    J. zelDman. Design web : utiliser les standards, CSS et XHTML. N12026, 2e dition 2006, 444 pages.

    X. BriFFault, s. Ducasse. Programmation Squeak N11023, 2001, 328 pages.

    J.-L. BnarD, l. BossaVit , r.mDina , D. williams. LExtreme Programming, avec deux tudes de cas. N11051, 2002, 300 pages.

    P. rigauX, a. rochFelD. Trait de modlisation objet. N11035, 2002, 308 pages.

  • Hugues Bersini

    La programmationoriente

    objet

    bersini2008 titre 20/11/08 13:38 Page 2

  • DITIONS EYROLLES61, bd Saint-Germain75240 Paris Cedex 05

    www.editions-eyrolles.com

    Le code de la proprit intellectuelle du 1er juillet 1992 interdit en effet expressment la photocopie usage collectif sans autorisation des ayants droit. Or, cette pratique sest gnralise notamment dans les tablissements denseignement, provoquant une baisse brutale des achats de livres, au point que la possibilit mme pour les auteurs de crer des uvres nouvelles et de les faire diter correctement est aujourdhui menace.En application de la loi du 11 mars 1957, il est interdit de reproduire intgralement ou partiellement le

    prsent ouvrage, sur quelque support que ce soit, sans autorisation de lditeur ou du Centre Franais dExploitation du Droit de Copie, 20, rue des Grands-Augustins, 75006 Paris. Groupe Eyrolles, 2009, ISBN : 978-2-212-12441-5

    Cet ouvrage est la quatrime dition avec mise jour et changement de titre de louvrage de Hugues Bersini et Ivan Wellesz paru lorigine sous le titre LOrient objet (ISBN 978-2-212-12084-8)

  • Table des matires

    Avant-propos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    Lorientation objet en deux mots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    Objectifs de louvrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    Plan de louvrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    qui sadresse ce livre ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    CHAPITRE 1

    Principes de base : quel objet pour linformatique ? . . . . . . . . . . . . . . . . . . 9

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

    Stockage des objets en mmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    Lobjet dans sa version passive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    Lobjet dans sa version active . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    Introduction la notion de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    Des