5
31/01/2012 Janvier 2012 1 Sophie Lèbre Maître de conférences Université de Strasbourg - Département Informatique [email protected] 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

Algorithmique et Programmation orientée Objet - Javaicube-bfo.unistra.fr/fr/img_auth.php/2/25/POO_chap1_print.pdf · 31/01/2012 Janvier 2012 2 Encapsulation des données Un objet

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

[email protected]

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