• Aide
  • Eurêkoi Eurêkoi

Livre

La programmation orientée objet : cours et exercices en UML2, Python, PHP, C#, C++ et Java, y compris Android

Résumé

Description des mécanismes de la programmation orientée objet avec des exemples tirés des langages les plus connus comme Java, C++ ou UML 2. Avec de nombreux exercices. ©Electre 2017


  • Éditeur(s)
  • Date
    • DL 2017
  • Notes
    • La couv. porte en plus : "Code source des exemples du livre"
  • Langues
    • Français
  • Description matérielle
    • 1 vol. (XXI-672 p.) : ill. ; 23 cm
  • Collections
  • Sujet(s)
  • ISBN
    • 978-2-212-67399-9
  • Indice
  • Quatrième de couverture
    • La programmation orientée objet

      7e édition

      Le manuel indispensable à tout étudiant en informatique (IUT, écoles spécialisées, écoles d'ingénieurs)

      Cette septième édition de l'ouvrage L'orienté objet décortique l'ensemble des mécanismes de la programmation objet (classes et objets, interactions entre classes, envois de messages, encapsulation, héritage, polymorphisme, interface, multithreading, sauvegarde des objets, programmation distribuée, modélisation...) en les illustrant d'exemples empruntant aux technologies les plus populaires : Java (y compris pour Android) et C#, C++, Python, PHP, UML 2, mais aussi les services web, Corba, les bases de données objet, différentes manières de résoudre la mise en correspondance relationnel/objet dont 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 (y compris Android), Python, PHP, C# et C++.

      À qui s'adresse cet ouvrage ?

      ¤ 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 [y compris pour Android], Python, PHP, 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.


  • Tables des matières
      • La programmation orientée objet

      • Cours et exercices en UML2, Python, PHP, C#, C++ et Java (y compris Android)

      • Hugues Bersini

      • Eyrolles

      • Chapitre 1
        Principes de base : quel objet pour l'informatique ?1
      • Le trio <entité, attribut, valeur>2
      • Stockage des objets en mémoire 2
      • Types primitifs4
      • Le référent d'un objet5
      • Plusieurs référents pour un même objet6
      • L'objet dans sa version passive 7
      • L'objet et ses constituants7
      • Objet composite8
      • Dépendance sans composition9
      • L'objet dans sa version active 9
      • Activités des objets9
      • Les différents états d'un objet9
      • Les changements d'état : qui en est la cause ?10
      • Comment relier les opérations et les attributs ?10
      • Introduction à la notion de classe 11
      • Méthodes et classes11
      • Sur quel objet précis s'exécute la méthode ?13
      • Des objets en interaction 14
      • Comment les objets communiquent14
      • Envoi de messages15
      • Identification des destinataires de message15
      • Des objets soumis à une hiérarchie 16
      • Du plus général au plus spécifique16
      • Dépendance contextuelle du bon niveau taxonomique17
      • Polymorphisme 18
      • Héritage bien reçu18
      • Exercices19
      • Chapitre 2
        Un objet sans classe... n'a pas de classe21
      • Constitution d'une classe d'objets 22
      • Définition d'une méthode de la classe : avec ou sans retour23
      • Identification et surcharge des méthodes par leur signature24
      • La classe comme module fonctionnel 26
      • Différenciation des objets par la valeur des attributs26
      • Le constructeur26
      • Mémoire dynamique, mémoire statique28
      • La classe comme garante de son bon usage 29
      • La classe comme module opérationnel 30
      • Mémoire de la classe et mémoire des objets30
      • Méthodes de la classe et des instances32
      • Un premier petit programme complet dans les cinq langages 32
      • En Java33
      • En C#35
      • En C++37
      • En Python40
      • En PHP42
      • La classe et la logistique de développement 45
      • Classes et développement de sous-ensembles logiciels45
      • Classes, fichiers et répertoires45
      • Exercices 46
      • Chapitre 3
        Du faire savoir au savoir-faire du procédural à l'OO51
      • Objectif objet : les aventures de l'OO 52
      • Argumentation pour l'objet52
      • Transition vers l'objet52
      • Mise en pratique 53
      • Simulation d'un écosystème53
      • Analyse 53
      • Analyse procédurale53
      • Fonctions principales54
      • Conception 55
      • Conception procédurale55
      • Conception objet55
      • Conséquences de l'orientation objet 56
      • Les acteurs du scénario56
      • Indépendance de développement et dépendance fonctionnelle57
      • Petite allusion (anticipée) à l'héritage58
      • La collaboration des classes deux à deux58
      • Chapitre 4
        Ici Londres : les objets parlent aux objets59
      • Envois de messages 60
      • Association de classes 61
      • Dépendance de classes 63
      • Réaction en chaîne de messages 66
      • Exercices 67
      • Chapitre 5
        Collaboration entre classes69
      • Pour en finir avec la lutte des classes 70
      • La compilation Java : effet domino 70
      • En C(...), Python, PHP ou C++ 71
      • De l'association unidirectionnelle à l'association bidirectionnelle 73
      • Auto-association 76
      • Paquets et espaces de noms 78
      • Exercices 81
      • Chapitre 6
        Méthodes ou messages ?83
      • Passage d'arguments prédéfinis dans les messages 84
      • En Java84
      • Résultat 84
      • En C(...)85
      • Résultat 86
      • En C++86
      • Résultat 87
      • En Python87
      • Résultat 88
      • En PHP88
      • Passage d'argument objet dans les messages 89
      • En Java89
      • Résultat 90
      • En C(...)91
      • Résultat 92
      • En PHP93
      • En C++94
      • Résultat passage par valeur 95
      • Résultat passage par référent 95
      • En Python96
      • Résultat 96
      • Une méthode est-elle d'office un message ? 97
      • Même message, plusieurs méthodes97
      • Nature et rôle, type, classe et interface : quelques préalables97
      • Interface : liste de signatures de méthodes disponibles98
      • Des méthodes strictement internes99
      • La mondialisation des messages 100
      • Message sur Internet100
      • L'informatique distribuée101
      • Exercices101
      • Chapitre 7
        L'encapsulation des attributs107
      • Accès aux attributs d'un objet 108
      • Accès externe aux attributs108
      • Cachez ces attributs que je ne saurais voir108
      • Encapsulation des attributs109
      • En Java 109
      • En C++ 110
      • En C(...) 111
      • En PHP 112
      • En Python 113
      • Encapsulation : pour quoi faire ? 114
      • Pour préserver l'intégrité des objets114
      • La gestion d'exception115
      • Pour cloisonner leur traitement117
      • Pour pouvoir faire évoluer leur traitement en douceur117
      • La classe : enceinte de confinement119
      • Exercices 119
      • Chapitre 8
        Les classes et leur jardin secret121
      • Encapsulation des méthodes 122
      • Interface et implémentation122
      • Toujours un souci de stabilité123
      • Signature d'une classe : son interface125
      • Les niveaux intermédiaires d'encapsulation 126
      • Classes amies 126
      • Une classe dans une autre 127
      • Utilisation des paquets 128
      • Exercices 130
      • Chapitre 9
        Vie et mort des objets131
      • Question de mémoire 132
      • L'OO coûte cher en mémoire133
      • Qui se ressemble s'assemble : le principe de localité133
      • Les objets intermédiaires134
      • Mémoire pile134
      • En C++ 136
      • C(...) 137
      • Disparaître de la mémoire comme de la vie réelle138
      • Mémoire tas139
      • C++ : le programmeur est le seul maître à bord 139
      • La mémoire a des fuites141
      • En Java, C(...), Python et PHP : la chasse au gaspi 143
      • En Java143
      • C(...)144
      • En PHP145
      • Le ramasse-miettes (ou garbage collector)145
      • Des objets qui se mordent la queue146
      • En Python147
      • Exercices 150
      • Chapitre 10
        UML155
      • Diagrammes UML 156
      • Représentation graphique standardisée 156
      • Du tableau noir à l'ordinateur 157
      • Programmer par cycles courts en superposant les diagrammes 159
      • Diagramme de classe et diagramme de séquence 160
      • Diagramme de classe 161
      • Une classe161
      • En Java : UML1.java 161
      • En C(...) : UML1.cs 162
      • En C++ : UML1.cpp 162
      • En Python : UML1.py 163
      • En PHP : UML1.php 164
      • Similitudes et différences entre les langages164
      • Association entre classes165
      • En Java : UML2.java 165
      • En C(...) : UML2.cs 166
      • En C++ : UML 2.cpp 167
      • En Python : UML 2.py 168
      • En PHP : UML2.php 169
      • Similitudes et différences entre les langages169
      • Pas d'association sans message170
      • Rôles et cardinalité171
      • Dépendance entre classes179
      • Composition180
      • En Java181
      • UML3.java 182
      • UML.3bis.java 184
      • En C#185
      • UML3.cs 186
      • UML3bis.cs 187
      • En C++188
      • UML3.cpp 189
      • UML3bis.cpp 191
      • En Python192
      • UML3.py 192
      • UML3bis.py 193
      • En PHP194
      • Classe d'association195
      • Les paquets196
      • Les bienfaits d'UML 197
      • Un premier diagramme de classe de l'écosystème197
      • Des joueurs de football qui font leurs classes197
      • Les avantages des diagrammes de classes197
      • Un diagramme de classe à faire, mais qui décrit une réalité complexe à exécuter. 199
      • Procéder de manière modulaire et incrémentale200
      • Diagramme de séquence 200
      • Diagramme d'états-trasitions 206
      • Exercices 210
      • Chapitre 11
        Héritage217
      • Comment regrouper les classes dans des superclasses ? 218
      • Héritage des attributs 219
      • Pourquoi l'addition de propriétés ?222
      • L'héritage : du cognitif aux taxonomies222
      • Interprétation ensembliste de l'héritage223
      • Qui peut le plus peut le moins224
      • Héritage ou composition ? 224
      • Économiser en ajoutant des classes ? 225
      • Héritage des méthodes 226
      • Code Java229
      • Code C#230
      • Code C++231
      • Code Python233
      • Code PHP234
      • La recherche des méthodes dans la hiérarchie 235
      • Encapsulation protected 236
      • Héritage et constructeurs 237
      • Premier code Java237
      • Deuxième code Java238
      • Troisième code Java : le plus logique et le bon239
      • En C#240
      • En C++241
      • En Python242
      • En PHP242
      • Héritage public en C++ 243
      • Le multihéritage 244
      • Ramifications descendantes et ascendantes244
      • Multihéritage en C++ et Python245
      • Code C++ illustrant le multihéritage 246
      • Code Python illustrant le multihéritage 247
      • Des méthodes et attributs portant un même nom dans des superclasses distinctes248
      • Code C++ illustrant un premier problème lié au multihéritage 248
      • En Python 250
      • Plusieurs chemins vers une même superclasse251
      • Code C++ : illustrant un deuxième problème lié au multihéritage 252
      • L'héritage virtuel254
      • Exercices 255
      • Chapitre 12
        Redéfinition des méthodes261
      • La redéfinition des méthodes 262
      • Beaucoup de verbiage mais peu d'actes véritables 263
      • Un match de football polymorphique 264
      • La classe Balle265
      • En Java 265
      • En C++ 266
      • En C(...) 266
      • En Python 266
      • En PHP 266
      • La classe Joueur266
      • En Java 266
      • En C++ 267
      • En C(...) 268
      • En Python 269
      • En PHP 270
      • Précisons la nature des joueurs270
      • En Java 271
      • En C++ 273
      • En C(...) 274
      • En Python 275
      • PHP 275
      • Passons à l'entraîneur276
      • En Java 276
      • En C++ 277
      • En C(...) 278
      • En Python 278
      • PHP 278
      • Passons maintenant au bouquet final279
      • En Java 279
      • Un même ordre mais une exécution différente 280
      • C++ : un comportement surprenant 282
      • Polymorphisme : uniquement possible dans la mémoire tas 285
      • En C(...) 286
      • En Python 288
      • En PHP 289
      • Quand la sous-classe doit se démarquer pour marquer289
      • Les attaquants participent à un casting 290
      • Éviter les « mauvais castings » 291
      • En C++ 292
      • En C(...) 293
      • Le casting a mauvaise presse 293
      • Redéfinition et encapsulation 295
      • Exercices 296
      • Chapitre 13
        Abstraite, cette classe est sans objet307
      • De Canaletto à Turner 308
      • Des classes sans objet 308
      • Du principe de l'abstraction à l'abstraction syntaxique 309
      • Classe abstraite311
      • new et abstract incompatibles312
      • Abstraites de père en fils312
      • Un petit exemple dans quatre langages de programmation312
      • En java 313
      • En C(...) 314
      • En PHP 315
      • En C++ 316
      • L'abstraction en Python317
      • Un petit supplément de polymorphisme 318
      • Les enfants de la balle318
      • Cliquez frénétiquement318
      • Le Paris-Dakar320
      • Le polymorphisme en UML320
      • Exercices 322
      • Exercice 13.11 330
      • Exercice 13.12 331
      • Chapitre 14
        Clonage, comparaison et affectation d'objets333
      • Introduction à la classe Object 334
      • Une classe à compétence universelle334
      • Code Java illustrant l'utilisation de la classe Vector et innovation de Java 5334
      • Nouvelle version du code 335
      • Décortiquons la classe Object 336
      • Test d'égalité de deux objets 338
      • Code Java pour expérimenter la méthode equals(Object o)338
      • Égalité en profondeur341
      • Le clonage d'objets 343
      • Code Java pour expérimenter la méthode clone()343
      • Égalité et clonage d'objets en Python 347
      • Code Python pour expérimenter l'égalité et le clonage347
      • Égalité et clonage d'objets en PHP 348
      • Code PHP pour expérimenter l'égalité et le clonage348
      • Égalité, clonage et affectation d'objets en C++ 350
      • Code C++ illustrant la duplication, la comparaison et l'affectation d'objets350
      • Traitons d'abord la mémoire tas354
      • Surcharge de l'opérateur d'affectation356
      • Comparaisons d'objets356
      • La mémoire pile357
      • Surcharge de l'opérateur de comparaison357
      • Dernière étape358
      • Code C++ de la classe O1 crée automatiquement par Rational Rose359
      • En C(...), un cocktail de Java et de C++ 361
      • Pour les structures361
      • Pour les classes361
      • Code C(...)361
      • Exercices 367
      • Chapitre 15
        Interfaces369
      • Interfaces : favoriser la décomposition et la stabilité 370
      • Java, C(...) et PHP : interface et héritage 370
      • Les trois raisons d'être des interfaces 372
      • Forcer la redéfinition372
      • Code Java illustrant l'interface Comparable 373
      • Code Java illustrant l'interface
      • ActionListener 374
      • Code Java illustrant l'interface KeyListener 376
      • Permettre le multihéritage378
      • La carte de visite de l'objet378
      • Code Java 379
      • Code C(...) 381
      • Code PHP384
      • Les interfaces dans UML 2 385
      • En C++ : fichiers .h et fichiers .cpp 387
      • Interfaces : du local à Internet 390
      • Exercices 391
      • Chapitre 
        Distribution gratuite d'objets : pour services rendus sur le réseau395
      • Objets distribués sur le réseau : pourquoi ? 396
      • Faire d'Internet un ordinateur géant396
      • Répartition des données397
      • Répartition des utilisateurs et des responsables397
      • Peer-to-peer398
      • L'informatique ubiquitaire399
      • Robustesse400
      • RMI (Remote Method Invocation 400
      • Côté serveur401
      • Côté client402
      • RMIC : stub et skeleton404
      • Lancement du registre405
      • Corba (Common Object Request Broker Architecture) 406
      • Un standard : ça compte407
      • IDL407
      • Compilateur IDL vers Java408
      • Côté client409
      • Côté serveur411
      • Exécutons l'application Corba412
      • Corba n'est pas polymorphique413
      • Ajoutons un peu de flexibilité à tout cela 414
      • Corba : invocation dynamique versus invocation statique415
      • Jini415
      • XML : pour une dénomination universelle des services416
      • Les services web sur .Net 418
      • Code C(...) du service418
      • WDSL420
      • Création du proxy420
      • Code C(...) du client421
      • Soap (Simple Object Access Protocol)422
      • Invocation dynamique sous .Net422
      • Invocation asynchrone en .Net424
      • Mais où sont passés les objets ?426
      • Un annuaire des services XML universel : UDDI428
      • Services web versus RMI et Corba429
      • Services web versus Windows Communication Foundation (WCF)429
      • Exercices 430
      • Chapitre 17
        Multithreading433
      • Informatique séquentielle 435
      • Multithreading 436
      • Implémentation en Java 437
      • Implémentation en C(...) 440
      • Implémentation en Python 442
      • L'effet du multithreading sur les diagrammes de séquence UML 443
      • Du multithreading aux applications distribuées 444
      • Des threads équirépartis 445
      • En Java445
      • En C(...)446
      • En Phyton446
      • Synchroniser les threads 447
      • En Java448
      • En C(...)449
      • En Python452
      • Exercices 455
      • Chapitre 18
        Programmation événementielle459
      • Des objets qui s'observent 460
      • En Java 461
      • La plante461
      • Du côté du prédateur462
      • Du côté de la proie463
      • Finalement, du côté de la Jungle463
      • Résultat464
      • En C(...) : les délégués 464
      • Généralités sur les délégués dans .Net464
      • Retour aux observateurs et observables468
      • Tout d'abord, la plante 468
      • Du côté du prédateur 469
      • Du côté de la proie 470
      • Finalement, du côté de la Jungle 470
      • En Python : tout reste à faire 473
      • Un feu de signalisation plus réaliste 475
      • En Java476
      • Exercices 477
      • Chapitre 19
        Persistance d'objets479
      • Sauvegarder l'état entre deux exécutions 480
      • Et que dure le disque dur480
      • Quatre manières d'assurer la persistance des objets480
      • Simple sauvegarde sur fichier 481
      • Utilisation des streams ou flux481
      • Qui sauve quoi ?482
      • En Java482
      • En C(...)484
      • En C++485
      • En Python486
      • En PHP487
      • Sauvegarder les objets sans les dénaturer : la sérialisation 488
      • En Java489
      • En C(...)491
      • En Python492
      • Contenu des fichiers de sérialisation : illisible493
      • Les bases de données relationnelles 493
      • SQL494
      • Une table, une classe494
      • Comment interfacer Java et C(...) aux bases de données496
      • En Java 497
      • En C(...) 499
      • Relations entre tables et associations entre classes501
      • Relation 1-n 502
      • Relation n-n 504
      • Dernier problème : l'héritage 505
      • Réservation de places de spectacles 506
      • Les bases de données relationnelles-objet 511
      • SQL3512
      • Les bases de données orientées objet 514
      • OQL515
      • Django et Python 516
      • LINQ 518
      • Premier exemple de LINQ agissant sur une collection d'objets519
      • Second exemple de LINQ agissant sur une base de données relationnelle521
      • Exercices 524
      • Chapitre 20
        Et si on faisait un petit flipper ?527
      • Généralités sur le flipper et les GUI 528
      • Une petite animation en C(...)533
      • Une version simplifiée de cette même animation en Python539
      • Retour au Flipper 540
      • Code Java du Flipper543
      • Un petit tennis 553
      • Chapitre 21
        Les graphes561
      • Le monde regorge de réseaux 562
      • Tout d'abord : juste un ensemble d'objets 563
      • Liste liée 565
      • En Java567
      • En C++569
      • La généricité en C++ 571
      • La généricité en Java et C(...) 575
      • Passons aux graphes 581
      • Exercices 586
      • Chapitre 22
        Petite chimie OO amusante591
      • Pourquoi de la chimie OO ? 592
      • Chimie computationnelle592
      • Chimie comme plate-forme didactique592
      • Une aide à la modélisation chimique592
      • Les diagrammes de classes du réacteur chimique 593
      • La classe Composant_Chimique593
      • Les classes Composant_Neutre et Composant_Charge 594
      • Les trois sous-classes de composants neutres 595
      • Les trois sous-classes de composants chargés 597
      • La classe NoeudAtomique598
      • La classe NoeudMoléculaire599
      • La classe Liaison599
      • Le graphe moléculaire599
      • Les règles de canonisation 601
      • Les réactions chimiques602
      • Une première réaction de croisement 603
      • Une autre réaction de croisement un peu plus sophistiquée 603
      • Une réaction d'ouverture de liaison 603
      • Réaction de transfert de charge 604
      • Réaction de type Ion-Molecule 604
      • Comment est calculée la cinétique réactionnelle 604
      • La classe Reaction 605
      • Les sous-classes de Reaction 606
      • Quelques résultats du simulateur606
      • Première simulation : une seule molécule produite 607
      • Deuxième simulation : plusieurs molécules produites 607
      • Troisième simulation : De nombreuses molécules complexes produites 608
      • Pourquoi un tel simulateur ? 609
      • La simulation immunologique en OO ? 609
      • Petite introduction au fonctionnement du système immunitaire609
      • Le diagramme UML d'états-transitions611
      • Chapitre 23
        Programmation Java sous Android615
      • Un petit calculateur élémentaire 617
      • Animation avec balles colorées 620
      • Jeu Canon 628
      • Chapitre 24
        Design patterns645
      • Introduction aux design patterns 646
      • De l'architecte à l'archiprogrammeur646
      • Les patterns « trucs et ficelles » 647
      • Le pattern Singleton648
      • Le pattern Adaptateur649
      • Le patterns Patron de méthode, Proxy, Observer et Memento650
      • Le pattern Flyweight651
      • Les patterns Builder et Prototype652
      • Le pattern Façade654
      • Les patterns qui se jettent à l'OO 655
      • Le pattern Command656
      • Le pattern Décorateur659
      • Le pattern Composite662
      • Le pattern Chain of responsability662
      • Les patterns Strategy, State et Bridge663
      • Index669

  • Origine de la notice:
    • FR-751131015
  • Disponible - 681.2(07) BER

    Niveau 3 - Informatique