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