ch 01 poo
TRANSCRIPT
Programmation Orientée Objet
POO
Prof. Hakim ALLALILicences EEA & RTT. Fév 2013
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
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
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
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
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
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
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
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)
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
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
Programmation: diverses approches
12
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
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
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
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
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
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
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
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).
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Notion de class: Vocabulaire
36
Notion de class: instanciation
37
Hamza1218
Hind1715 instances Hamza et Hind).
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
Classe Véhicule : notation UML
39
- : private# : protected+ : public$ (ou souligné) : static
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
41
Classe Television: instanciation
Une classe peut être réutilisée pour instancier plusieurs objets
T1
T2
T3
42
Classe CompteBancaire: instanciation
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
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
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
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
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
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
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
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
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
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
Qu’est ce qu’un objet? ………..en images
Un objet est l’instanciation d’une classe
53
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
Qu’est ce qu’un objet?
prénom : Sara55
Qu’est ce qu’un objet?
Voici un autreobjet
Elle a un prénom : Aya
56
Qu’est ce qu’un objet?
Voici un autreobjet
Il a un prénom : Hind
57
Qu’est ce qu’un objet?
Ce sont tous des objets
obtenus à partird’un modèle
58
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
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
61
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
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
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
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
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
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
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
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
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.
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
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
L’héritage
Une classe fille peut accéder uniquement
aux données publiques et protégées
73
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
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
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
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
L’héritage: exemple
Un professeur est une personne. Un étudiant est une personne.
Il s’agit de la relation « est un »
78
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
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
Avec héritage, on aurait
N’est-il pas plus simpled’implémenter ce modèle?
81
L’héritage: exemple
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
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
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
85
L’héritage: exercice
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é.
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é.
88
Factoriser les éléments communs (attributs, méthodes…) d’un ensemble de classes
L’héritage: exercice
89
L’héritage: exercice
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.
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.
92
L’héritage: exercice
93
L’héritage: exerciceRedifinition de méthode
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
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
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.
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
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
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
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.