Programmation Orientée Objet en C++    7ème Partie: Evolution du Modèle Objet                Fabio Hernandez              ...
Vue dEnsemble   Notions de base   Types, variables, opérateurs   Contrôle dexécution   Fonctions   Mémoire dynamique   Qua...
Table des Matières   Motivation   Evolution des langages de programmation   Topologie des langages de programmation   Cycl...
Motivation   Nous nous intéressons principalement aux problèmes du   développement de logiciel de qualité industrielle   C...
Motivation (suite)   Stratégies pour traiter cette complexité         décomposition             "divide et impera"        ...
Motivation (suite)   Il est très difficile et anti-naturel de modéliser les problèmes   du monde réel avec des éléments si...
Evolution des langages de programmation   Première génération        1954-1958        FORTRAN, ALGOL 58        calcul scie...
Evolution des langages de programmation                         (suite)   Deuxième génération (suite)         structure en...
Evolution des langages de programmation                         (suite)   Troisième génération         1962-1970         P...
Topologie des langages de programmation   Première et début de deuxième génération         programmes: données globales et...
Topologie des langages de programmation                       (suite)   Première et début de deuxième génération (suite)  ...
Topologie des langages de programmation                       (suite)   Fin de deuxième et début de troisième génération  ...
Topologie des langages de programmation                       (suite)   Fin de deuxième et début de troisième génération (...
Topologie des langages de programmation                       (suite)   Fin de troisième génération         projets de pro...
Topologie des langages de programmation                        (suite)    Fin de troisième génération (suite)             ...
Topologie des langages de programmation                       (suite)   Langages orientés objet         complexité des don...
Topologie des langages de programmation                       (suite)   Langages orientés objet (suite)POO en C++:Evolutio...
Cycle de vie du logiciel   Plusieurs étapes dans le développement du logiciel         collecte des besoins         analyse...
Cycle de vie du logiciel (suite)   Analyse         objectif: comprendre le problème         identification des classes et ...
Cycle de vie du logiciel (suite)   Implémentation         écriture des programmes en un langage de programmation         p...
Cycle de vie du logiciel (suite)                                          Besoins                     Tests               ...
Eléments du modèle objet   Quatre éléments majeurs du modèle         abstraction         encapsulation         modularité ...
Eléments du modèle objet (suite)   Abstraction         stratégie pour gérer la complexité         caractéristiques essenti...
Eléments du modèle objet (suite)   Modularité         partitionnement dun programme en plusieurs composants individuels   ...
Résumé   Le modèle objet: évolution et pas révolution   Basé sur des concepts qui ont fait leur preuve par le passé   Déco...
Prochain SlideShare
Chargement dans…5
×

Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++

1 337 vues

Publié le

Support material for a continued education course "Introduction to object oriented programming in C++".
In French.

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 337
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
120
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++

  1. 1. Programmation Orientée Objet en C++ 7ème Partie: Evolution du Modèle Objet Fabio Hernandez Fabio.Hernandez@in2p3.fr
  2. 2. Vue dEnsemble Notions de base Types, variables, opérateurs Contrôle dexécution Fonctions Mémoire dynamique Qualité du logiciel Evolution du modèle objet Objets et classes Fonctions membres Classes génériques Héritage Polymorphisme Héritage multiple Entrée/sortiePOO en C++:Evolution du Modèle Objet 172 © 1997-2003 Fabio HERNANDEZ
  3. 3. Table des Matières Motivation Evolution des langages de programmation Topologie des langages de programmation Cycle de vie du logiciel Eléments du modèle objet RésuméPOO en C++:Evolution du Modèle Objet 173 © 1997-2003 Fabio HERNANDEZ
  4. 4. Motivation Nous nous intéressons principalement aux problèmes du développement de logiciel de qualité industrielle Caractéristiques de ces produits complexité: impossible de maîtriser pour un individu taille durée de vie importante de plus en plus des personnes/entreprises dépendent de leur bon fonctionnement (finance, transport, énergie, médecine, médias, télécommunications,...) coûtPOO en C++:Evolution du Modèle Objet 174 © 1997-2003 Fabio HERNANDEZ
  5. 5. Motivation (suite) Stratégies pour traiter cette complexité décomposition "divide et impera" nous avons besoin de comprendre les parties pour maîtriser le tout décomposition par algorithmes décomposition par objets abstraction ignorer les détails et se concentrer sur lessentiel créer un modèle général (idéal) hiérarchie classification identification des propriétés et des structures communes et individuelles identification des interactions entre les objets de la hiérarchiePOO en C++:Evolution du Modèle Objet 175 © 1997-2003 Fabio HERNANDEZ
  6. 6. Motivation (suite) Il est très difficile et anti-naturel de modéliser les problèmes du monde réel avec des éléments si primitifs que les objets de type int, float, double, etc. Besoin de langages de programmation avec plus de capacité expressive Nécessité dexprimer les solutions en termes dobjets plus proches du domaine du problèmePOO en C++:Evolution du Modèle Objet 176 © 1997-2003 Fabio HERNANDEZ
  7. 7. Evolution des langages de programmation Première génération 1954-1958 FORTRAN, ALGOL 58 calcul scientifique le vocabulaire du domaine du problème était les mathématiques ☺ "FORTRAN should virtually eliminate coding and debugging": FORTRAN Preliminary Report, IBM, November 1954 Deuxième génération 1959-1961 FORTRAN II, ALGOL 60, COBOL, LISP accent sur les abstractions algorithmiques sous-programmes compilation séparéePOO en C++:Evolution du Modèle Objet 177 © 1997-2003 Fabio HERNANDEZ
  8. 8. Evolution des langages de programmation (suite) Deuxième génération (suite) structure en bloques types de données description de données fichiers pointeurs listes ramasse-miettes (garbage collection) machines plus puissantes spectre des problèmes automatisables plus large, en particulier pour les applications de gestionPOO en C++:Evolution du Modèle Objet 178 © 1997-2003 Fabio HERNANDEZ
  9. 9. Evolution des langages de programmation (suite) Troisième génération 1962-1970 PL/1, ALGOL 68, PASCAL, SIMULA apparition du transistor et des circuits intégrés coût des machines en baisse machines plus puissantes problèmes plus complexes abstraction des données Quatrième génération 1970- Smalltalk, ADA, C++, EIFFEL, JavaPOO en C++:Evolution du Modèle Objet 179 © 1997-2003 Fabio HERNANDEZ
  10. 10. Topologie des langages de programmation Première et début de deuxième génération programmes: données globales et sous-programmes structure des données globale exposée à tous les sous-programmes difficulté à maintenir lintégrité du système, spécialement pour les gros systèmes sous-programmes fortement couplés signification implicite des donnéesPOO en C++:Evolution du Modèle Objet 180 © 1997-2003 Fabio HERNANDEZ
  11. 11. Topologie des langages de programmation (suite) Première et début de deuxième génération (suite) Données Sous-programmesPOO en C++:Evolution du Modèle Objet 181 © 1997-2003 Fabio HERNANDEZ
  12. 12. Topologie des langages de programmation (suite) Fin de deuxième et début de troisième génération sous-programmes comme mécanisme dabstraction passage des paramètres imbrication de sous-programmes portée et visibilité des déclarations méthode de conception structurée avec les sous-programmes comme brique de base plus de contrôle sur les abstractions algorithmiques pas de solution pour la programmation de grands systèmes pas de support pour la conception des donnéesPOO en C++:Evolution du Modèle Objet 182 © 1997-2003 Fabio HERNANDEZ
  13. 13. Topologie des langages de programmation (suite) Fin de deuxième et début de troisième génération (suite) Données Sous-programmesPOO en C++:Evolution du Modèle Objet 183 © 1997-2003 Fabio HERNANDEZ
  14. 14. Topologie des langages de programmation (suite) Fin de troisième génération projets de programmation plus ambitieux équipes de développement plus grandes besoin de développer différentes parties du même système indépendamment module compilé séparément au début le module était juste un conteneur arbitraire de données et de sous-programmes le module nétait pas considéré comme mécanisme dabstraction pas des règles pour garantir la cohérence sémantique entre les interfaces des modulesPOO en C++:Evolution du Modèle Objet 184 © 1997-2003 Fabio HERNANDEZ
  15. 15. Topologie des langages de programmation (suite) Fin de troisième génération (suite) DonnéesSous-programmes Modules POO en C++:Evolution du Modèle Objet 185 © 1997-2003 Fabio HERNANDEZ
  16. 16. Topologie des langages de programmation (suite) Langages orientés objet complexité des données contribue substantiellement à la complexité globale du système besoin de bons mécanismes de description dobjets abstraits et pas seulement des opérations abstraites notion de type brique de base du modèle physique: collection de classes et objets (module) au lieu de sous-programmes brique de base du modèle logique: classes et objets pas de données globales (ou presque) modèle extensible: à chaque niveau dabstraction des collections dobjets collaborent pour atteindre le comportement souhaitéPOO en C++:Evolution du Modèle Objet 186 © 1997-2003 Fabio HERNANDEZ
  17. 17. Topologie des langages de programmation (suite) Langages orientés objet (suite)POO en C++:Evolution du Modèle Objet 187 © 1997-2003 Fabio HERNANDEZ
  18. 18. Cycle de vie du logiciel Plusieurs étapes dans le développement du logiciel collecte des besoins analyse conception implémentation tests Collecte des besoins description du problème en termes du vocabulaire du domaine règles du domaine en question sont inclues participation des utilisateurs objectif: document avec la spécification des besoinsPOO en C++:Evolution du Modèle Objet 188 © 1997-2003 Fabio HERNANDEZ
  19. 19. Cycle de vie du logiciel (suite) Analyse objectif: comprendre le problème identification des classes et objets du domaine du problème réponse à la question quoi Conception identification des composants logiciels necéssaires pour construire la solution au problème décomposition orientée par les objets du problème description du modèle logique et physique description du modèle statique et dynamique conception des panneaux, des rapports, des bases des données, distribution des applications, composants de communications réponse à la question commentPOO en C++:Evolution du Modèle Objet 189 © 1997-2003 Fabio HERNANDEZ
  20. 20. Cycle de vie du logiciel (suite) Implémentation écriture des programmes en un langage de programmation programmes sont organisés comme une collection dobjets qui coopérent chaque objet est une instance dune classe les classes font partie dune hiérarchie des classes objectif: des programmes exécutables Tests objectif: vérifier que la solution construite correspond aux besoinsPOO en C++:Evolution du Modèle Objet 190 © 1997-2003 Fabio HERNANDEZ
  21. 21. Cycle de vie du logiciel (suite) Besoins Tests Analyse Implémentation Conception if (..) elsePOO en C++:Evolution du Modèle Objet 191 © 1997-2003 Fabio HERNANDEZ
  22. 22. Eléments du modèle objet Quatre éléments majeurs du modèle abstraction encapsulation modularité hiérarchie Trois éléments mineurs types concurrence persistencePOO en C++:Evolution du Modèle Objet 192 © 1997-2003 Fabio HERNANDEZ
  23. 23. Eléments du modèle objet (suite) Abstraction stratégie pour gérer la complexité caractéristiques essentiels dun objet qui servent à définir des limites conceptuelles entre les objets relative à la perspective de lobservateur focalisée sur la vue de lextérieur dun objet séparation entre le comportement de lobjet de son implémentation comment décider quelles sont les bonnes abstractions dun domaine donné? Encapsulation façon de cacher linformation dun objet permet de modifier limplémentation dun objet sans que les utilisateurs de cet objet soient impactés données et procédures sont emballées dans un même paquetPOO en C++:Evolution du Modèle Objet 193 © 1997-2003 Fabio HERNANDEZ
  24. 24. Eléments du modèle objet (suite) Modularité partitionnement dun programme en plusieurs composants individuels interface (limites) bien définies entre les composants dun même programme classes et objets constituent le modèle logique du programme modules constituent le modèle physique compilation séparée Hiérarchie organisation des abstractions relations entre classes exemple: la vache est un mammifèrePOO en C++:Evolution du Modèle Objet 194 © 1997-2003 Fabio HERNANDEZ
  25. 25. Résumé Le modèle objet: évolution et pas révolution Basé sur des concepts qui ont fait leur preuve par le passé Décomposition algorithmique atteint ses limites Langages séloignent de la machine pour sapprocher de plus en plus du domaine du problème Décomposition orientée objet permet de traiter la complexité inhérente aux problèmes daujourdhuiPOO en C++:Evolution du Modèle Objet 195 © 1997-2003 Fabio HERNANDEZ

×