Transcript classe
L’approche Objet
Séminaire IOS-AT 1996
Chapitre I Introduction
La crise du Software
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 Besoins :
hors délais
et •Disposer de meilleurs programmes •Avoir des délais plus courts
hors budgets
La construction des programmes
Construire de meilleurs programmes est un challenge majeur Comment ?
Plusieurs réponses ont été données par le passé
La construction des programmes : Les réponses apportées
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 programmes Les 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 programmes Les 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 programmes Les 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 programmes : Conclusion
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
Chapitre II Les clés de la Technologie Orienté-objet
Le vocabulaire
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
Introduction à la notion d’Objet
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 de message Les objets peuvent inter agir de multiples façons Le
message
entre les objets permet de représenter cette inter-action Il est émis un
objet émetteur récepteur
et reçu par un
objet
C’est un Nom d’objet suivi d’une méthode et éventuellement de un ou plusieurs paramètres
Introduction à la notion de classe
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.
L’héritage
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
Programmer avec des objets
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.
Chapitre III Les Objets
L’objet : élément de construction naturel
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’encapsulation
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éthodes Ceci 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’abstraction au niveau des données 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
Chapitre IV Les messages
Définition
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
Syntaxe des messages
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++
Réponse aux messages
Les messages requièrent le plus souvent des réponses (feedback) La réponse est appelée :
return value valeur de retour
en français en anglais ou 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.
Chapitre V Les Classes
Définition
Les objets et les messages peuvent suffire à produire un langage orienté-objet (ex ADA) Mais le
concept de classe
une plus grande efficacité est celui qui permet encore 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
Parcourir les classes
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
Relation entre 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
Cas particuliers
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.
Les hiérarchies de classes
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.
Chapitre VI Avantages et Inconvénients
Sept avantages
1 er 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 Inconvénients
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