Your SlideShare is downloading. ×
0
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

912

Published on

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

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

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
912
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
96
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Programmation Orientée Objet en C++ 7ème Partie: Evolution du Modèle Objet Fabio Hernandez Fabio.Hernandez@in2p3.fr
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×