Ch 01 poo

100
Programmation Orientée Objet POO Prof. Hakim ALLALI Licences EEA & RTT. Fév 2013

Transcript of Ch 01 poo

Page 1: Ch 01 poo

Programmation Orientée Objet

POO

Prof. Hakim ALLALILicences EEA & RTT. Fév 2013

Page 2: Ch 01 poo

Plan

1 • Introduction

2 • Programmation orientée objet (POO)

3 • POO vs PPS (Prog. Procédurale Structurée)

4 • Avantages de la POO

5 • Notion d’objet

6 • Notion de classe

7 • Caractéristiques de la POO : Encapsulation

8 • Caractéristiques de la POO : Héritage

9 • Caractéristiques de la POO : Polymorphisme

2

Page 3: Ch 01 poo

Introduction

La POO utilise une approche différente de celle des langages procéduraux.

Comment certaines sociétés de l’industrie informatique sont-elles devenues si importantes et aussi vite ?

Elles fabriquent en général de bonnes machines, vendues à prix bas, dans une période où il existe une demande.

Comment ont-elles pu construire tant de modèles aussi rapidement, et comment ont-elles répondu aussi vite aux changements que subit le marché de la micro-informatique ?

1

3

Page 4: Ch 01 poo

Introduction Essentiellement, parce qu’elles ont sous-traité une bonne

partie de leurs travaux. Elles ont acheté des éléments à des vendeurs réputés et se sont chargées de l’assemblage des machines.

(alimentations, disques durs, cartes mères, etc.)

Production rapide et réduction des coûts. Ces constructeurs achetaient des «fonctionnalités préconditionnées». (elles acquéraient quelque chose qui possédait certaines propriétés (taille, poids, etc.) et une certaine fonctionnalité (une sortie stabilisée, une puissance électrique, etc.)

4

Page 5: Ch 01 poo

Programmation orientée objet

La POO s’appuie sur la même idée.

Un programme est constitué d’objets qui interagissent (communiquent) afin de réaliser une ou plusieurs tâches.

Chaque objet possède certaines propriétés et peut accomplir certaines opérations.

C’est le temps et les fonctionnalités disponibles qui décideront du fait que vous construisez un objet ou que vous utilisez un autre disponible.

2

5

Page 6: Ch 01 poo

Programmation orientée objet2

La 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éeset de méthodes de traitement.

Le programmeur Doit d’abord identifier les objets qui doivent être

utilisés (ou manipulés) 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é.

6

Page 7: Ch 01 poo

Programmation orientée objet2

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.

7

Page 8: Ch 01 poo

POO vs PPS (Prog. Procédurale Structurée)

PPS : concevoir un ensemble de fonctions (et procédures) permettant de résoudre un problème.

Après avoir déterminé ces fonctions, trouver la manière appropriée de stocker les données.

Algorithmes + Structures de données = Programme

D’abord, vous décidez de la manière dont vous allez manipuler les données; ensuite seulement, vous choisissez le genre de structures que vous imposeriez aux données afin de faciliter cette manipulation.

3

8

Page 9: Ch 01 poo

La POO inverse cet ordre et place les données au premier plan avant de déterminer l’algorithme qui sera employé pour opérer sur ces données.

En POO, chaque objet accomplit quelques tâches associées.

Si un objet dépend d’une tâche qui n’est pas de sa responsabilité, il doit avoir accès à un autre objet capable d’accomplir cette tâche.

3

9

POO vs PPS (Prog. Procédurale Structurée)

Page 10: Ch 01 poo

POO vs PPS3

POO PPS

Principe : On sépare les données des moyens de traitement de cesdonnées.

Principe : afin d’établir de façon stable et robuste l’architecture d’un système, il semble raisonnable de s’organiser autour des données manipulées.

10

Page 11: Ch 01 poo

Approche procédurale :Que doit faire mon programme ?

Approche orientée objet :De quoi doit être composé mon programme ?

Exemple: Gestion d'une bibliothèque

Cours JavaDELANNOY

Cours C++RITCHIE

Almassae Asmae ALAMIDirectrice

Hamza KARIMIBibliothécaire

Latifa KAMALLectrice

Ali IDRISSILecteur

Gérer le stock

Gérer les empruntsde livres

11

Page 12: Ch 01 poo

Programmation: diverses approches

12

Page 13: Ch 01 poo

La construction d’un système va s’axer principalement sur la détermination des données dans un premier temps et la réalisation des traitements (de haut-niveau) agissant sur ces données dans un second temps.

Cette approche permet de bâtir des systèmes plus simples à maintenir et à faire évoluer.

On regroupe dans une même entité informatique, appelée objet, les structures de données et les moyens de traitement de ces données.

Avantages de la POO4

13

Page 14: Ch 01 poo

Avantages de la POO

Programmation modulaire: Facilité de la réutilisation du code. Encapsulation (Principe de la POO) et abstraction

(proche du monde réel):

– Regrouper les caractéristiques dans une classe– Cacher les membres d’une classe: choix dans les niveaux de

confidentialité

Programmation par « composants » (chaque portion de codeest isolée): facilité de l’évolution du code.

4

14

Page 15: Ch 01 poo

Problématique de la Programmation

Le schéma simplifié d’un système informatique peut se résumer parla formule :

Système informatique = Structures de données + Traitements

Le cycle de vie d’un système peut être décomposé en deux grandesphases :

Une phase de production qui consiste à réaliser le logiciel.Une phase de maintenance qui consiste à corriger et à faireévoluer le logiciel.

Lors de la production du système (au sens industriel du terme), leconcepteur a deux grandes options :

soit orienter sa conception sur les traitements.soit orienter sa conception sur les données.

15

Page 16: Ch 01 poo

16

Résolution d’une problématiqueDepuis les années 80, la croissance de l'industrie du logiciel est très importante. Elle atteint près de 15 % du PNB des Etats Unis, soit une dépense estimée à 300 Milliard $.Un effort important est donc fait pour minimiser les dépenses de conception et de maintenance du logiciel. Selon une enquête réalisée par ACM sigsoft (Eng. Notes V10, No 5, Oct. 1985) sur 9 projets du gouvernement américain:

S'orienter vers de nouvelles approches autres que celles utilisées, à l'époque (1985), dans la conception et le

développement des applications

POO

Page 17: Ch 01 poo

Les grands principes de la POO

Classe, Objet Encapsulation Héritage Polymorphisme

17

Ces concepts ont un impact direct sur : La qualité du système Le coût de développement et de maintenance Le délai du développement et de maintenance

Si ces concepts de base sont simples, leur utilisation nécessite de l’expérience

Page 18: Ch 01 poo

Objet: Un objet est une entité cohérente rassemblant des données (attributs ou propriétés) et du traitement(méthodes, services) travaillant sur ses données.

Une classe peut être considérée comme un moule à partir duquel on peut créer des objets.

Notion d’objet5

18

Page 19: Ch 01 poo

Approche procédurale :Que doit faire mon programme ?

Approche orientée objet :De quoi doit être composé mon programme ?

Exemple: Gestion d'une bibliothèque

Cours JavaDELANNOY

Cours C++RITCHIE

Almassae Asmae ALAMIDirectrice

Hamza KARIMIBibliothécaire

Latifa KAMALLectrice

Ali IDRISSILecteur

Gérer le stock

Gérer les empruntsde livres

19

Page 20: Ch 01 poo

Exemple: un livre à la bibliothèque est caractérisé par:- Un titre- Un auteur- Un numéro d’inventaire- Un numéro de classement

Un objet de type Livre est constitué d’attributs qui caractérisentla structure de cet objet:

Exemple d’attributs de l’objet livre

L'objet est manipulé par exemple par les méthodes suivantes:– disponible : Méthode permettant de dire si le livre est disponible à la bibliothèque– qteDisponible: Méthode permettant d’agir sur la quantité disponible

private String titre;private String auteurprivate int numInv;private String numClas;Static int Qte;

20

- Une quantité (le nombre de livres disponibles à la biblihothèque).

Page 21: Ch 01 poo

Les structures de données définies dans l’objetsont appelées ses attributs (propriétés).

Les procédures et fonctions définies dans l’objetsont appelées ses méthodes (opérations).

Les attributs et méthodes d’un objet sont appelésses membres.

L’ensemble des valeurs des attributs d’un objet àun instant donné est appelé état interne.

Vocabulaire à retenir

21

Page 22: Ch 01 poo

Notion d’objet: 3 caractéristiques5

Un objet est caractérisé par :Son comportement : que pouvez-vous faire avec cet objet, ou

quelles méthodes pouvez-vous lui appliquer ?

Son état : Comment l’objet réagit-il lorsque vous appliquez ces méthodes ? (son aspect actuel)L’état d’un objet peut changer dans le temps, mais pas spontanément. Une modification dans l’état d’un objet doit être la conséquence d’appels de méthodes.

Son identité : Comment l’objet se distingue-t-il des autres qui peuvent avoir le même comportement et le même état ?

22

Page 23: Ch 01 poo

1) son comportement

Quelles sont les méthodes qu’on peut lui appliquer?

Exemples:Un poisson peut-il marcher? Un avion peut-il nager ?

Les comportements de l’objet "Télévision" :allumer, changer de chaîne, changer de volume du son, éteindre

Notion d’objet: 3 caractéristiques5

23

Page 24: Ch 01 poo

Exemple:

Comportement de l’objet

Il est caractérisé par des méthodes (appelées parfois fonctions membres) qui permettent de modifier 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 étatet / ou– une méthode qui envoie un message à un autre objet

demarrermaVoiture moteur

24

Page 25: Ch 01 poo

2) son état

Quel est la réaction de l’objet lorsqu’on lui applique une méthode?

Dans un Système d’information, chaque commande est différenciée par une référence unique.

Elle va avoir un état : en cours d’acheminement, envoyée , délivrée.

Si une commande est expédiée, peut-on la modifier? c’est-à-dire, ajouter un article.

Notion d’objet: 3 caractéristiques5

25

Les états de l’ objet "Télévision": allumé/éteint, chaîne courante, volume de son

Page 26: Ch 01 poo

Etat de l’objetIl 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éescouleur = noirevitesse = 80

Nom de l’objet (identifiant)

Description des attributs

maVoiture

- couleur = noire- vitesse = 80

26

Page 27: Ch 01 poo

Notion d’objet: caractéristiques5

3) son identité

L'objet possède une identité, qui permet de le distinguer des autres objets, indépendamment de son état.

Chaque objet est unique. Chaque objet a une identité.

27

Page 28: Ch 01 poo

Chaque objet est unique.

Même dans le cas de 2 jumeaux Ils peuvent avoir le même prénom,Le même nom, la même adresse.La même date de naissance,Le même lieu de naissance.

Chacun aura une empreinte digitaledifférente.

Identité de l’objet

28

Page 29: Ch 01 poo

Notion de classDes objets similaires peuvent être informatiquement décrits par une même abstraction : une classe même structure de données et méthodes de traitement valeurs différentes pour chaque objet

Classe LivreClasse Journal

Classe EmployéClasse Lecteur

Cours JavaDELANNOY

Cours C++RITCHIE

Almassae Asmae ALAMIDirectrice

Hamza KARIMIBibliothécaire

Latifa KAMALLectrice

Ali IDRISSILecteur

6

29

Page 30: Ch 01 poo

Notion de class

30

Classe Livre-titre, auteur Classe Journal

-titre

Classe Employé-nom, prénom, statut

Classe Lecteur-nom, prénom

Cours JavaDELANNOY

Cours C++RITCHIE

Almassae Asmae ALAMIDirectrice

Hamza KARIMIBibliothécaire

Latifa KAMALLectrice

Ali IDRISSILecteur

Page 31: Ch 01 poo

Notion de class

Classe Livre-titre, auteur

Classe Journal-titre

Classe Employé-nom, prénom, statut

Classe Lecteur-nom, prénom

Titre = Cours C++Auteur = Richie

Titre = Cours JavaAuteur = Delannoy

-Nom=ALAMI- prénom = Asmae-Statut = directrice

Almassae Asmae ALAMIDirectrice

Hamza KARIMIBibliothécaire

Latifa KAMALLectrice

Ali IDRISSILecteur

31

Page 32: Ch 01 poo

Classe Journal-titre

Notion de class

Classe Livre-titre, auteur+Date emprunter(Lecteur)

Classe Employé-nom, prénom, statut

Classe Lecteur-nom, prénom+ ListeDeLivres livresEmpruntés()

Cours JavaDELANNOY

Cours C++RITCHIE

Almassae Asmae ALAMIDirectrice

Hamza KARIMIBibliothécaire

Latifa KAMALLectrice

Ali IDRISSILecteur

32

Page 33: Ch 01 poo

Notion de class

Une classe est composée de plusieurs membres dont chacun est soit : un attribut : variable typée une méthode (ou opération) : ensemble d'instructions de

traitementclass CompteBancaire {

String proprietaire;double solde;

double getSolde() {return solde;

}

void credite(double val) {solde = solde + val;

}}

Attributs

Méthodes

33

Page 34: Ch 01 poo

Notion de classUne 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

34

Page 35: Ch 01 poo

Notion de class: les membres

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ées 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).

35

Page 36: Ch 01 poo

Notion de class: Vocabulaire

36

Page 37: Ch 01 poo

Notion de class: instanciation

37

Hamza1218

Hind1715 instances Hamza et Hind).

Page 38: Ch 01 poo

Notion de class: exempleRectangle 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 effectue les opérations de déplacement et de calcul de la surface du rectangle.

Les symboles + et – sont les spécificateurs d’accès

Exemple (notation UML)

38

Page 39: Ch 01 poo

Classe Véhicule : notation UML

39

- : private# : protected+ : public$ (ou souligné) : static

Page 40: Ch 01 poo

40

public class Television {// Attributs

private int volume;private int chaine;private boolean estAllume;

// Méthodespublic void allumer() { … }public void eteindre() { … }public void augmenterVolume() { … }public void reduireVolume() { … }public void changerChaine(int chaine) { … }}

NB. Par convention, les noms des classes commencent par majusculeceux des attributs/ méthodes commencent par minuscule

Classe Television

Page 41: Ch 01 poo

41

Classe Television: instanciation

Une classe peut être réutilisée pour instancier plusieurs objets

T1

T2

T3

Page 42: Ch 01 poo

42

Classe CompteBancaire: instanciation

Page 43: Ch 01 poo

Classe Etudiant: instanciationEtudiant

• Prénom

• Age

• Filière

• Groupe

• SousGroupe

• Sexe

Etudiant1

• Mohammed

• 19

• MIP

• 1

• 2

• GarçonEtudiant3

• aya

• 18

• GEGM

• 2

• 1

• Fille

Etudiant2

• Othman

• 21

• BCG

• 3

• 2

• Garçon

instance

instance instance

43

Page 44: Ch 01 poo

44

Définir une classe représentant des voitures.

Les états des objets voiture doivent décrire démarrée ou non, position de boite de vitesse, vitesse… niveau d'essence, …

Les comportements d'une voiture incluent: Démarrer, arrêter Changer boite de vitesse Accélérer, ralentir Tourner (selon le degré spécifié)

Classe Voiture: question

Page 45: Ch 01 poo

45

public class Voiture {private boolean estDemarre;private int posBoiteVitesse;private int vitesse;private int niveauEssence;

public void demarrer() { … }public void arreter() { … }public void setPosBoiteVitesse(int pos) { … }public void accelerer() { … }public void ralentir() { … }public void tourner(int degre) { … }}

Classe Voiture: solution

Page 46: Ch 01 poo

Qu’est ce qu’une classe ?……….. En images

C’est un modèle de quelque chose d’abstrait.

C’est la définition qui permet de créer des objets.

46

Page 47: Ch 01 poo

Qu’est ce qu’une classe ?

47

Fille

Elle a des attributs

Un prénomUn nomUne date de naissanceUne adresseUn lieu de naissance

MangerBoireParlerDormirRougir

et des méthodes

Page 48: Ch 01 poo

Qu’est ce qu’une classe ?

Elle a des attributs et des méthodes

Un prénomUn nomUne date de naissanceUne adresseUn lieu de naissance

Ce sont les propriétés

48

MangerBoireParlerDormir Rougir

Ce sont les actions qu’elle peut réaliser

Page 49: Ch 01 poo

Qu’est ce qu’une classe ?

public class Fille {

private int id; private String nom;private String prenom;private String dateNaissance;private String lieudeNaissance;public static int nbFille =0;

}

On donne le nom de la classe

49

Page 50: Ch 01 poo

Qu’est ce qu’une classe ?

public class Fille {

private int id ; private String nom;private String prenom;private String dateNaissance;private String lieudeNaissance;public static int nbFille =0 ;

}

Ce sont les attributs.

50

Page 51: Ch 01 poo

Qu’est ce qu’une classe ? public class Fille {

private int id ; private String nom;private String prenom;private String dateNaissance;private String lieudeNaissance;

public static int nbFille =0 ;

}

Elles sont communes à toutes les instances.Elles sont accessibles uniquement par le biais d’un objet.

On les appelle variables d’instance

51

Page 52: Ch 01 poo

Qu’est ce qu’une classe ? public class Fille {

private int id ; private String nom;private String prenom;private String dateNaissance;private String lieudeNaissance;

public static int nbFille =0 ;

}

Les variables de classe

Une variable de classe est une variable qui est commune à toutesles instances de cette classe. Une variable de ce type peut être accessible sans avoir à passer par une instance de la classe.

52

Page 53: Ch 01 poo

Qu’est ce qu’un objet? ………..en images

Un objet est l’instanciation d’une classe

53

Page 54: Ch 01 poo

Qu’est ce qu’un objet?

Voici un objet instanciéà partir de la classeFille

Il dispose de toutesles propriétés et méthodesdéfinies dans la classe Fille.

54

Page 55: Ch 01 poo

Qu’est ce qu’un objet?

prénom : Sara55

Page 56: Ch 01 poo

Qu’est ce qu’un objet?

Voici un autreobjet

Elle a un prénom : Aya

56

Page 57: Ch 01 poo

Qu’est ce qu’un objet?

Voici un autreobjet

Il a un prénom : Hind

57

Page 58: Ch 01 poo

Qu’est ce qu’un objet?

Ce sont tous des objets

obtenus à partird’un modèle

58

Page 59: Ch 01 poo

Qu’est ce qu’un objet ?

Fille est un modèle (classe)

Tandis que Sara, Hind et Aya sont des instances (objet)

Ils ont été instanciés à partir d’un modèle (classe)

59

Page 60: Ch 01 poo

Différences entre classe et objet

Il est important de saisir les différences entre les notions de classeet instance de la classe :

classe = attributs + méthodes + mécanismes d’instanciation +mécanismes de destruction

instance de la classe = valeurs des attributs + accès aux méthodes

L’instanciation est le mécanisme qui permet de créer des instancesdont les traits sont décrits par la classe.La destruction est le mécanisme qui permet de détruire uneinstance de la classe.L’ensemble des instances d’une classe constitue l’extension de laclasse.

60

Page 61: Ch 01 poo

61

Page 62: Ch 01 poo

Encapsulation

L'encapsulation est un mécanisme consistant à rassembler les données et les méthodes au sein d'une structure (classe).

Il ne s'agit plus de déclarer des données générales puis un ensemble de procédures et fonctions destinées à les gérer de manière séparée, mais bien de réunir le tout sous le couvert d'une seule et même entité.

L'utilisateur extérieur ne pourra pas modifier directement l'information.

7

62

Page 63: Ch 01 poo

L'encapsulation permet de garder une cohérence dans la gestion de l'objet, tout en assurant l'intégrité des données qui ne pourront être accédées qu'au travers des méthodes visibles.

Encapsulation7

63

Page 64: Ch 01 poo

Protection de l’information: encapsulationInterfaceensemble des

services publicsofferts

Capsulen’autorisant que lesdemandes de servicepublic

Demande

de serviceAccès aux données Aya

Sara

Hind

Règle

Les données d’un objet (son état) peuvent être lues ou modifiéesuniquement par les services proposés par l’objet lui-même (sesméthodes)

64

Page 65: Ch 01 poo

Encapsulation : définitionDéfinitionLe terme encapsulation désigne le principe consistant à cacherl’information contenue dans un objet et de ne proposer que desméthodes de modification/accès à ces propriétés (attributs).

65

Page 66: Ch 01 poo

Encapsulation : définitionDéfinitionLe terme encapsulation désigne le principe consistant à cacherl’information contenue dans un objet et de ne proposer que desméthodes de modification/accès à ces propriétés (attributs).

L’objet est vu de l’extérieur comme une boîte noire ayantcertaines propriétés et ayant un comportement spécifié.La manière, dont le comportement a été implémenté, est cachée aux utilisateurs de l’objet.

Intérêt

Protéger la structure interne de l’objet contre toute manipulationnon contrôlée, produisant une incohérence.

66

Page 67: Ch 01 poo

Encapsulation : exemple

De point de vue utilisation, un objet est une boite noire qui offre un certain nombre de méthodes permettant d’interagir avec lui.

Peu importe comment il est construit en interne, la seule chose nécessaire pour pouvoir utiliser un objet est de savoir ce qu’il peut faire et surtout comment lui demander.

Exemple: un poste de TV est une « boite noire » ayant pour interface: un écran, des HP et une télécommande. Pour changer de chaine, il suffit de changerChaine(int chaine)Peu importe ce qui se passe réellement en interne.

67

Page 68: Ch 01 poo

Encapsulation : en pratiqueL’encapsulation nécessite la spécification des parties publicset privées de l’objet.élément public: correspond à la partie visible de l’objet depuisl’extérieur. c’est un ensemble de méthodes utilisablespar d’autres objets (environnement).élément privé: correspond à la partie non visible de l’objet. Il est constitué des éléments de l’objet visibles uniquement de l’intérieur de l’objet et de la définition des méthodes.

68

Page 69: Ch 01 poo

L’encapsulation: à retenir

C’est un mécanisme fondamental de la POO.

Un utilisateur peut manipuler les données à l’aide des méthodes.

Il existe 3 niveaux d’accès: Public, Privé, Protégé: Public: accessible par tout le monde Private : uniquement manipulable par l’objet lui-même. Protégé: manipulable par l’objet lui-même & les enfants.

69

Page 70: Ch 01 poo

70

L’héritage8

L'héritage est un mécanisme qui facilite la réutilisation du code et la gestion de son évolution. Elle définit une relation entre deux classes : Une classe mère ou super classe Une classe fille ou sous classe qui hérite de sa classe mère

Les objets d'une classe fille ont accès aux données et aux méthodes de la classe parent et peuvent les étendre (c-à-dpeuvent avoir des attributs et des méthodes qui leur sont propres).

Les sous classes peuvent redéfinir les variables et les méthodes héritées.

Les méthodes des classes filles sont redéfinies avec le même nom, les mêmes types et le même nombre d'arguments.

Page 71: Ch 01 poo

L’héritageClasse de base(classe mère ousuper classe)

Classe dérivée(classe fille ousous classe )

Relation d’héritage : Classe B "EST UN" Classe A

Exemple: un avion est un véhicule

Classe A

Classe B

71

Page 72: Ch 01 poo

L’héritage

Relation d’héritageClasse B "EST UN" Classe A

Un chat EST UN animalUne moto EST UN véhiculeUne décapotable EST UNe voiture

72

Page 73: Ch 01 poo

L’héritage

Une classe fille peut accéder uniquement

aux données publiques et protégées

73

Page 74: Ch 01 poo

L’héritage Java permet à une classe de s’élargir (extend)

relativement à une seule autre classe. Cette restriction est appelée héritage simple. Certains langages permettent de définir une classe

à partir de plusieurs autres, c’est l’héritage multiple qui n’existe pas dans Java.

héritage simplehéritage multiple

74

Page 75: Ch 01 poo

L’héritage: exemple

Une personne a un nom, un prénom, un numéro de Sécurité Sociale.

Un étudiant a un nom, un prénom, un numéro de Sécurité Sociale, et une note.

Un professeur a un nom, un prénom, un numéro de Sécurité Sociale, et une matière.

Quels sont les propriétés communes aux 3 classes ?

75

Page 76: Ch 01 poo

L’héritage: exemple

Une personne a un nom, un prénom, un numéro de Sécurité Sociale.

Un étudiant a un nom, un prénom, un numéro de Sécurité Sociale, et une note.

Un professeur a un nom, un prénom, un numéro de Sécurité Sociale, et une matière.

propriétés communes aux 3 classesen rouge

76

Page 77: Ch 01 poo

L’héritage: exemple

La classe Professeur et La classe Etudiant pourront les utiliser par le

biais de l’héritage.

On peut centraliser le nom, le prénom, le numéro de Sécurité Sociale au sein d’une classe Personne.

77

Page 78: Ch 01 poo

L’héritage: exemple

Un professeur est une personne. Un étudiant est une personne.

Il s’agit de la relation « est un »

78

Page 79: Ch 01 poo

L’héritage: exempleSans héritage, on aurait

+

#

Personne

#name : String#prenom : String#numSS :String

+getName():String+setName(String n): String+getprenom():String+setprenom(String n): String+setNum(int n) : void+getNum():int+getPersonne(): void+setPersonne(String f,String n, int s)

+

#

Etudiant

-name : String-prenom : String-numSS :String-note : int

+getName():String+setName(String n): String+getprenom():String+setprenom(String n): String+setNum(int n) : void+getNum():int+getNote):int+setNote(int n):void+getEtudiant(): void+setEtudiant(String f,String n, int s,int n)

+

#

Professeur

-name : String-prenom : String-numSS :String- Matiere :String

+getName():String+setName(String n): String+getprenom():String+setprenom(String n): String+setNum(int n) : void+getNum():intsetMatiere(String n) : void+getMatiere):String+getProfesseur(): void+setProfesseur(String f,Stringn, String m)

Quelles sont les propriétés et méthodes identiques?

79

Page 80: Ch 01 poo

L’héritage: exemple

Sans héritage, on aurait

+

#

Personne

#name : String#prenom : String#numSS :String

+getName():String+setName(String n): String+getprenom():String+setprenom(String n): String+setNum(int n) : void+getNum():int+getPersonne(): void+setPersonne(String f,String n, int s)

+

#

Etudiant

-name : String-prenom : String-numSS :String-note : int

+getName():String+setName(String n): String+getprenom():String+setprenom(String n): String+setNum(int n) : void+getNum():int+getNote):int+setNote(int n):void+getEtudiant(): void+setEtudiant(String f,String n, int s,int n)

+

#

Professeur

-name : String-prenom : String-numSS :String- Matiere :String

+getName():String+setName(String n): String+getprenom():String+setprenom(String n): String+setNum(int n) : void+getNum():intsetMatiere(String n) : void+getMatiere):String+getProfesseur(): void+setProfesseur(String f,Stringn, String m)

propriétés et méthodes identiques? 80

Page 81: Ch 01 poo

Avec héritage, on aurait

N’est-il pas plus simpled’implémenter ce modèle?

81

L’héritage: exemple

Page 82: Ch 01 poo

L’héritage: à retenir C’est un concept fondamental de la POO

Il offre la possibilité de réutiliser les composants logiciels existants.

Une classe dérivée(=fille) pourra utiliser les méthodes et attributs de la classe mère (=super classe) et pourra ajouter ses propres propriétés.

Ce qui offre la possibilité de ne pas repartir de 0

82

Page 83: Ch 01 poo

83

Une télévision et un écran d'ordinateur sont tous deux desappareils à écran.

Un appareil à écran possède un poids, une longueur de diagonaleet il est possible de l'éteindre et de l'allumer.

Une télévision est un tel appareil, possédant également une listede chaînes mémorisées, une action permettant de mémoriser unechaîne, ainsi que d'autres non précisées ici qui font d'un appareilà écran... une télévision.

Un écran d'ordinateur est également un appareil à écran, maispossédant une résolution actuelle, une liste de résolutionspossibles, et une action permettant de changer la résolutionactuelle.

La télévision d'un coté, et l'écran d'ordinateur de l'autre sont deuxconcepts basés sur celui de l'appareil à écran, et lui ajoutantdivers éléments qui le rendent particulier. Si je vous dis que j'ai unappareil à écran devant moi, vous pouvez légitimement penserqu'il peut s'agir d'une télévision, d'un écran d'ordinateur, voired'autre chose...

L’héritage: exercice

Page 84: Ch 01 poo

84

Une télévision et un écran d'ordinateur sont tous deux desappareils à écran.

Un appareil à écran possède un poids, une longueur de diagonaleet il est possible de l'éteindre et de l'allumer.

Une télévision est un tel appareil, possédant également une listede chaînes mémorisées, une action permettant de mémoriser unechaîne, ainsi que d'autres non précisées ici qui font d'un appareilà écran... une télévision.

Un écran d'ordinateur est également un appareil à écran, maispossédant une résolution actuelle, une liste de résolutionspossibles, et une action permettant de changer la résolutionactuelle.

La télévision d'un coté, et l'écran d'ordinateur de l'autre sont deuxconcepts basés sur celui de l'appareil à écran, et lui ajoutantdivers éléments qui le rendent particulier. Si je vous dis que j'ai unappareil à écran devant moi, vous pouvez légitimement penserqu'il peut s'agir d'une télévision, d'un écran d'ordinateur, voired'autre chose...

L’héritage: exercice

Page 85: Ch 01 poo

85

L’héritage: exercice

Page 86: Ch 01 poo

86

Factoriser les éléments communs (attributs, méthodes…) de l’ensemble de classes que vous allez dégager de ce texte

L’héritage: exercice Un compte chèque et un compte épargne sont tous deux des

comptes bancaires. Un compte chèque possède un solde et un montant découvert

autorisé qu’il est possible de changer. On peut effectuer desopérations de dépôt et de retrait d’argents. Le retrait n’estautorisé que suivant le découvert.

Un compte épargne possède également un solde. Il est rémunéréselon un taux ce qui génère des intérêts sur lesquels on peuteffectuer des opérations de calcul et de crédit.

Un compte épargne est un compte bancaire sur lequel, on peuteffectuer également des opérations de dépôt et de retraitd’argents. Il n’y a pas de découvert autorisé pour le retraitd’argent. Le taux d’intérêt peut être changé.

Page 87: Ch 01 poo

87

L’héritage: exercice Un compte chèque et un compte épargne sont tous deux des comptes

bancaires. Un compte chèque possède un solde et un montant découvert autorisé

qu’il est possible de changer. On peut effectuer des opérations dedépôt et de retrait d’argents. Le retrait n’est autorisé que suivant ledécouvert.

Un compte épargne possède également un solde. Il est rémunéré selonun taux ce qui génère des intérêts sur lesquels on peut effectuer desopérations de calcul et de crédit.

Un compte épargne est un compte bancaire sur lequel, on peuteffectuer également des opérations de dépôt et de retrait d’argents.Il n’y a pas de découvert autorisé pour le retrait d’argent. Le tauxd’intérêt peut être changé.

Page 88: Ch 01 poo

88

Factoriser les éléments communs (attributs, méthodes…) d’un ensemble de classes

L’héritage: exercice

Page 89: Ch 01 poo

89

L’héritage: exercice

Page 90: Ch 01 poo

90

L’héritage: exercice

Un plan épargne logement est un compte épargne ayant des caractéristiques propres.

Un montant de versement doit se faire sur une durée donnée et pour des périodes bien précises.

Une fois la période écoulée, le montant de prêt peut être calculé et l’opération de retrait peut se faire.

Aucun retrait ne peut s’effectuer avant l’écoulement de la durée fixée.

Page 91: Ch 01 poo

91

L’héritage: exercice Un plan épargne logement est un compte épargne

ayant des caractéristiques propres. Un montant de versement doit se faire sur une

durée donnée et pour des périodes bien précises. Une fois la période écoulée, le montant de prêt

peut être calculé et l’opération de retrait peut se faire.

Aucun retrait ne peut s’effectuer avant l’écoulement de la durée fixée.

Page 92: Ch 01 poo

92

L’héritage: exercice

Page 93: Ch 01 poo

93

L’héritage: exerciceRedifinition de méthode

Page 94: Ch 01 poo

94

Polymorphisme9

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 = 3Addition des nombres complexes,

1 + 2i + 3 + 4i = 4 + 6i

Page 95: Ch 01 poo

95

Polymorphisme9

Le polymorphisme offre aux objets la possibilité d ’appartenir à plusieurs catégories à la fois

En effet, nous avons certainement tous appris à l'école qu'il était impossible d'additionner des pommes et des oranges

Mais, on peut écrire l ’expression suivante:3 pommes + 5 oranges = 8 fruits

Page 96: Ch 01 poo

96

Polymorphisme

Une façon de décrire l'exemple consistant à additionner despommes et des oranges serait d'imaginer que nous disonspommes et oranges mais que nous manipulons en fait desfruits. Nous pourrions écrire alors la formule correcte :

3 (fruits) pommes+ 5 (fruits) oranges---------------------------------------------= 8 fruits

Cette façon de voir les choses implique que les pommes et lesoranges soient "transformées" en fruits préalablement àl'établissement du problème.

Page 97: Ch 01 poo

Le polymorphisme est un concept extrêmement puissant en POO, il permet de manipuler des objets sans en connaître tout à fait le type tout en se basant sur la relation d’héritage.

Le polymorphisme en Java, se traduit par : La compatibilité entre un type dérivé et un type

ascendant. La ligature dynamique des méthodes, dans le sens où il

permet d’obtenir le comportement adapté à chaque type d’objet, sans avoir besoin de tester sa nature de quelque façon que ce soit.

Le polymorphisme se base sur cette affirmation : un objet a comme type non seulement sa classe mais aussi n’importe quelle classe dérivée.

Polymorphisme

97

Page 98: Ch 01 poo

98

Propriété pour un même message de déclencher des méthodes différentes

Feu

Voiture

Velochanger (Vert)

Demarrer()

Demarrer()

- Débrayer- Passer la première- Accélérer- Embrayer

- Pédaler

Plusieurs classes peuvent posséder une méthode de même nom. Suivant la nature de l'objet auquel elle doit s'appliquer, on appliquera telle ou telle méthode.

Le polymorphisme : consiste donc à appeler la bonne méthode d'après le type de l'objet implémenté.

Polymorphisme

Page 99: Ch 01 poo

Même libellé de la fonction dessiner().Les fonctions ayant la même sémantique ont le même nom.

Programmation plus souple => ajouter une classe RECTANGLE …Il suffit de le faire et d'écrire la méthode dessiner()dans cette classe.

En programmation procédurale, il faut reprendre le code dessiner() (il faut déjà l'avoir ce qui n'est toujours pas le cas) et l'enrichir (sans le détériorer, histoire de pouvoir toujours dessiner() un cercle par exemple).

Polymorphisme:avantages

classe CARREdessiner();

classe CERCLEdessiner();

classe TRIANGLEdessiner();

99

Page 100: Ch 01 poo

Polymorphisme: à retenir

100

C’est un concept fondamental de la POO

Le polymorphisme traite de la capacité de l'objet à posséder plusieurs formes.

Cette capacité dérive directement du principe d'héritage.

C’est la faculté qu'ont des objets différents de réagir différemment en réponse au même message.

C’est la capacité du système de choisir dynamiquement la méthode qui correspond au type réel de l’objet.