Lapproche Objet Séminaire IOS-AT 1996. Chapitre I Introduction.
-
Upload
arlette-picot -
Category
Documents
-
view
103 -
download
0
Transcript of Lapproche Objet Séminaire IOS-AT 1996. Chapitre I Introduction.
L’approche Objet
Séminaire IOS-AT1996
Chapitre IIntroduction
Les entreprises dépendent de plus en plus des données (reçues, traitées ou envoyées) Elles se noient dans cette avalanche d’informations Les matériels (hardware) ne cessent de progresser Les programmes (software) sont le problème La plupart sont livrés hors délais et hors budgets Besoins :
•Disposer de meilleurs programmes•Avoir des délais plus courts
La crise du Software
Construire de meilleurs programmes est un challenge majeur
Comment ?Plusieurs réponses ont été données par le passé
La construction des programmes
1ère approche : le programme mono procédure
•Une seule procédure ou séquence d’instructions•En général, écrits par un seul programmeur•Peuvent être faits par un petit nombre de programmeurs à condition que la communication et les échanges d’informations soient fréquents•Convient pour les petits programmes
La construction des programmes :Les réponses apportées
2ème approche : la programmation modulaire
•Principe : découper en sous-ensembles le système à développer•Est apparue avec l’invention des «subroutines»•Inconvénients : chaque programmeur réalise son sous-programme à sa façon
- Nécessite RIGUEUR- Nécessite DISCIPLINE
La construction des programmesLes réponses apportées
3 ème approche : la programmation structurée
•C’est une évolution de la programmation modulaire•Cela apporte la discipline nécessaire•Rôle central : la décomposition fonctionnelle•Inconvénient majeur : ne permet pas d’appréhender le système final avant de l’avoir implémenté
- Retours arrières fréquents et coûteux
La construction des programmesLes réponses apportées
4ème approche : les outils CASE (AGL’s)
•Computer-Aide-Software-Engineering•Avantage : automatise la programmation structurée•Inconvénients :
- N’apporte pas de valeur ajoutée sur le fond- Est plutôt consommatrice de temps de ressources- N’automatise qu’une partie de la programmation
La construction des programmesLes réponses apportées
5ème approche : les langages de 4ème génération
•Les L4G peuvent générer des programmes directement•Ils peuvent être utilisés par différents niveaux de programmeurs•Mais ne s’appliquent qu’aux problèmes simples et aux programmes restreints
La construction des programmesLes réponses apportées
40 ans après l’invention de la subroutine, on construit encore les systèmes à la main, instruction après instruction.
-Nécessité d’une nouvelle approche
La technologie « orienté-objet » est cette nouvelle approche
La construction des programmes : Conclusion
Chapitre IILes clés de la Technologie Orienté-objet
Dix termes essentiels :Objet, Méthode, Message, Classe, Sous-Classe, Instance, Héritage, Encapsulation, Abstraction et Polymorphisme.
Trois clés pour comprendre l’Orienté-Objet :•Objet•Message•Classe
Le vocabulaire
Le concept objet dans les programmes est n du besoin de modéliser des objets réels
Un objet est composé de •Procédure ou fonctions•Données
En langage objet, les procédures ou fonctions sont appelées Méthodes. Les données sont assimilables à des variables en programmation classique.
Introduction à la notion d’Objet
Les objets peuvent inter-agir de multiples façons
Le message permet de représenter cette inter-action entre les objets
Il est émis un objet émetteur et reçu par un objet récepteur
C’est un Nom d’objet suivi d’une méthode et éventuellement de un ou plusieurs paramètres
Introduction à la notion de message
Une classe définit un groupe d’objets similaires.
La description des méthodes et des données(variables) communes à ces objets ne se fait qu’une seule fois : dans la description de la classe.
Les objets d’une même classe sont appelés instances.
Introduction à la notion de classe
L’héritage est un mécanisme qui permet à une classe d’objets d’être définie à partir d’une autre classe, plus générale, en incluant automatiquement ses méthodes et variables
Cette classe est appelée sous-classe
La classe plus générale est une super-classe
Une sous-classe peut avoir ses propres méthodes et variables, en plus de celles de sa super-classe
L’héritage
Il y a maintenant de nombreux langages «orienté-objet»
Par exemple : - Smalltalk est totalement orienté-objet, conçu sur les principes même de cette technique- C++ est « Hybride » dans la mesure où des concepts orienté-objet ont été greffés au langage C traditionnel.
Programmer avec des objets
Chapitre IIILes Objets
L’objet est assimilable à une cellule :
•Une cellule comprend des données•Une cellule comprend des comportements (assimilables aux fonctions ou procédures appelées Méthodes en Orienté-Objet)•Les cellules communiquent entre elles par des flux électriques (assimilables à des messages)
L’objet : élément de construction naturel
Mettre en relation des données et des comportements(méthodes) s’appelle, en orienté-objet : l’encapsulation
L’encapsulation permet de cacher les informations.Elles ne sont accessibles qu’à travers les méthodesCeci protège les données des objets environnants (et vice versa) et garantit leur intégrité
L’encapsulation
L’encapsulation est vraiment utile en cas de changements
Elle permet une expérimentation facile
Les modifications ne sont à apporter que dans un seul objet
L’encapsulation
En orienté-objet, on raisonne à un niveau d’abstraction élevé puisque l’on représente les objets réels souhaités
Ceci est possible puisque l’on peut définir de nouvelles structures de données et de comportements : les classes d’objets
Les anciens langages limitent les données à des types (integer, string,…)
L’abstraction au niveau des
données
Les objets peuvent aussi contenir d’autres objets
On les appelle alors objets composites
Ceci augmente leur pouvoir de représentation du monde réel
Les objets contenus peuvent aussi contenir d’autres objets, et ainsi de suite
L’abstraction au niveau des données
Chapitre IVLes messages
Les objets inter-agissent par le biais de Messages
A la base, un message comporte 3 parties :
•Le nom d’un objet récepteur•Le nom d’une méthode que l’objet récepteur sait exécuter•Un ou plusieurs paramètres nécessaires à l’exécution de cette méthode
Définition
La syntaxe varie d’un langage à l’autre
L’ordre est quasi systématiquement :Objet Récepteur+Méthode+Paramètres
Seuls les séparateurs varient :Ex : Vehicule104Tourner :90 en SmallTalk
Vehicule104.Tourner(90) en C++
Syntaxe des messages
Les messages requièrent le plus souvent des réponses (feedback)
La réponse est appelée : return value en anglais ou valeur de retour en français
Dans les langages pur orienté-objet (comme smalltalk), la réponse est un objet
Dans les langages hybrides (comme C++), la réponse est un objet ou une simple variable.
Réponse aux messages
Chapitre VLes Classes
Les objets et les messages peuvent suffire à produire un langage orienté-objet (ex ADA)
Mais le concept de classe est celui qui permet encore une plus grande efficacité
Les classes organisent l’approche orienté-objet
De même que le monde est organisé en ordres (mammifères, carnivores, humains, plantes,…), le concept de classes permet une représentation idéale des systèmes
Définition
Les classes définissent les caractéristiques communes des objets
Les instances contiennent uniquement les valeurs des variables
Définition
Un objet qui reçoit un message avec pour ordre d’exécution d’une méthode :
• Cherche une méthode dans sa classe• Si pas présente, dans sa superclasse• Si pas présente, encore au niveau au dessus• Ainsi de suite• Si trouvée, exécution• Sinon, message d’erreur
Parcourir les classes
Les méthodes peuvent être définies à plusieurs niveaux dans la hiérarchie des classes (pour un objet c’est la première trouvée qui sera exécutée).
Cette technique est très utile pour définir des exceptions
C’est beaucoup plus efficace que de modifier les superClasses
Relation entre les classes
Classe virtuelle : classe purement organisationnelle (en général tout en haut de la hiérarchie), dont on ne définit pas d’instances.
Multiple Héritage : Certains langage comme le C++ permettent à un objet d’avoir plusieurs superclasses. Dans ce cas, l’objet hérite des caractéristiques de toutes ses superclasses.
Cas particuliers
Les langages purs (smalltack) n’autorisent qu’une seule hiérarchie de classes (donc un ancêtre unique et commun à toutes les classes)
C++ (Hybride) autorise plusieurs hiérarchies de classes.
Dans tous les cas, la conception de (ou des) hiérarchies est primordiales pour représenter le système à réaliser.
Les hiérarchies de classes
Chapitre VI
Avantages et Inconvénients
1er avantage : Développement plus rapide
•Utilisation d’objet représentant la réalité•Réutilisation d’objets ou de modèles•Prototypage rapide
Sept avantages
2ème avantage : Meilleure qualité
•Assemblage d’objets et de classes•Modularité•Mise au point facilité
Sept avantages
3ème avantage : Maintenance facilitée
•Bugs repérés plus facilement•Debuggage facilité du fait de la modularité (objets isolés et non inter-actifs)
Sept avantages
4ème avantage : coût moindre
•Programmation plus rapide•Conception plus rapide (= représentation naturelle des systèmes à réaliser)•Administration facilitée (maintenance, évolutions, mises au point,…)
Sept avantages
5ème avantage : facilite la réalisation des systèmes complexes
•Permet de répartir le travail (modularité)•Permet des tests unitaires et indépendants•Permets la réutilisabilité entre les équipes, l’usage des mêmes noms sans confusion (polymorphisme)
Sept avantages
6ème avantage : meilleures structures de données
•Classes virtuelles•Hiérarchies de classes•Objets composites•Gestion des exceptions•…
Sept avantages
7ème avantage : facilite les adaptations
•Les modifications ne nécessitent pas de modifier les programmes existants•Il « suffit » d’ajouter de nouveaux objets et de nouvelles classes
Sept avantages
1er inconvénient : manque de maturité
•Cette technologie est encore en évolution•Les systèmes actuels doivent évoluer pour profiter pleinement de cette approche•Il n’y a pas de méthodologie de développement « orienté-objet » vraiment éprouvée
Sept Inconvénients
2ème inconvénient : besoins de standards
•Il n’y a pas de standards pour les langages•Le manque de standards rend difficile l’acquisition de librairies de classes et surtout l’usage mixé de différentes librairies de classes
Sept Inconvénients
3 ème inconvénient : besoin de meilleurs outils
•Meilleur outils de développement•Meilleur outils de tests•Meilleures librairies de classes• Meilleurs gestionnaires de versions•Meilleurs outils de modélisation•…
Sept Inconvénients
4 ème inconvénient : rapidité d’exécution
•Moins bonnes performances (même si les derniers outils powerbuilder, delphi ,… sont très proches des performances obtenues en programmation classique)
•Toutefois, permet de programmer des concepts complexes, contrairement aux langages classiques
Sept Inconvénients
5 ème inconvénient :manque de compétences
•Manque de programmeurs•Manque de personnel d’encadrement•Les recyclages réclament un changement de culture, beaucoup de formation et de pratique sur des projets concrets
Sept Inconvénients
6 ème inconvénient : coût des conversions
•Achat de nouveaux outils de programmation•Achat de nouveaux outils périphériques : librairies de classes, gestionnaires de batch, gestionnaire de versions, outils de tests, outils d’administration, …•Coût des formations
Sept Inconvénients
7 ème inconvénient : Trop grande modularité
•La modularité poussée à son extrême peut conduire à un « code ravioli »•L’absence de méthode éprouvée peut conduire à cela•Les objets externes peuvent menacer l’intégrité des données
Sept Inconvénients