Le Langage Les objets Java
Pourquoi l’objet ???
n
Les approches traditionnelles ( programmation structurée) ne suffisent plus et ont un certain nombre d’inconvénients :
Fonctions
Données
Application
n
La séparation entre fonctions et données implique une structure peu évolutive: u
n
coût énorme de la maintenance.
Il faut trouver d’autres solutions -> l’approche objet
La programmation par "objet"
n
Faire correspondre à un objet réel une représentation la plus proche possible.
n
Exemple : une voiture
u
est unique (celle qui est devant moi)
u
a des caractéristiques (marque, prix, couleur, etc...)
u
est dans un certain état (arrêt)
u
a un certain comportement (le fait de tourner la clef permet de démarrer la voiture).
Concepts de base
n
La programmation par objets est fondé sur un ensemble de concepts : u
Objet
u
Message
u
Classe
u
Encapsulation
u
Héritage
u
Polymorphisme
Les objets
n
Un objet est une entité qui rend des services.
n
Je veux aller suivre un cours au CNAM de Nantes le samedi matin à 8h et j’habite à La Chapelle sur erdre.
n
Comment faire ????
n
1.
me lever à 5h et y aller à pied
-> pas la meilleure solution
2.
solliciter un objet permettant de me déplacer -> oui bien sur
Je vais donc choisir l’objet le plus approprié et l’utiliser : 1.
le vélo
-> pas très pratique sauf pour la balade du dimanche matin
2.
le skate board
-> c’est celui de mon fils, moi je ne sais pas en faire
3.
la voiture
-> ça me paraît pas mal
L’identité
n
Un objet voiture va donc me rendre un service de déplacement.
n
Tout objet possède une identité qui lui est propre et qui le caractérise.
n
Pour aller au cnam j’utilise ma voiture. Elle a une plaque d’immatriculation avec un numéro unique.
maVoiture AB325044
n
L’identité permet de distinguer tout objet de façon non ambiguë,
Les états
n
Ma voiture possède un ensemble de caractéristiques. Ce sont ses attributs : u
n
marque,couleur,prix,compteur, réservoir
L’état regroupe les valeurs instantanées de tous les attributs d’un objet :
maVoiture Ferrari rouge 70000€ 150000klm n
L’état évolue au cours du temps.
50l
Les comportements
n
Je n’ai pas à connaître le fonctionnement interne de la voiture pour l’utiliser.
n
En effet un objet possède aussi un mode d’emploi qui spécifie comment utiliser l’ensemble de ses comportements : u
démarrer
u
rouler
u
arrêter
n
Le comportement se représente sous la forme de méthodes
n
L’état d’un objet est la conséquence de ses comportements passés: u
réservoir = 50L
->
j’ai fait le plein
État et Comportement
n
L’état et le comportement sont liés : u
Le comportement dépend de l’état
u
L’état peut être modifié par le comportement
maVoiture 50litres maVoiture -> rouler (300)
maVoiture 20litres n
Remarque : la valeur 300 de rouler indique le nombre de kilomètres.
Objet structuré
n
Un objet peut être composé d’autre objets.
n
Une voiture possède des pneus qui ont leurs propres caractéristiques et leurs propres comportements. maVoiture Ferrari rouge Pneus Pneus Pneus Pneus Bridgestone Bridgestone Bridgestone Bridgestone 300 300 300 300
n
De la même façon une voiture possède un moteur, une carrosserie, …
Objet structuré
n
Que se passe-t’il si je veux changer de pneus ??? maVoiture Ferrari
maVoiture Ferrari
rouge
rouge
Pneus Pneus Pneus Pneus Bridgestone Bridgestone Bridgestone Bridgestone 300 300 300 300
Pneus Pneus Pneus Pneus Bridgestone Bridgestone Bridgestone Michelin 300 300 300 200
n
Aucun problème -> il existe une norme que les constructeurs respectent -> très intéressant.
n
Je peux donc créer des objets par assemblage d’autre objets fournît par différents éditeurs (si c’est normalisé bien sur) -> terminé les solutions propriétaires ( ouf !!!).
Communication entre objet
n
Les objets ne vivent pas en ermites. Ils interagissent les uns avec les autres.
demarrer
n
Le conducteur envoie un message à la voiture pour démarrer celle-ci. La voiture sollicite le moteur pour la mis en route de la voiture.
Message
n
Les objets communiquent en échangeant des messages.
n
Le message est l’unité de communication entre objets. Il correspond à l’invocation d’un comportement à un instant donné.
Encapsulation
n
L'intérieur de la voiture m'est complètement caché: u
je n’ai pas à connaître le fonctionnement interne de la voiture pour l’utiliser,
u
ses caractéristiques et ses composants internes sont protégés,
u
ils ne sont manipulables que par les «comportements» décrits par le mode d'emploi, afin de garantir son bon fonctionnement,
u
même le code des «comportements» est caché car je ne connais que le nom général de «la méthode» et le résultat devant être obtenu.
Tant pis pour les escrocs
n
Je désire changer de véhicule et donc vendre ma ferrari.
n
Pour en tirer un bon prix je vais diminuer le nombre de kilomètres du compteur (personne n’est parfait …. ).
maVoiture
maVoiture ->compteur ( 150 000)
220000klm
maVoiture 150000klm
n
Erreur le compteur n’est pas accessible, il est encapsulé et la voiture ne propose pas de comportement permettant de le modifier.
n
Encapsulation -> protection des données -> fiabilité
Application objet
n
Une application objet est constituée d’un ensemble d’objets qui vont collaborer.
n
Les objets travaillent en synergie afin de réaliser les fonctions de l’application.
n
Le comportement global d’une application repose donc sur la communication entre les objets qui la composent.
n
Les objets ont un cycle de vie : u
création
u
exploiter en fournissant des services
u
suppression
Illustration : Un programme Objet
JchaiPasQuoiFaire
Creer ChateauDeSable Enfant Garnir
Run Creer Bronzer
Femme
Casser FaisUnChateau
Un programme Objet
JchaiPasQuoiFaire Enfant Run
Bronzer
Femme
ChateauDeSable Delete
PrendreBain
Un programme Objet
JchaiPasQuoiFaire Enfant
Creer
Run
Bronzer
Femme
PrendreBain
Crier
AllerDans
Mer
Un programme Objet
Enfant Run
Bronzer
Delete
Femme Crier
Mer
Un programme Objet
Attention chaque objet est responsable des objets qu’il a crée ….
Run
Bronzer
Femme
Fuite Mémoire Mer
Cycle de vie des objets
n
n
Tout objet peut donc créer d’autres objets: u
Une femme peut créer un enfant (c’est son rôle non ??? )
u
Un enfant peut créer un château,
Tout objet peut dialoguer avec d’autres objets par envoi de message, la mère demande à l’enfant d’aller faire un château: enfant<-FaisUnChateau()
n
Un objet peut communiquer avec lui-même : femme<-Bronzer()
Suppression d’objets
n
Tout objet a la responsabilité des objets qu’il a engendrés et doit donc gérer la suppression de ceux-ci: enfant<-DetruireChateau()
n
Dans le cas contraire on peut avoir des fuites mémoires
n
Certains langages ( Java ) fournissent un garbage collector ( ramasse-miettes) qui gère la libération mémoire -> super !!! on a une femme de ménage à disposition.
Les types d’objets
n
Un objet représente aussi bien une entité matérielle (Voiture, Personne,...) qu'un concept abstrait (Transaction, Relation, ...)
n
Tout doit être Representé en tant qu’objet, les objets du monde réel mais aussi les objets informatiques : u
visibles par l’utilisateur : ( IHM )
u
Les extensions du langage – intervalles – tableaux – les chaînes de caractères
u
Les conteneurs : – tableaux, listes, piles, ....