Upload
duonghanh
View
218
Download
0
Embed Size (px)
Citation preview
31/01/2012
Janvier 2012 1
Sophie Lèbre
Maître de conférences
Université de Strasbourg - Département Informatique
Introduction Objectifs Base de POO
Langage Java
Organisation TD : 10h
TP : 10h
Evaluation Projet (1/3)
Examen (2/3)
2
Plan 1. L’approche objet
2. Java c’est quoi ?
3. Syntaxe Java 1. Types primitifs et instructions de base du langage Java
2. Tableaux de types primitifs
3. Méthodes statiques
4. Classes et objets
5. Objets tableaux
6. Héritage et Polymorphisme
7. Héritage et abstraction
8. Les exceptions
3 4
Qu’est-ce qu’un objet ? Modélise toute entité identifiable, concrète ou abstraite,
manipulée par l’application logicielle une chose tangible ex : ville, véhicule, étudiant, un bouton sur l’écran une chose conceptuelle ex : date, réunion, planning de réservation
Réagit à certains messages qu’on lui envoie de l’extérieur; la façon dont il réagit détermine le comportement de l’objet.
Ne réagit pas toujours de la même façon à un même message; sa réaction dépend de l’état dans lequel il se trouve.
5
Un objet possède :
Une identité unique (permet de distinguer un objet d’un autre)
Un état interne donné par des valeurs de variables (ou attributs)
Les attributs décrivent l’état de l’objet à un instant donné ex : patient mesure 1,82 m et pèse 75 Kg
Les attributs sont typés et nommés ex : float hauteur; float poids;
Un comportement (capacités d’action de l’objet) donné par des fonctions ou sous-programmes, appelés méthodes (ou opérations).
Les méthodes définissent le comportement de l’objet (ce qu’il peut faire, comment il peut le faire…) et ses réactions aux stimulations externes
ex : un étudiant passe un examen, etc…
Les méthodes implémentent les algorithmes invocables sur cet objet
6
31/01/2012
Janvier 2012 2
Encapsulation des données Un objet = données + algorithmes
Un objet est le regroupement de données (variables ou attributs) et des traitements (méthodes) associées
Principe d’encapsulation des données
Les données/attributs sont généralement inaccessibles depuis l’extérieur de l’objet : seules les méthodes sont accessibles.
Cacher le détail de la structure interne d’un objet (les attributs) correspond à appliquer le principe d’encapsulation des données : principe de base de la programmation objet.
Comportement
Etat
(caché)
(publique) Un objet 7
Encapsulation des données Principe d’encapsulation des données
L’accès aux données (état) de l’objet ne peut être fait qu’au travers des méthodes (comportement).
Les données sont privées (cachées)
Les méthodes publiques définissent l’interface de l’objet
Comportement
Etat
(caché)
(publique) Un objet 8
Exemple : un objet montre
int jour;
int mois;
int num;
int année;
int heure;
int minutes;
int secondes;
setHeures
(int m) setMinutes
(int m)
int
getMinutes()
int
getHeures()
Méthodes (opérations)
Variables (données internes)
lun.janv.30 2012
10:31:30
9
Encapsulation Intérêt :
Modularité : la modification des structures de données n’affecte pas les programmes qui utilisent l’objet (ex:milisecs)
Réutilisation
Indépendance des différentes
parties du programme
(facilite la maintenance
et le « debugage »)
10
int jour;
int mois;
…
long milisecs;
setHeures
(int m) setMinutes
(int m)
int
getMinutes(
)
int
getHeures()
Méthodes (opérations)
Variables (données internes)
lun.janv.30
2012 10:31:30
Autre exemple, avec la notation UML Une ampoule :
L’ensemble des méthodes d’un objet est appelé l’interface de l’objet.
Une interface définit donc en quelque sorte tout ce qu’il est possible de "faire" avec un objet.
11
Ampoule
int puissance;
String couleur;
…
allumer()
eteindre()
intensifier()
diminuer()
…
Interface
Langage orienté-objet Les objets interagissent et communiquent entre eux par
l’envoi de messages
Les méthodes publiques d’un objet correspondent aux messages que l’on peut lui envoyer
Les messages sont caractérisés par
objet cible (récepteur) du message
nom de la méthode à déclencher
paramètres de cette méthode maMontre.setHeures(11);
maMontre.setMinutes(45);
maMontre.getMois();
Objet récepteur du message
Envoi d’un message à l’objet identifié par maMontre
Méthode invoquée
Paramètre du message
objet maMontre 12
31/01/2012
Janvier 2012 3
Langage orienté-objet Les objets s’envoient des messages entre eux
objet maMontre objet jules
maMontre.setHeures(11);
setHeures
(int m)
13
Qu’est-ce qu’une classe ? Dans le monde réel, nous comprenons les objets en les
associant à des catégories :
toutes les montres possèdent des caractéristiques communes.
peu importe leurs états individuels, ils sont tous faits des mêmes composants (aiguilles, digitales, etc.)
Ils définissent donc une classe (ou type) d’objet particulière.
14
Qu’est-ce qu’une classe ? (suite) En termes "orientés objets" :
Une montre particulière est simplement une instance de la classe montre.
les attributs et les méthodes d’une instance de montre sont les mêmes pour toutes les instances de montres.
seules les valeurs des attributs (caractéristiques propres) sont susceptibles d’être différentes.
une classe est donc un patron de conception à partir duquel des objets individuels sont créés.
15
Exemple de classe en Java
16
public class Bicycle {
private int cadence = 0;
private int speed = 0;
private int gear = 1;
public void printStates() {
System.out.println("cadence : "+cadence+" speed : "+speed+" gear : "+gear);
}
public void changeCadence(int newValue) {
cadence = newValue ;
}
public void changeGear(int newValue) {
gear = newValue ;
}
void speedUp(int increment) {//visibilite de la methode restreinte au package
speed = speed + increment ;
}
public void applyBrakes(int decrement) {
speed = speed - decrement ;
}
}
Remarques
La classe précédente ne contient pas de méthode main.
Ce n’est pas une application.
C’est juste une classe permettant de créer des objets qui seront utilisés dans une application.
La responsabilité de créer et d’utiliser de nouveaux objets du type Bicycle appartient à une classe : celle qui portera le nom du programme.
17
Langage orienté-objet Les objets (instances) sont créés (instanciés) à partir de
"moules" : les classes
Classe = schéma/moule/modèle d’objets, elle décrit :
partie privée structure de données interne (attributs)
corps des méthodes (algorithmes)
partie publique (interface) noms et paramètres des méthodes
Classe = générateur d’objets par instanciation,
on peut fabriquer des objets obéissant à ce schéma/moule/modèle
code
objet montre1 objet montre2
Classe Montre
instance de
18
31/01/2012
Janvier 2012 4
Langage orienté-objet Classe = raffinement/spécialisation d’une classe existante
Elles forment une hiérarchie de classes, où chaque classe : hérite des attributs et méthodes de ses ancêtres/super-classes
ajoute de nouveaux attributs
et/ou de nouvelles méthodes
(spécialisation)
peut modifier ou redéfinir les
méthodes héritées (redéfinition)
Intérêt héritage : Réutilisation du code
Pas besoin de réinventer
la roue à chaque fois
19
Montre
MontreAiguilles MontreDigitale
code
mémoire
hérite de
instance de
montre1 montre2 montre3
Héritage (notation UML)
20
Montre
int jour;
int mois;
…
int année;
setHeure()
afficher()
…
MontreAiguilles
int longueurHeur;
int longueurMin;
calculAngle()
afficher()
MontreDigitale
int format;
afficher()
Redéfinition
Spécialisation
Comparaison Approche procédurale (C)
Définir les structures de données
Définir les traitements
Analyse descendante
Le programme principal
enchaîne les traitements.
Approche Objet
Identifier les classes Pour chaque classe
Définir son interface publique (signature des méthodes) Définir son implémentation (attributs, corps des méthodes)
Le programme principal : Création (instanciation) d’objets
en mémoire Lance exécution par envoi de
messages aux objets créés Ces messages peuvent
provoquer d’autres envois de messages et/ou la création d’autres objets
21
Exemple POO Exemple : les visages animés
Quels sont les concepts/les objets composant le jeu ?
Quelles sont leurs propriétés ?
Que doivent savoir faire ces objets ?
22
Exemple POO Exemple : les visages animés
Objets ?
Attributs des objets : quelles sont leurs propriétés ?
Capacité d’action des objets : que font-ils ?
23
Exemple POO Exemple : les visages animés
Objets ?
Attributs des objets : quelles sont leurs propriétés ?
Capacité d’action des objets : que font-ils ?
24
Fenêtre
Attributs
position
largeur
hauteur
Capacités d’action
se fermer
s’iconifier
passer au premier plan
...
Utilisation d’une classe existante dans Java(JFrame)
31/01/2012
Janvier 2012 5
Exemple : les visages animés Objets ?
Attributs des objets : quelles sont leurs propriétés ?
Capacité d’action des objets : que font-ils ? Visages
Attributs
couleur
position
largeur, hauteur
Capacités d’action
Sourire, faire la tête
s’afficher
avancer
changer de direction
Exemple POO
25 Ecriture d’une nouvelle classe (Visage)
Exemple POO Exemple : les visages animés
Objets ?
Attributs des objets : quelles sont leurs propriétés ?
Capacité d’action des objets : que font-ils ?
26
Zone de dessin
Attributs
Fenêtre où elle se trouve
Couleur du fond, …
Capacités d’action
S’effacer
Afficher les objets qu’elle contient
... Ecriture d’une nouvelle classe (Dessin) en
réutilisant une classe existante (héritage) dans Java (JPanel)
Une application orientée objet consiste en : création (instanciation) d’objets en mémoire
lancer une exécution par envoi de messages aux objets créés
ces messages peuvent provoquer d’autres envois de messages et/ou la création d’autres objets
dessiner
dessiner
dessiner
Exemple POO
27
maFenetre
afficher visage1
visage2 maZoneDeDessin
Résumé global La programmation orientée objet (POO) :
la POO est un paradigme de programmation qui fait le lien avec la manière dont nous concevons le monde.
elle repose sur l’assemblage de briques logicielles : les objets, définis par un état et un comportement.
Chaque objet est défini par une classe qui décrit un ensemble d’attributs et de méthodes.
Quelques principes de bases de la POO : Encapsulation : les traitements et les attributs internes à un objet
ne doivent pas être visibles de l’extérieur
Héritage et spécialisation : un programme correspond à définir et utiliser une hiérarchie d’objets.
la spécialisation d’une classe peut entraîner la redéfinition d’une partie de son comportement, c’est-à-dire de ses méthodes.
29