Bertrand Meyer. UConception et programmation orientées objet. T r a d u i t d e l a n g l a i s p a r P i e r r e J o u v e l o t



Documents pareils
Objets et Programmation. origine des langages orientés-objet

Évaluation et implémentation des langages

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

Le génie logiciel. maintenance de logiciels.

PHP. Performances. Audit et optimisation LAMP. Julien Pauli. Cyril Pierre de Geyer. Guillaume Plessis. Préface d Armel Fauveau

Programmation Orientée Objet

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Introduction aux Bases de Données Relationnelles Conclusion - 1

Conception des systèmes répartis

Groupe Eyrolles, 2006, ISBN :

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

IFT2255 : Génie logiciel

Cours de Programmation 2

Éléments de programmation et introduction à Java

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Les nouveaux tableaux de bord des managers

Bases de données et environnements distribués Chapitre I : Architecture logicielle technologies de developpement en environnement

Groupe Eyrolles, 2004 ISBN :

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

Génie Logiciel avec Ada. 4 février 2013

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Traduction des Langages : Le Compilateur Micro Java

Analyse,, Conception des Systèmes Informatiques

Bien architecturer une application REST

Machines virtuelles Cours 1 : Introduction

FLEX 3. Applications Internet riches avec Flash ActionScript 3, MXML et Flex Builder. Aurélien Vannieuwenhuyze

Merise. Introduction

Chapitre VI- La validation de la composition.

Trois nouveaux formulaires sont donc nécessaires : Pour l affichage de la liste, un formulaire de sortie WEB_Liste associé à la table des [Films] ;

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Classes et Objets en Ocaml.

NFP111 Systèmes et Applications Réparties

L essentiel du tableau de bord

ITIL. optimal. pour un service informatique. 2 e édition C H R I S T I A N D U M O N T. Préface de Patrick Abad

programmation S initier à la la Avec des exemples en C, C++, C#, Java et PHP Avec des exemples en C, C++, C#, Java et PHP Claude Delannoy

Gestion technique de l immobilier d entreprise

Cours Bases de données

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Cours en ligne Développement Java pour le web

PG208, Projet n 3 : Serveur HTTP évolué

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

L EAI. par la pratique. François Rivard. Thomas Plantain. Groupe Eyrolles, 2003 ISBN :

Vérification formelle de la plate-forme Java Card

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

TABLE DES MATIÈRES. PRINCIPES D EXPÉRIMENTATION Planification des expériences et analyse de leurs résultats. Pierre Dagnelie

PAUL CORREIA 6 e édition

Recruter sans se tromper

S8 - INFORMATIQUE COMMERCIALE

Cursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement

Programmes des classes préparatoires aux Grandes Ecoles

Programme et contenus Licence d'informatique de Lille, parcours MIAGE, en alternance ou en formation continue (13:40)

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

MANAGEMENT DES SERVICES INFORMATIQUES

MÉTHODOLOGIE PROJET SYSTÈME D INFORMATION DÉCISIONNEL BI - BUSINESS INTELLIGENCE. En résumé :

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

M Études et développement informatique

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

4.2 Unités d enseignement du M1

Java 1.5 : principales nouveautés

La Certification de la Sécurité des Automatismes de METEOR

Bases de données relationnelles : Introduction

UE Programmation Impérative Licence 2ème Année

Introduction au génie logiciel

M Études et développement informatique

Chapitre I : le langage UML et le processus unifié

Cours 1 : La compilation

Sommaire Préface...XV Introduction générale... XVII Introduction à la 2e édition... XXI Définir le tableau de bord...1

Contenu disciplinaire (CK)

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cahier des charges (CDC)

Cursus Sage ERP X3 Outils & Développement. CURSUS Sage ERP X3 Outils & Développement ADVANCED. Outils avancés. 2 jours X3A-ADM. Développement 1 &2

Rapport de Synthèse. Création d un Générateur de modèle PADL pour le langage C++ Sébastien Colladon

Chapitre 2 : Abstraction et Virtualisation

Table des matières. Avant-propos...

CobiT. Implémentation ISO 270. Pour une meilleure gouvernance des systèmes d'information. 2 e édition D O M I N I Q U E M O I S A N D

Modèles système, modèles logiciel et modèles de code dans les applications spatiales

Introduction à la conception de systèmes d information

Sommaire. 1 Introduction Présentation du logiciel de commerce électronique 23

OCL - Object Constraint Language

Conception, architecture et urbanisation des systèmes d information

Elasticité logicielle pour optimiser l empreinte énergétique

Java et les bases de données

Architectures web/bases de données

Intelligence Artificielle et Systèmes Multi-Agents. Badr Benmammar

WEA Un Gérant d'objets Persistants pour des environnements distribués

RTDS G3. Emmanuel Gaudin

Patrons de Conception (Design Patterns)

Brique BDL Gestion de Projet Logiciel

Gestion hybride de la mémoire dynamique dans les systèmes Java temps-réel

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

Urbanisation de système d'information. PLM 3 (Product Lifecycle Management) Élaborations, versions, variantes, configurations

Curriculum Vitae Francis Morissette Juillet Document confidentiel

Transcription:

UConception et programmation orientées objet Bertrand Meyer T r a d u i t d e l a n g l a i s p a r P i e r r e J o u v e l o t Groupe Eyrolles, 2000, pour le texte de la présente édition en langue française. Groupe Eyrolles, 2008, pour la nouvelle présentation, ISBN : 978-2-212-12270-1

Sommaire Partie A Les problèmes 1 1. La qualité du logiciel 3 1.1. FACTEURS EXTERNES ET INTERNES.......................................................... 3 1.2. RAPPEL DES FACTEURS EXTERNES........................................................... 4 1.3. DE LA MAINTENANCE LOGICIELLE.......................................................... 17 1.4. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE............................................ 20 1.5. NOTES BIBLIOGRAPHIQUES................................................................. 20 2. Critères d orientation objet 23 2.1. À PROPOS DES CRITÈRES................................................................... 23 2.2. MÉTHODE ET LANGAGE.................................................................... 24 2.3. IMPLÉMENTATION ET ENVIRONNEMENT.................................................... 33 2.4. BIBLIOTHÈQUES........................................................................... 36 2.5. POUR UNE BANDE-ANNONCE PLUS LONGUE................................................. 37 2.6. NOTES BIBLIOGRAPHIQUES ET RESSOURCES OBJET.......................................... 37 3. Modularité 41 Partie B La route de l orientation objet 39 3.1. CINQ CRITÈRES............................................................................ 42 3.2. CINQ RÈGLES.............................................................................. 48 3.3. CINQ PRINCIPES............................................................................ 55 3.4. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE............................................ 65 3.5. NOTES BIBLIOGRAPHIQUES................................................................. 65

II SOMMAIRE 4. Approches de la réutilisabilité 69 4.1. LES OBJECTIFS DE LA RÉUTILISABILITÉ..................................................... 70 4.2. CE QUE VOUS DEVRIEZ RÉUTILISER......................................................... 72 4.3. RÉPÉTITION DURANT LE DÉVELOPPEMENT LOGICIEL........................................ 76 4.4. OBSTACLES NON TECHNIQUES.............................................................. 77 4.5. LE PROBLÈME TECHNIQUE................................................................. 84 4.6. CINQ EXIGENCES SUR LES STRUCTURES DE MODULE.........................................86 4.7. STRUCTURES MODULAIRES TRADITIONNELLES.............................................. 91 4.8. SURCHARGE ET GÉNÉRICITÉ................................................................ 96 4.9. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE........................................... 101 4.10. NOTES BIBLIOGRAPHIQUES................................................................ 102 5. Vers la technologie objet 105 5.1. LES INGRÉDIENTS DU CALCUL............................................................. 105 5.2. DÉCOMPOSITION FONCTIONNELLE......................................................... 107 5.3. DÉCOMPOSITION ORIENTÉE OBJET......................................................... 118 5.4. CONSTRUCTION DE LOGICIEL ORIENTÉ OBJET.............................................. 120 5.5. PROBLÉMATIQUE......................................................................... 120 5.6. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE........................................... 122 5.7. NOTES BIBLIOGRAPHIQUES................................................................ 123 6. Types abstraits de données 125 6.1. CRITÈRES................................................................................. 126 6.2. VARIATIONS D IMPLÉMENTATION......................................................... 126 6.3. VERS UNE VUE ABSTRAITE DES OBJETS.................................................... 130 6.4. FORMALISER LA SPÉCIFICATION........................................................... 134 6.5. DES TYPES ABSTRAITS DE DONNÉES AUX CLASSES......................................... 145 6.6. AU-DELÀ DU LOGICIEL.................................................................... 151 6.7. SUJETS SUPPLÉMENTAIRES................................................................ 152 6.8. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE........................................... 163 6.9. NOTES BIBLIOGRAPHIQUES................................................................ 163 7. La structure statique : les classes 169 Partie C Techniques orientées objet 167 7.1. LE SUJET N EST PAS LES OBJETS........................................................... 169 7.2. ÉVITER LA CONFUSION CLASSIQUE........................................................ 170 7.3. LE RÔLE DES CLASSES..................................................................... 173

SOMMAIRE III 7.4. UN SYSTÈME DE TYPES UNIFORME......................................................... 175 7.5. UNE CLASSE SIMPLE...................................................................... 176 7.6. CONVENTIONS DE BASE................................................................... 181 7.7. LE STYLE ORIENTÉ OBJET DE CALCUL...................................................... 184 7.8. EXPORTATIONS SÉLECTIVES ET RÉTENTION D INFORMATION............................... 194 7.9. REGROUPER LE TOUT..................................................................... 197 7.10. DISCUSSION.............................................................................. 206 7.11. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE........................................... 216 7.12. NOTES BIBLIOGRAPHIQUES................................................................ 217 8. La structure à l exécution : les objets 219 8.1. LES OBJETS............................................................................... 220 8.2. LES OBJETS COMME OUTILS DE MODÉLISATION............................................ 230 8.3. MANIPULER LES OBJETS ET LES RÉFÉRENCES............................................... 233 8.4. PROCÉDURES DE CRÉATION............................................................... 236 8.5. APPROFONDIR LES RÉFÉRENCES........................................................... 240 8.6. OPÉRATIONS SUR LES RÉFÉRENCES........................................................ 242 8.7. OBJETS COMPOSITES ET TYPES EXPANSÉS.................................................. 252 8.8. ATTACHEMENT : SÉMANTIQUE PAR RÉFÉRENCE ET PAR VALEUR............................ 258 8.9. UTILISER LES RÉFÉRENCES : BÉNÉFICES ET DANGERS....................................... 262 8.10. DISCUSSION.............................................................................. 267 8.11. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE........................................... 273 8.12. NOTES BIBLIOGRAPHIQUES................................................................ 273 9. Gestion de la mémoire 275 9.1. LA VIE DES OBJETS........................................................................ 275 9.2. L APPROCHE DÉCONTRACTÉE............................................................. 286 9.3. RÉCUPÉRER LA MÉMOIRE : LES PROBLÈMES................................................ 288 9.4. DÉSALLOCATION GÉRÉE PAR LE PROGRAMMEUR........................................... 289 9.5. L APPROCHE AU NIVEAU COMPOSANT..................................................... 292 9.6. GESTION AUTOMATIQUE DE LA MÉMOIRE.................................................. 296 9.7. LE COMPTAGE DE RÉFÉRENCES............................................................ 297 9.8. LE RAMASSE-MIETTES..................................................................... 299 9.9. ASPECTS PRATIQUES DU RAMASSE-MIETTES................................................ 304 9.10. UN ENVIRONNEMENT AVEC GESTION DE LA MÉMOIRE...................................... 306 9.11. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE........................................... 309 9.12. NOTES BIBLIOGRAPHIQUES................................................................ 310 10. Généricité 311 10.1. GÉNÉRALISATIONS HORIZONTALE ET VERTICALE DE TYPE.................................. 311 10.2. LA NÉCESSITÉ DE PARAMÉTRISATION DE TYPE............................................. 312 10.3. CLASSES GÉNÉRIQUES.................................................................... 314 10.4. TABLEAUX............................................................................... 319 10.5. LE COÛT DE LA GÉNÉRICITÉ............................................................... 321 10.6. DISCUSSION : CE N EST PAS FINI........................................................... 322

IV SOMMAIRE 10.7. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE........................................... 323 10.8. NOTES BIBLIOGRAPHIQUES................................................................ 323 11. Conception par contrat : construire du logiciel fiable 325 11.1. LES MÉCANISMES DE BASE DE LA FIABILITÉ................................................ 326 11.2. À PROPOS DE LA CORRECTION LOGICIELLE................................................. 326 11.3. EXPRIMER UNE SPÉCIFICATION............................................................ 328 11.4. INTRODUIRE DES ASSERTIONS DANS LES TEXTES LOGICIELS................................ 331 11.5. PRÉCONDITIONS ET POSTCONDITIONS...................................................... 331 11.6. CONTRAT DE FIABILITÉ LOGICIELLE....................................................... 335 11.7. TRAVAILLER AVEC DES ASSERTIONS....................................................... 341 11.8. INVARIANTS DE CLASSE................................................................... 354 11.9. QUAND UNE CLASSE EST-ELLE CORRECTE?................................................ 359 11.10. LA CONNEXION AVEC LES ADT............................................................ 363 11.11. UNE INSTRUCTION D ASSERTION.......................................................... 368 11.12. INVARIANTS ET VARIANTES DE BOUCLE................................................... 370 11.13. UTILISER LES ASSERTIONS................................................................ 377 11.14. DISCUSSION.............................................................................. 386 11.15. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE........................................... 394 11.16. NOTES BIBLIOGRAPHIQUES................................................................ 395 11.17. POST SCRIPTUM : LE CRASH D ARIANE 5.................................................... 397 12. Quand le contrat est rompu : le traitement des exceptions 399 12.1. CONCEPTS DE BASE DU TRAITEMENT DES EXCEPTIONS..................................... 399 12.2. TRAITEMENT DES EXCEPTIONS............................................................ 402 12.3. UN MÉCANISME D EXCEPTION............................................................. 406 12.4. EXEMPLES DE TRAITEMENT D EXCEPTIONS................................................ 409 12.5. LA TÂCHE D UNE CLAUSE DE RÉCUPÉRATION.............................................. 415 12.6. TRAITEMENT AVANCÉ DES EXCEPTIONS................................................... 418 12.7. DISCUSSION.............................................................................. 422 12.8. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE........................................... 423 12.9. NOTES BIBLIOGRAPHIQUES................................................................ 424 13. Mécanismes supplémentaires 425 13.1. INTERFACE AVEC DU LOGICIEL NON OO.................................................... 425 13.2. PASSAGE D ARGUMENTS.................................................................. 430 13.3. INSTRUCTIONS............................................................................ 432 13.4. EXPRESSIONS............................................................................. 437 13.5. CHAÎNES................................................................................. 441 13.6. ENTRÉES ET SORTIES...................................................................... 442 13.7. CONVENTIONS LEXICALES................................................................ 442 13.8. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE........................................... 443

SOMMAIRE V 14. Introduction à l héritage 445 14.1. POLYGONES ET RECTANGLES.............................................................. 446 14.2. POLYMORPHISME......................................................................... 454 14.3. TYPAGE DE L HÉRITAGE................................................................... 457 14.4. LIAISON DYNAMIQUE..................................................................... 465 14.5. CARACTÉRISTIQUES ET CLASSES RETARDÉES.............................................. 467 14.6. TECHNIQUES DE REDÉCLARATION......................................................... 475 14.7. LE SENS DE L HÉRITAGE................................................................... 478 14.8. LE RÔLE DES CLASSES RETARDÉES........................................................ 484 14.9. DISCUSSION.............................................................................. 491 14.10. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE........................................... 500 14.11. NOTES BIBLIOGRAPHIQUES................................................................ 501 15. Héritage multiple 503 15.1. EXEMPLES D HÉRITAGE MULTIPLE......................................................... 503 15.2. RENOMMER LES CARACTÉRISTIQUES...................................................... 518 15.3. APLATIR LA STRUCTURE.................................................................. 524 15.4. HÉRITAGE RÉPÉTÉ........................................................................ 526 15.5. DISCUSSION.............................................................................. 545 15.6. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE........................................... 548 15.7. NOTES BIBLIOGRAPHIQUES................................................................ 548 16. Techniques d héritage 551 16.1. HÉRITAGE ET ASSERTIONS................................................................ 551 16.2. LA STRUCTURE GLOBALE D HÉRITAGE..................................................... 562 16.3. CARACTÉRISTIQUES GELÉES............................................................... 564 16.4. GÉNÉRICITÉ CONTRAINTE................................................................. 567 16.5. LA TENTATIVE D AFFECTATION........................................................... 572 16.6. TYPAGE ET REDÉCLARATION.............................................................. 576 16.7. DÉCLARATION ANCRÉE................................................................... 580 16.8. HÉRITAGE ET RÉTENTION D INFORMATION................................................. 586 16.9. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE........................................... 591 16.10. NOTE BIBLIOGRAPHIQUE.................................................................. 592 17. Typage 593 17.1. LE PROBLÈME DU TYPAGE................................................................. 593 17.2. TYPAGE STATIQUE : POURQUOI ET COMMENT.............................................. 597 17.3. COVARIANCE ET RÉTENTION DE DESCENDANCE............................................ 603 17.4. PREMIÈRES APPROCHES DE LA VALIDITÉ DE SYSTÈME...................................... 610 17.5. COMPTER SUR LES TYPES ANCRÉS......................................................... 612 17.6. ANALYSE GLOBALE....................................................................... 615 17.7. ATTENTION AUX APPELS CAT POLYMORPHES!............................................. 618 17.8. UNE ÉVALUATION........................................................................ 621

VI SOMMAIRE 17.9. L ACCORD PARFAIT....................................................................... 622 17.10. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE........................................... 623 17.11. NOTES BIBLIOGRAPHIQUES................................................................ 623 18. Objets globaux et constantes 625 18.1. CONSTANTES DE TYPE DE BASE............................................................ 626 18.2. UTILISATION DES CONSTANTES............................................................ 627 18.3. CONSTANTES DE TYPE DE CLASSE......................................................... 628 18.4. APPLICATIONS DES ROUTINES À EXÉCUTION UNIQUE....................................... 630 18.5. CONSTANTES DE TYPE CHAÎNE............................................................ 635 18.6. VALEURS UNIQUES........................................................................ 636 18.7. DISCUSSION.............................................................................. 637 18.8. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE........................................... 641 18.9. NOTES BIBLIOGRAPHIQUES................................................................ 641 19. De la méthodologie 645 Partie D Méthodologie orientée objet : bien appliquer la méthode 643 19.1. MÉTHODOLOGIE LOGICIELLE : QUOI ET POURQUOI.......................................... 645 19.2. CONCEVOIR DE BONNES RÈGLES : CONSEIL AUX CONSEILLERS.............................. 646 19.3. DE L UTILISATION DES MÉTAPHORES...................................................... 653 19.4. DE L IMPORTANCE D ÊTRE HUMBLE....................................................... 654 19.5. NOTES BIBLIOGRAPHIQUES................................................................ 655 20. Schéma de conception : systèmes interactifs à écrans multiples 657 20.1. SYSTEMES À ÉCRANS MULTIPLES.......................................................... 657 20.2. UNE TENTATIVE SIMPLISTE................................................................ 659 20.3. UNE SOLUTION FONCTIONNELLE DESCENDANTE........................................... 660 20.4. UNE CRITIQUE DE LA SOLUTION........................................................... 663 20.5. UNE ARCHITECTURE ORIENTÉE OBJET..................................................... 665 20.6. DISCUSSION.............................................................................. 674 20.7. NOTE BIBLIOGRAPHIQUE.................................................................. 674 21. Étude de cas d héritage : défaire dans un système interactif 675 21.1. PERSEVERARE DIABOLICUM............................................................... 675 21.2. TROUVER LES ABSTRACTIONS............................................................. 679

SOMMAIRE VII 21.3. DÉFAIRE-REFAIRE À NIVEAUX MULTIPLES.................................................. 684 21.4. QUESTIONS D IMPLÉMENTATION.......................................................... 686 21.5. UNE INTERFACE UTILISATEUR POUR DÉFAIRE ET REFAIRE.................................. 690 21.6. DISCUSSION.............................................................................. 691 21.7. NOTES BIBLIOGRAPHIQUES................................................................ 694 22. Comment trouver les classes 697 22.1. ÉTUDIER UN DOCUMENT D EXIGENCES..................................................... 698 22.2. LES SIGNAUX DE DANGER................................................................. 703 22.3. HEURISTIQUES GÉNÉRALES POUR TROUVER LES CLASSES................................... 709 22.4. AUTRES SOURCES DE CLASSES............................................................. 713 22.5. RÉUTILISATION........................................................................... 718 22.6. LA MÉTHODE POUR OBTENIR DES CLASSES................................................. 719 22.7. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE........................................... 720 22.8. NOTES BIBLIOGRAPHIQUES................................................................ 721 23. Principes de conception des classes 723 23.1. EFFETS DE BORD DANS LES FONCTIONS.................................................... 724 23.2. COMBIEN D ARGUMENTS PAR CARACTÉRISTIQUE?......................................... 739 23.3. TAILLE DE CLASSE : L APPROCHE DE LA LISTE DE COMMISSIONS............................ 745 23.4. STRUCTURES DE DONNÉES ACTIVES....................................................... 749 23.5. EXPORTATION SÉLECTIVE................................................................. 768 23.6. TRAITER LES CAS ANORMAUX............................................................. 769 23.7. ÉVOLUTION DE CLASSE : LA CLAUSE OBSOLÈTE............................................ 774 23.8. DOCUMENTER UNE CLASSE ET UN SYSTÈME................................................ 775 23.9. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE........................................... 778 23.10. NOTES BIBLIOGRAPHIQUES................................................................ 778 24. Bien utiliser l héritage 781 24.1. COMMENT NE PAS UTILISER L HÉRITAGE................................................... 781 24.2. PRÉFÉRERIEZ-VOUS ACHETER OU HÉRITER?............................................... 784 24.3. UNE APPLICATION : LA TECHNIQUE DU HANDLE............................................ 789 24.4. TAXOMANIE.............................................................................. 791 24.5. UTILISER L HÉRITAGE : UNE TAXONOMIE DE LA TAXONOMIE................................ 793 24.6. UN MÉCANISME, OU PLUSIEURS?.......................................................... 804 24.7. HÉRITAGE DE SOUS-TYPE ET RÉTENTION DE DESCENDANT.................................. 806 24.8. HÉRITAGE D IMPLÉMENTATION............................................................ 814 24.9. HÉRITAGE DE SERVICE.................................................................... 817 24.10. CRITÈRES MULTIPLES ET HÉRITAGE DE VUE................................................ 821 24.11. COMMENT DÉVELOPPER DES STRUCTURES D HÉRITAGE.................................... 827 24.12. UNE VISION D ENSEMBLE : BIEN UTILISER L HÉRITAGE..................................... 830 24.13. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE........................................... 831 24.14. NOTES BIBLIOGRAPHIQUES................................................................ 832 24.15. UNE BRÈVE HISTOIRE DE LA TAXONOMIE.................................................. 832

VIII SOMMAIRE 25. Techniques utiles 841 25.1. PHILOSOPHIE DE CONCEPTION............................................................. 841 25.2. CLASSES................................................................................. 842 25.3. TECHNIQUES D HÉRITAGE................................................................. 843 26. Un penchant pour le style 845 26.1. DE L IMPORTANCE DU STYLE.............................................................. 845 26.2. CHOISIR LES BONS NOMS.................................................................. 849 26.3. UTILISER DES CONSTANTES............................................................... 854 26.4. COMMENTAIRES D EN-TÊTE ET CLAUSES D INDEXATION.................................... 855 26.5. MISE EN PAGES ET PRÉSENTATION......................................................... 861 26.6. FONTES.................................................................................. 869 26.7. NOTES BIBLIOGRAPHIQUES................................................................ 870 27. Analyse orientée objet 873 27.1. LES OBJECTIFS DE L ANALYSE............................................................. 873 27.2. LA NATURE CHANGEANTE DE L ANALYSE.................................................. 876 27.3. LA CONTRIBUTION DE LA TECHNOLOGIE OBJET............................................ 876 27.4. PROGRAMMER UNE STATION DE TÉLÉVISION............................................... 877 27.5. EXPRIMER L ANALYSE : VUES MULTIPLES.................................................. 883 27.6. MÉTHODES D ANALYSE................................................................... 887 27.7. LA NOTATION D OBJETS MÉTIERS.......................................................... 889 27.8. BIBLIOGRAPHIE........................................................................... 892 28. Le processus de construction logicielle 893 28.1. GROUPES................................................................................. 893 28.2. INGÉNIERIE CONCURRENTE............................................................... 894 28.3. ÉTAPES ET TÂCHES....................................................................... 896 28.4. LE MODÈLE DE GROUPE DU CYCLE DE VIE LOGICIEL........................................ 896 28.5. GÉNÉRALISATION......................................................................... 898 28.6. INTÉGRATION ET RÉVERSIBILITÉ.......................................................... 900 28.7. CHEZ NOUS, TOUT EST COMME LE VISAGE.................................................. 902 28.8. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE........................................... 903 28.9. NOTES BIBLIOGRAPHIQUES................................................................ 904 29. Enseigner la méthode 905 29.1. FORMATION INDUSTRIELLE............................................................... 905 29.2. COURS D INTRODUCTION.................................................................. 907 29.3. AUTRES COURS........................................................................... 910 29.4. VERS UNE NOUVELLE PÉDAGOGIE LOGICIELLE............................................. 912 29.5. UN PLAN ORIENTÉ OBJET.................................................................. 916

SOMMAIRE IX 29.6. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE........................................... 918 29.7. NOTES BIBLIOGRAPHIQUES................................................................ 918 PARTIE E ASPECTS AVANCÉS 919 30. Concurrence, répartition, client-serveur et Internet 921 30.1. UN APERÇU............................................................................... 921 30.2. L ESSORT DE LA CONCURRENCE........................................................... 923 30.3. DES PROCESSUS AUX OBJETS.............................................................. 927 30.4. INTRODUCTION DE L EXÉCUTION CONCURRENTE........................................... 934 30.5. QUESTIONS DE SYNCHRONISATION........................................................ 946 30.6. ACCÈS AUX OBJETS SÉPARÉS.............................................................. 951 30.7. CONDITIONS D ATTENTE.................................................................. 960 30.8. DEMANDER UN SERVICE SPÉCIAL.......................................................... 967 30.9. EXEMPLES................................................................................ 972 30.10. VERS UNE RÈGLE DE PREUVE.............................................................. 988 30.11. RÉSUMÉ DU MÉCANISME.................................................................. 990 30.12. DISCUSSION.............................................................................. 993 30.13. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE........................................... 997 30.14. NOTES BIBLIOGRAPHIQUES................................................................ 998 31. Persistance d objets et bases de données 1003 31.1. PERSISTANCE DANS LE LANGAGE......................................................... 1003 31.2. AU-DELÀ DE LA FERMETURE DE PERSISTANCE............................................. 1005 31.3. ÉVOLUTION DE SCHÉMA................................................................. 1007 31.4. DE LA PERSISTANCE AUX BASES DE DONNÉES............................................. 1013 31.5. INTEROPÉRABILITÉ OBJET-RELATIONNEL................................................. 1014 31.6. FONDEMENTS DES BASES DE DONNÉES ORIENTÉES OBJET.................................. 1016 31.7. SYSTÈMES DE BASES DE DONNÉES OO : EXEMPLES......................................... 1022 31.8. DISCUSSION : AU-DELÀ DES BASES DE DONNÉES........................................... 1024 31.9. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE.......................................... 1027 31.10. NOTES BIBLIOGRAPHIQUES............................................................... 1027 32. Quelques techniques OO pour applications graphiques interactives 1029 32.1. OUTILS REQUIS.......................................................................... 1030 32.2. PORTABILITÉ ET ADAPTATION DE PLATE-FORME.......................................... 1033 32.3. ABSTRACTIONS GRAPHIQUES............................................................. 1035 32.4. MÉCANISMES D INTERACTION............................................................ 1037 32.5. TRAITEMENT DES ÉVÉNEMENTS.......................................................... 1039

X SOMMAIRE 32.6. UN MODÈLE MATHÉMATIQUE............................................................ 1043 32.7. NOTES BIBLIOGRAPHIQUES............................................................... 1043 Partie F Appliquer la méthode dans divers langages et environnements 1045 33. Programmation OO et Ada 1047 33.1. RAPPEL HISTORIQUE..................................................................... 1047 33.2. PAQUETAGES............................................................................ 1049 33.3. UNE IMPLÉMENTATION DE PILE........................................................... 1049 33.4. CACHER LA REPRÉSENTATION : L HISTOIRE PRIVÉE........................................ 1053 33.5. EXCEPTIONS............................................................................. 1055 33.6. TÂCHES................................................................................. 1058 33.7. D ADA À ADA 95......................................................................... 1059 33.8. CONCEPTS CLÉS INTRODUITS DANS CE CHAPITRE.......................................... 1064 33.9. NOTES BIBLIOGRAPHIQUES............................................................... 1064 34. Émulation de la technologie objet dans les environnements non OO 1067 34.1. NIVEAUX DE PRISE EN COMPTE PAR LE LANGAGE.......................................... 1067 34.2. PROGRAMMATION ORIENTÉE OBJET EN PASCAL?.......................................... 1069 34.3. FORTRAN................................................................................ 1070 34.4. PROGRAMMATION ORIENTÉE OBJET ET C.................................................. 1073 34.5. NOTES BIBLIOGRAPHIQUES............................................................... 1080 35. De Simula à Java et au-delà : principaux langages et environnements OO 1081 35.1. SIMULA................................................................................. 1081 35.2. SMALLTALK............................................................................. 1094 35.3. EXTENSIONS LISP........................................................................ 1097 35.4. EXTENSIONS C........................................................................... 1098 35.5. JAVA.................................................................................... 1103 35.6. AUTRES LANGAGES OO................................................................... 1104 35.7. NOTES BIBLIOGRAPHIQUES............................................................... 1104

SOMMAIRE XI Partie G Faire les choses bien 1109 36. Un environnement orienté objet 1111 36.1. COMPOSANTS............................................................................ 1111 36.2. LANGAGE............................................................................... 1112 36.3. TECHNOLOGIE DE COMPILATION......................................................... 1112 36.4. OUTILS.................................................................................. 1116 36.5. BIBLIOTHÈQUES......................................................................... 1119 36.6. MÉCANISMES D INTERFACE.............................................................. 1120 36.7. NOTES BIBLIOGRAPHIQUES............................................................... 1127 Épilogue : le langage dévoilé 1129 Partie H ANNEXES 1131 A. Extraits des bibliothèques Base 1133 B. Généricité et héritage 1135 C. Glossaire de la technologie objet 1155 D. Bibliographie 1167 Index 1193