Cours - Java - Chap 1 1 1

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 27

Programme

Programmation Orienté Objet


■ Chapitre 1: Concept de la POO
■ Chapitre 2: Langage Java, Histoire et base
■ Chapitre 3: Les classes et les objets
■ Chapitre 4: Héritage, Polymorphisme et Interface
■ Chapitre 5: Création de GUIs (AWT / Swing)
■ Chapitre 6: Exceptions, Fichiers, Streams et E/S
■ Chapitre 7: Les collections
■ Chapitre 8: Initiation à J2EE

LST Informatique (S5) 2015-2016 Pr. Mohammed OUANAN


-1-
Organisation pédagogique

Programmation Orienté Objet

■ 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

■ La programmation classique telle que étudiée au travers des langages C,


Pascal… définie un programme comme étant un ensemble de données
sur lesquelles agissent des procédures et des fonctions.
■ Les données constituent la partie passive du programme. Les procédures
et les fonctions constituent la partie active.
■ Programmer dans ce cas revenait à :
définir un certain nombre de variables (structures, tableaux)
écrire des procédures pour les manipuler sans associer
explicitement les unes aux autres.

Exécuter un programme se réduit alors à appeler ces procédures dans un


ordre décrit par le séquençage des instructions et en leur fournissant les
données nécessaires à l’accomplissement de leurs tâches.

-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 questions qu’on peut poser dans ce cas :


1. Cette séparation (données, procédures) est elle utile ?
2. Pourquoi privilégier les procédures sur les données (Que veut-
on faire ?) ?
3. Pourquoi ne pas considérer que les programmes sont avant
tout des ensembles objets informatiques caractérisé par les
opérations qu’ils connaissent ?

■ 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

♦ Les langages de programmation OO implémentent le niveau d’encapsulation via des clés


spéciales que le programmeur doit spécifier lors de la création de la classe. Ils sont pour le
langage Java:

private seules les méthodes définies dans la classe peuvent accéder


public n’importe quel autre objet peut accéder aux données et aux méthodes
protected seuls les objets des classes dérivent de la classe en question
peuvent accéder aux attributs

♦ 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

■ C’est le faite de se concentrer sur les caractéristiques importantes d’un


objet selon le point de vue de l’observateur.

■ L’abstraction est un principe qui consiste à ignorer certains aspects


d’un sujets qui ne sont pas importants pour le problème dans le but de
se concentrer sur ceux qui le sont.

- 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:

Identité: L'objet possède une identité, qui permet de le distinguer des


autres objets, indépendamment de son état.
- 15 -
Identification et définition des objets

♦ 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 ...)

♦ Les 2 questions à se poser lors de la définition des objets:


- Quels sont les attributs de l'objet?
- Quels sont les comportements nécessaires de l'objet?

- 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.

■Une classe regroupe les objets qui ont:


– La même structure (même ensemble d’attributs)
– Le même comportement (même méthodes)

■ Les classes servent pour la création des objets


– Un objet est une instance d’une classe
– Un programme OO est constitué de classes qui permettent de
créer des objets qui s’envoient des messages
– L’ensemble des interactions entre les objets défini un algorithme.
– Les relations entre les classes reflètent la décomposition du
programme.
- 17 -
Les membres d’une classe

■ Champs (appelés aussi attributs ou données membres): l’ensemble


des membres définissent l’état d’un objet (chaque objet a ses données
propres).
■ Méthodes (appelés aussi fonctions membres ou comportement): définit
un ensemble d’opérations applicables à l’objet (On manipule les objets
par des appels de ses méthodes).

► L’ensemble des méthodes est appelé l’interface de l’objet.


Une interface définit toutes les opérations qu’on peut appliquer à l’objet
(définit tous ce qu’il est possible de "faire" avec un objet).

- 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

Vélo Patinette Moto Scooter Mobylette

- 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

Un cercle est un spécialisation d'une ellipse, il en possède les propriétés


plus d'autres qui lui sont spécifiques. On dérive donc la classe Cercle de
la classe Ellipse.

- 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.

La notion de polymorphisme signifie que, la même opération pouvant se


comporter différemment sur différentes classes de la hiérarchie, il est possible
d'appeler la méthode d'un objet sans se soucier de son type intrinsèque. Ceci
permet de faire abstraction des détails des classes spécialisées d'une famille d'objet,
en les masquant par une interface commune (qui est la classe de base).
Velo
m_typePedale
DeuxRoues GetTypePedale()
m_tailleRoues
virtual Accélérer() La fonction Accélérer() n’est pas la
m_couleur
virtual Freiner() même pour un Velo et une Moto. La
virtual ChangerVitesse() redéfinition de cette fonction dans
m_poids
m_nbVitesses chacune des sous-classes entraînera
virtual Accélérer() Moto un comportement différent suivant
virtual Freiner() m_moteur que le DeuxRoues est un Velo ou une
virtual ChangerVitesse() m_boiteVitesse Moto.
GetCouleur() FairePlein()
GetPoids() AllumerClignotant()
virtual Accélérer()
virtual Freiner()
virtual ChangerVitesse()
- 22 -
Polymorphisme

Faculté qu'ont des objets différents de réagir différemment en


réponse au même message.
Marcher sur la queue d'un chat => il miaule,
Marcher sur la queue d'un chien => il aboie.

Même nom de fonction, plusieurs implantations:


Fonction: opération addition (+)
• Addition des nombres entiers, 1 + 2 = 3
• Addition des nombres complexes, 1+2i + 3+4i = 4+6i

- 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.

Quand on veut déterminer le type de relation adéquat entre une classe («


forte ») A et une classe (« faible ») B, il suffit de se poser la question « est-
ce que A a un B, ou B est un A ? ». La relation est un (is a) est
classiquement celle de l’héritage, alors que a un (has a) illustre la
composition.

- 25 -
Exemple:
une Voiture est un Véhicule (héritage) ; une Voiture a un Moteur
(composition).

- 26 -
Conclusion

■ La programmation orientée objet permet de concevoir, maintenir et


réutiliser plus facilement les programmes Grace à ses principes
d’instanciation, d’encapsulation, d’héritage et de polymorphisme,

■ 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 -

Vous aimerez peut-être aussi