Cours - Java - Chap 1 1 1
Cours - Java - Chap 1 1 1
Cours - Java - Chap 1 1 1
■ 12 séances de 2h:cours
■ 11 séances TP de 2h
■ 4 séances TD de 2h
■ Contrôle continu : travaux pratiques/projet, contrôles rapides
■ Examen écrit final
-2-
Quelques Références:
Livre:
– Titre: Programmer en JAVA ,Auteur Claude Delnoy,
Editeur: Eyrolles
– Thinking in Java, Bruce Eckel
Ressources Internet:
– http ://www.java.sun.com
– Richard Grin: http://deptinfo.unice.fr/~grin
– Cours Mickaël BARON - 2007
– Cours Interface graphique en Java API swing, Juliette Dibie-
Barthélemy mai 2005
-3-
Chapitre 1
Concepts de La POO
-4-
Objectifs spécifiques
■ Introduire les facteurs de naissance de la POO
■ Introduire la définition de la POO
■ Introduction au concept de l’approche OO
-5-
De la programmation classique vers la programmation orientée
objet
-6-
■ Dans cette approche données et procédures sont traitées
indépendamment les unes des autres sans tenir compte des relations
étroites qui les unissent.
■ Les langages objets sont nés pour répondre à ces questions. Ils sont
fondés sur la connaissance d’une seule catégorie d’entités
informatiques : les objets.
-7-
■ La Programmation Orientée Objet (POO) propose une méthodologie de
programmation centrée sur les objets. Où un objet peut être vu comme
une entité regroupant un ensemble de données et de méthodes.
■ Le programmeur :
Doit d’abord identifier les objets qui doivent être utilisé (ou manipulé) par
le programme: on commence par décider quels objets doivent être
inclus dans le programme.
Va ensuite, écrire les traitements, en associant chaque traitement à un
objet donné.
-8-
Il s'agit donc :
- de déterminer les objets présents dans le programme.
- d'identifier leurs données.
- De définir les traitements à faire sur ses objets .
-9-
Les grands principes de la POO
l’encapsulation
Abstraction
Classe et objets
L’héritage
Le Polymorphisme
- 10 -
Encapsulation
♦ L’encapsulation permet de cacher les détails d’un objet. Les noms des méthodes dans l’objet
sont connus, mais les détails de leurs implémentations ne le sont pas
♦ L’encapsulation veut aussi dire “mettre tout ensemble”. Un objet a toujours ses données et ses
méthodes packagés ensemble
♦ Un objet proprement encapsulé doit avoir tous ses données membres identifiées comme
« private », et la plupart de ses accesseurs et mutateurs identifiés comme public
- 11 -
Abstraction
- 12 -
Définition et caractéristiques d’un objet
♦ Élément tangible ou visible; qui peut être compris intellectuellement; quelque chose vers
laquelle une pensée ou une action est dirigé. Une personne, article identifiable, unité ou
entité, que ce soit réelle ou abstraite, avec un rôle bien défini dans le domaine du problème
♦ Les objets ont certains attributs, qui sont les données, et peuvent montrer certains
comportements. Un objet “connaît des choses” (via les données qu’il contient) et “sait
comment faire des choses” (via les instructions et procédures qu’il possède pour traiter les
données)
♦ La manière dont un objet fonctionne ne doit pas être nécessairement connu pour interagir
avec lui. Un objet peut être assimilé à une boîte noire; le travail interne dans la boîte noire
n’est pas visible au monde externe. L’utilisateur doit faire confiance à l’objet pour exécuter
de manière consistante les tâches pour lesquelles il a été désigné
- 13 -
Définition et caractéristiques d’un objet
L’objet:
■ est l’unité logique de la programmation orientée objet.
■ est une entité logiciel rassemblant des données et du code travaillant sur
ses données. Il est définie par:
– un état
– un comportement
– une identité
État : il est défini à l’aide d’attributs (Fields, appelés aussi données
membres). Ce sont des variables associées à l’objet et qui stockent des
valeurs (des informations sur l'état de l'objet).
Exemple: L’état d’un objet de type Voiture est caractérisé par les
attributs: couleur et vitesse.
L’état de l’objet maVoiture est caractérisé par les données
couleur = rouge
vitesse = 240
- 14 -
Comportement : est caractérisée par des méthodes (appelées parfois
fonctions membres) qui permettent de modifient l’état de l’objet.
► Une méthode rattachée à l’objet permet de déclencher un des
comportements associés à l’objet.
► Il n’est pas possible d’agir directement sur les données d’un objet pour
modifier son état; il est nécessaire de passer par ses méthodes. On dit
qu'on « envoie un message » (fait une requête) à un objet.
►Un objet peut recevoir un message qui déclenche:
une méthode qui modifie son état
et / ou
une méthode qui envoie un message à un autre objet.
Exemple:
♦ De la phase du projet où on établi tous les besoins utilisateurs ressort la définition d’un
certain nombre d’objets potentiels de travail liés au domaine du problème. Des objets
spécialisés peuvent être aussi nécessaire pour supporter le domaine de travail et
répondre à des besoins bien spécifiques (stockage de données, accès à une DB ...)
- 16 -
Notions de classes
Définition: Une classe (ou type d’objets) représente une famille d’objets
qui partagent des propriétés communes: Les objets qui ont les mêmes
états et les mêmes comportements.
- 18 -
Exemple: Rectangle est une classe utilisée pour créer des objets
représentant des rectangles particuliers.
• Elle regroupe 4 données de type réel qui caractérisent le rectangle:
– longueur , largeur et origine (x,y) (la position en abscisse et en
ordonnée de son origine).
• On suppose qu’on effectuer les opérations de déplacement et de
calcul de la surface du rectangle.
• Les symboles + et – sont les spécificateurs d’accès (voir plus loins)
Exemple (notation UML))
- 19 -
Notion d’héritage
■ L'héritage est un principe propre à la POO qui permet de créer une
nouvelle classe à partir d'une classe existante. La classe nouvellement
créée, dite classe dérivée, contient les attributs et les méthodes de la
classe dont elle dérive, auxquelles s’ajoutent de nouveaux attributs et de
nouvelles méthodes propres à la classe dérivée.
■ L’héritage ( exprime la relation " est une ") permet donc de définir une
hiérarchie de classes :
– La classe de base est une classe générique.
– Les classes dérivées sont de plus en plus spécialisées
Deux roues classe de base ou classe
mère ou classe parente
classes
Sans moteur A moteur dérivées ou
classes filles
- 20 -
Héritage
L’héritage permet de spécialiser une classe en définissant une relation
de type « est une sorte de ».
Exemple
Forme
Ellipse Rectangle
Cercle Carre
- 21 -
Polymorphisme
Une classe dérivée peut fournir une nouvelle définition d’une méthode d'une classe
parent car elle peut avoir besoin de réagir différemment à l'appel de cette méthode.
Cette redéfinition substituera une méthode à une autre : c’est la spécialisation.
- 23 -
Agrégation et Composition
L’agrégation (Exprime la relation " est composé de …" ) est un relation forte
entre deux classes qui s’apparente à la relation ensemble/élément.
C’est une relation de subordination subjective qui peut exprimer entre autres :
qu’une classe (l’élément) fait partie d’une autre (l’agrégat),
qu’un changement d’état d’une classe entraîne celui d’une autre,
qu’une action sur une classe en entraîne une sur une autre.
- 24 -
Agrégation et Composition
La composition est un cas particulier de l’agrégation. Aussi appelée
agrégation forte, elle consiste en la relation qui existe entre un objet et ses
attributs. Les composants sont physiquement contenus dans l’agrégat
(parfois nommé classe composite).
La composition est une relation simple mais souvent confondue avec celle
d’héritage, plus complexe, surtout par les novices en POO, qui se
retrouvent alors face à des situations souvent inextricables. Il faut toujours
commencer par se demander si elle n’est pas plus appropriée que
l’héritage. En règle générale, la composition permet de réutiliser
l’implémentation, alors que l’héritage est utilisé pour réutiliser l’interface.
- 25 -
Exemple:
une Voiture est un Véhicule (héritage) ; une Voiture a un Moteur
(composition).
- 26 -
Conclusion
■ Chacun de ses concepts sera abordés plus en détails dans les prochains
cours, Tds et Tps illustré par des exemples en Java.
- 27 -