chap2 poo beamer (1)
Post on 17-Feb-2018
220 Views
Preview:
TRANSCRIPT
-
7/23/2019 Chap2 Poo Beamer (1)
1/80
POO C++
Y. Morre
IntroductionLa POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes et
dfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs de
comparaisons
Bibliographie /Webo ra hie
C++ et Programmation Oriente Objet :Objets, classes et surcharge
Yann Morre
www.lcoms.univ-lorraine.fr, www.morere.eu
Septembre 2013
1 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
http://www.lcoms.univ-lorraine.fr/http://www.lcoms.univ-lorraine.fr/http://www.morere.eu/http://www.morere.eu/http://www.lcoms.univ-lorraine.fr/http://find/http://goback/ -
7/23/2019 Chap2 Poo Beamer (1)
2/80
POO C++
Y. Morre
IntroductionLa POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs de
comparaisons
Bibliographie /Webo ra hie
La Programmation Orient Objet
Quest ce quun objet
Une variable ? une fonction ? : NONNouvel lment compos de plusieurs variables et fonctions
un objet est une structure de donnes values et caches quirpond un ensemble de messages/mthodes
Les donnes/variables qui dcrivent sa structure interne sont
appeles ses attributs ;Lensemble des messages forme ce que lon appelle linterface delobjet. La rponse la rception dun message par un objet estappele une mthode.
encapsulationCertains attributs et/ou mthodes sont cachs : cest le principedencapsulation.
modification de la structure interne des objets ou leurs mthodesassocies sans impact sur les utilisateurs de lobjet.
2 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
3/80
POO C++
Y. Morre
IntroductionLa POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs de
comparaisons
Bibliographie /Webo ra hie
La Programmation Orient Objet
Quest ce quun objet
Une variable ? une fonction ? : NONNouvel lment compos de plusieurs variables et fonctions
un objet est une structure de donnes values et caches quirpond un ensemble de messages/mthodes
Les donnes/variables qui dcrivent sa structure interne sont
appeles ses attributs ;Lensemble des messages forme ce que lon appelle linterface delobjet. La rponse la rception dun message par un objet estappele une mthode.
encapsulationCertains attributs et/ou mthodes sont cachs : cest le principedencapsulation.
modification de la structure interne des objets ou leurs mthodesassocies sans impact sur les utilisateurs de lobjet.
2 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
4/80
POO C++
Y. Morre
IntroductionLa POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs de
comparaisons
Bibliographie /Webo ra hie
Les secrets de string
Code source
# i n c l u d e # i n c l u d e / / O b li g at o ir e p ou r p o uv o ir u t il i se r l es o b je t s s t ri ng
u s i ng n a m e sp a c e st d ;
in t main () {
s t r i ng c h a in e 1 ( " B o nj o ur ! " );
s t r i ng c h a in e 2 ( " C o m m e nt a l le z - v o u s ? " );
s t r i ng c h a in e 3 ;
c h a i n e 3 = c h a i n e 3 = c h a i n e 1 + " " + c h a i n e 2 ; / / C o n c a t n a t i o n
cout < < c h a i n e 3
-
7/23/2019 Chap2 Poo Beamer (1)
5/80
POO C++
Y. Morre
IntroductionLa POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateursIntroduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs de
comparaisons
Bibliographie /Webo ra hie
Les secrets de string
Code source
# i n c l u d e
# i n c l u d e / / O b li g at o ir e p ou r p o uv o ir u t il i se r l es o b je t s s t ri ng
u s i ng n a m e sp a c e st d ;
in t main () {
s t r i ng c h a in e 1 ( " B o nj o ur ! " );
s t r i ng c h a in e 2 ( " C o m m e nt a l le z - v o u s ? " );
s t r i ng c h a in e 3 ;
c h a i n e 3 = c h a i n e 3 = c h a i n e 1 + " " + c h a i n e 2 ; / / C o n c a t n a t i o n
cout < < c h a i n e 3
-
7/23/2019 Chap2 Poo Beamer (1)
6/80
POO C++
Y. Morre
IntroductionLa POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateursIntroduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs de
comparaisons
Bibliographie /Webo ra hie
Oprations sur les string
Mthodes de lobjet
Le type stringdispose de nombreuses mthodes
http://www.cplusplus.com/reference/string/string/
Appel de la mthode : objet.methode()
La taille du string ;-)
# i n c l u d e # i n c l u d e / / O b li g at o ir e p ou r p ou vo ir u ti l is er l es o bj et s s tr in g u s in g n a m es p a ce std ;int main (){
s t ri n g m a C ha i n e( " B o nj ou r ! " );cout
-
7/23/2019 Chap2 Poo Beamer (1)
7/80
POO C++
Y. Morre
IntroductionLa POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateursIntroduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs de
comparaisons
Bibliographie /Webo ra hie
Oprations sur les string
Mthodes de lobjet
Le type stringdispose de nombreuses mthodes
http://www.cplusplus.com/reference/string/string/
Appel de la mthode : objet.methode()
La taille du string ;-)
# i n c l u d e # i n c l u d e / / O b li g at o ir e p ou r p ou vo ir u ti l is er l es o bj et s s tr in g u s in g n a m es p a ce std ;int main (){
s t ri n g m a C ha i n e( " B o nj ou r ! " );cout
-
7/23/2019 Chap2 Poo Beamer (1)
8/80
POO C++
Y. Morre
IntroductionLa POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateursIntroduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs de
comparaisons
Bibliographie /Webo ra hie
Oprations sur les string
Dautres mthodes
La mthode erase(): supprime tout le contenu de la chane ;
La mthode substr(): extraire une partie de la chane.
Supprimmer/Extraire le contenu du string
# i n c l u d e
# i n c l u d e / / O b li g at o ir e p ou r p o uv o ir u t il i se r l es o b je t s s t ri ng
u s i ng n a m e sp a c e st d ;in t main () {
s t r i ng c h a in e ( " B o n j o ur ! " );
c h a i n e . erase () ;
cout < < " La c h ai n e c o nt i en t : "
-
7/23/2019 Chap2 Poo Beamer (1)
9/80
POO C++
Y. Morre
IntroductionLa POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateursIntroduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs de
comparaisons
Bibliographie /Webo ra hie
Oprations sur les string
Dautres mthodes
La mthode erase(): supprime tout le contenu de la chane ;
La mthode substr(): extraire une partie de la chane.
Supprimmer/Extraire le contenu du string
# i n c l u d e
# i n c l u d e / / O b li g at o ir e p ou r p o uv o ir u t il i se r l es o b je t s s t ri ng
u s i ng n a m e sp a c e st d ;in t main () {
s t r i ng c h a in e ( " B o n j o ur ! " );
c h a i n e . erase () ;
cout < < " La c h ai n e c o nt i en t : "
-
7/23/2019 Chap2 Poo Beamer (1)
10/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateursIntroduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs de
comparaisons
Bibliographie /Webo ra hie
Crer une classe
Classe, Objet : Niveau dabstraction
La classe dcrit la structure interne des donnes, dfinit les
mthodes qui sappliqueront aux objets de mme famille (mmeclasse) ou type ;
Elle propose des mthodes de cration des objets ;
Les objets sont dits alors instances de la classe ;
Les attributs dun objet sont appels variables dinstanceles messages sont nomms opration dinstance ou mthodesdinstance.
6 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
C l
http://find/http://goback/ -
7/23/2019 Chap2 Poo Beamer (1)
11/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateursIntroduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs de
comparaisons
Bibliographie /Webo ra hie
Crer une classe
Code minimalClasse Personnage qui va reprsenter un personnage de jeu de rle
c l a s s Personnage{
}; / / N o ub li ez p as le po in t - v ir gu le la f in !
Syntaxe
Mot cl classsuivi du nom choisi ;
Tout va tre dfinit entre les accolades.
Attention
il y a un point-virgule aprs laccolade fermante
7 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
C l
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
12/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateursIntroduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs de
comparaisons
Bibliographie /Webo ra hie
Crer une classe
Code minimalClasse Personnage qui va reprsenter un personnage de jeu de rle
c l a s s Personnage{
}; / / N o ub li ez p as le po in t - v ir gu le la f in !
Syntaxe
Mot cl classsuivi du nom choisi ;
Tout va tre dfinit entre les accolades.
Attention
il y a un point-virgule aprs laccolade fermante
7 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
C l
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
13/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateursIntroduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Crer une classe
Code minimalClasse Personnage qui va reprsenter un personnage de jeu de rle
c l a s s Personnage{
}; / / N o ub li ez p as le po in t - v ir gu le la f in !
Syntaxe
Mot cl classsuivi du nom choisi ;
Tout va tre dfinit entre les accolades.
Attention
il y a un point-virgule aprs laccolade fermante
7 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
C l
http://find/http://goback/ -
7/23/2019 Chap2 Poo Beamer (1)
14/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateursIntroduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Crer une classe
Attributs et mthodes
De quoi notre objet a t il besoin pour fonctionner?
tape importante de la rflexion ;
AttributsIl caractriser la classe : variables qui voluent dans le temps ;
Mthodes
Elles dfinissent les actions de la classe ;Elles lisent et modifient les attributs.
8 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Crer ne classe
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
15/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateursIntroduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Crer une classe
Attributs et mthodes
De quoi notre objet a t il besoin pour fonctionner?
tape importante de la rflexion ;
AttributsIl caractriser la classe : variables qui voluent dans le temps ;
Mthodes
Elles dfinissent les actions de la classe ;Elles lisent et modifient les attributs.
8 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Crer une classe
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
16/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateursIntroduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Crer une classe
Attributs et mthodes
De quoi notre objet a t il besoin pour fonctionner?
tape importante de la rflexion ;
AttributsIl caractriser la classe : variables qui voluent dans le temps ;
Mthodes
Elles dfinissent les actions de la classe ;
Elles lisent et modifient les attributs.
8 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Cration de la classe
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
17/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateursIntroduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Cration de la classe
Fichier Personnage.h
# i f n d e f P E R S O N N A G E _ H _ I N C L U D E D
# d e f i n e P E R S O N N A G E _ H _ I N C L U D E D
# i n c l u d e
# i n c l u d e
u s i ng n a m e sp a c e st d ;
class P e r s o n n a g e
{
/ / M t h o d esvoid r e c e v o i r D e g a t s ( in t n b D e g a t s ) { }
void a t t a q u e r ( P e r s o n n a g e & c i b l e ) { }
void b o i r e P o t i o n D e V i e ( in t q u a n t i t e P o t i o n ) { }
void c h a n g e r A r m e ( s t r i n g n o m N o u v e l l e A r m e, in t d e g a t s N o u v e l l e A r m e ) { }
bool e s t V i v a n t () { r e t ur n t r ue ;}
/ / A t t r ib u t s
in t m _ v i e ;
in t m _ m a n a ;
s t r i ng m _ n o mA r m e ;
in t m _ d e g a t s A r m e ;};
# e n d i f / / P E R S O N N A G E _ H _ I N C L U D E D
9 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Instanciation en objets
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
18/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateursIntroduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Instanciation en objets
Fichier testPersonage.cpp
# i n c l u d e " P e r s o n n a g e . h "in t main ()
{
P e r s o n n a g e d a v id , g o l i a t h ;
/ / Cr a t io n d e 2 o b je t s d e t yp e P e rs o nn a ge : d a vi d e t g o li a th
g o l i a t h . a t t a q u e r ( d a v i d ); / / g o l ia t h a t t aq u e d a v id
d a v i d . b o i r e P o t i o n D e V i e (20); / / d av i d r c u p re 2 0 d e v ie e n b u va n t u ne p o ti o n
g o l i a t h . a t t a q u e r ( d a v i d ); / / g o l ia t h r a t t a q ue d a v id
d a v i d . a t t a q u e r ( g o l i a t h ); / / d a v id c o nt r e - a t t a q ue . . . c e s t a s s e z c l a i r n o n ?
g o l i a t h . c h a n g e r A r m e ( " D o ub l e h a ch e t r an c ha n te v n ne us e d e l a m or t ", 4 0) ;
g o l i a t h . a t t a q u e r ( d a v i d );
return 0;}
Compilation
$ g ++ - Wall -o t e s t P er s o n n ag e t e s t P er s o n n ag e . c p p P e r s on n a g e. hP e r s o n n a g e . h : In f u n c t i o n i n t m a in ( ) :
P e r s o n n a g e . h : 1 6 : 1 0 : e r r e u r : v o id P e r s on n a g e :: a t t a q u e r ( P e r s o n n a g e &) i s p r i v at e
t e s t P e r s o n n a g e . cp p : 1 1 : 2 7 : erreur : l in t r i e ur d u c o n t ex t e
P e r s o n n a g e . h : 2 1 : 1 0 : e r r e u r : v o id P e r s on n a g e :: b o i r e P o t i o n D e V i e ( in t ) i s p r i v at e
t e s t P e r s o n n a g e . cp p : 1 2 : 3 0 : erreur : l in t r i e ur d u c o n t ex t e
P e r s o n n a g e . h : 1 6 : 1 0 : e r r e u r : v o id P e r s on n a g e :: a t t a q u e r ( P e r s o n n a g e &) i s p r i v at e
[ . . . ]
x
10 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Droits daccs en encapsulation
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
19/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateursIntroduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Droits d accs en encapsulation
Erreur de droit daccs
Le compilateur renvoie une erreur indiquant un problme daccs.
Droits daccs des attributs/mthodes
Chaque attribut et chaque mthode dune classe peut possder sonpropre droit daccs :
public: lattribut ou la mthode peut tre appel depuislextrieur de lobjet ;
private: lattribut ou la mthode ne peut pas tre appeldepuis lextrieur de lobjet.
Par dfaut, tous les lments dune classe sont private ;
Il existe aussi les droits protectedet friends( venir).
Modification du code source
Mthodes avec le droit public ;
Variables avec le droit private.
11 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Droits daccs en encapsulation
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
20/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateursIntroduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Droits d accs en encapsulation
Erreur de droit daccs
Le compilateur renvoie une erreur indiquant un problme daccs.
Droits daccs des attributs/mthodes
Chaque attribut et chaque mthode dune classe peut possder sonpropre droit daccs :
public: lattribut ou la mthode peut tre appel depuislextrieur de lobjet ;
private: lattribut ou la mthode ne peut pas tre appeldepuis lextrieur de lobjet.
Par dfaut, tous les lments dune classe sont private ;
Il existe aussi les droits protectedet friends( venir).
Modification du code source
Mthodes avec le droit public ;
Variables avec le droit private.
11 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Droits daccs en encapsulation
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
21/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateursIntroduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Droits d accs en encapsulation
Erreur de droit daccs
Le compilateur renvoie une erreur indiquant un problme daccs.
Droits daccs des attributs/mthodes
Chaque attribut et chaque mthode dune classe peut possder sonpropre droit daccs :
public: lattribut ou la mthode peut tre appel depuislextrieur de lobjet ;
private: lattribut ou la mthode ne peut pas tre appeldepuis lextrieur de lobjet.
Par dfaut, tous les lments dune classe sont private ;
Il existe aussi les droits protectedet friends( venir).
Modification du code source
Mthodes avec le droit public ;
Variables avec le droit private.
11 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Modification de la classe
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
22/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateursIntroduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Modification de la classe
Fichier Personnage.h
# i f n d e f P E R S O N N A G E _ H _ I N C L U D E D
# d e f i n e P E R S O N N A G E _ H _ I N C L U D E D# i n c l u d e
# i n c l u d e
u s i ng n a m e sp a c e st d ;
class P e r s o n n a g e
{
/ / T ou t c e q ui s ui t e st p u bl i c ( a c ce s si b le d e pu i s l e x t r ie ur )
public :
/ / M t h o d es
void r e c e v o i r D e g a t s ( in t n b D e g a t s ) { }
void a t t a q u e r ( P e r s o n n a g e & c i b l e ) { }void b o i r e P o t i o n D e V i e ( in t q u a n t i t e P o t i o n ) { }
void c h a n g e r A r m e ( s t r i n g n o m N o u v e l l e A r m e, in t d e g a t s N o u v e l l e A r m e ) { }
bool e s t V i v a n t () { r e t ur n t r ue ;}
p r i v a t e :
/ / T ou t c e q ui s ui t e st p ri v ( i n a cc e ss i bl e d e pu i s l e x t r ie u r )
/ / A t t r ib u t s
in t m _ v i e ;
in t m _ m a n a ;
s t r i ng m _ n o mA r m e ;
in t m _ d e g a t s A r m e ;
};# e n d i f / / P E R S O N N A G E _ H _ I N C L U D E D
Compilation
Aucune erreur : Appel des mthodes publiques de puis le main.
12 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Modification de la classe
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
23/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateursIntroduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Modification de la classe
Fichier Personnage.h
# i f n d e f P E R S O N N A G E _ H _ I N C L U D E D
# d e f i n e P E R S O N N A G E _ H _ I N C L U D E D# i n c l u d e
# i n c l u d e
u s i ng n a m e sp a c e st d ;
class P e r s o n n a g e
{
/ / T ou t c e q ui s ui t e st p u bl i c ( a c ce s si b le d e pu i s l e x t r ie ur )
public :
/ / M t h o d es
void r e c e v o i r D e g a t s ( in t n b D e g a t s ) { }
void a t t a q u e r ( P e r s o n n a g e & c i b l e ) { }void b o i r e P o t i o n D e V i e ( in t q u a n t i t e P o t i o n ) { }
void c h a n g e r A r m e ( s t r i n g n o m N o u v e l l e A r m e, in t d e g a t s N o u v e l l e A r m e ) { }
bool e s t V i v a n t () { r e t ur n t r ue ;}
p r i v a t e :
/ / T ou t c e q ui s ui t e st p ri v ( i n a cc e ss i bl e d e pu i s l e x t r ie u r )
/ / A t t r ib u t s
in t m _ v i e ;
in t m _ m a n a ;
s t r i ng m _ n o mA r m e ;
in t m _ d e g a t s A r m e ;
};# e n d i f / / P E R S O N N A G E _ H _ I N C L U D E D
Compilation
Aucune erreur : Appel des mthodes publiques de puis le main.
12 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Encapsulation
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
24/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateursIntroduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Encapsulation
A graver au laser sur votre rtine !
Encapsulation : tous les attributsdune classe doivent toujours treprivs.
Principe qui donne sa puissance la POO. Permet de masquer lesinformations lutilisateur. Le contenu de lobjet ne doit pas tre
accessible autrement que par les mthodes.
13 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Encapsulation
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
25/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateursIntroduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
p
A graver au laser sur votre rtine !
Encapsulation : tous les attributsdune classe doivent toujours treprivs.
Principe qui donne sa puissance la POO. Permet de masquer lesinformations lutilisateur. Le contenu de lobjet ne doit pas tre
accessible autrement que par les mthodes.
13 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Sparation prototypes et dfinitions
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
26/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surcharge
doprateursIntroduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
p p yp
Dcoupage en plusieurs fichiers
code modulaire : sparer les mthodes en prototypes etdfinitions dans deux fichiers diffrents ;
un header (fichier maClasse.h) qui contiendra les attributs etles prototypes de la classe ;
un fichier source (fichier maClasse.cpp) qui contiendra ladfinition des mthodes et leur implmentation ;
le programme principale dans un autre fichier source main.cpp.
14 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Sparation prototypes et dfinitions
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
27/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
p p yp
Fichier Personnage.h
# i f n d e f D E F _ P E R S O N N A G E
# d e f i n e D E F _ P E R S O N N A G E
# i n c l u d e
class P e r s o n n a g e
{
public :
void r e c e v o i r D e g a t s ( in t n b D e g a t s );
void a t t a q u e r ( P e r s o n n a g e & c i b l e );
void b o i r e P o t i o n D e V i e ( in t q u a n t i t e P o t i o n );
void c h a n g e r A r m e ( st d :: s t r i n g n o m N o u v e l l e A r m e, in t d e g a t s N o u v e l l e A r m e );
bool e s t V i v a n t () ;
p r i v a t e :
in t m _ v i e ;
in t m _ m a n a ;
st d :: s t r in g m _ n o mA r m e ; / / P as d e u si n g n a me s pa c e s td ,
/ / il f au t d on c m e tt r es t d :: d ev a nt s t ri n g
in t m _ d e g a t s A r m e ;
};# e n d i f
15 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Sparation prototypes et dfinitions
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
28/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
p p yp
Fichier Personnage.cpp
# i n c l u d e " P e r s o n n a g e . h "
u s i ng n a m e sp a c e st d ;
void P e r s o n n a g e :: r e c e v o i r D e g a t s ( in t n b D e g a t s ){
m _v i e -= n b D e g a t s ;
/ / On e nl ve l e n om br e d e d g ts r e us l a v ie d u p er so nn ag e
if (m _v i e < 0) / / P ou r v i te r d a vo i r u ne v ie n g at i ve
m _v i e = 0; / / On m et l a v i e 0 ( c el a v eu t d ir e m or t )
}
void P e r s o n n a g e :: a t t a q u e r ( P e r s o n n a g e & c i b l e ){
c i b l e . r e c e v o i r D e g a t s (m _ d e ga t s A r m e );
/ / On i n fl i ge l a c i b le l es d g ts q ue c a us e n o tr e a r me}
void P e r s o n n a g e :: b o i r e P o t i o n D e V i e ( in t q u a n t i t e P o t i o n ){
m _v i e += q u a n t i t e P o t i o n ;
if (m _v i e > 1 00 ) / / I n te r di c ti o n d e d p as s er 1 00 d e v ie
m_ v ie = 1 00 ;
}
void P e r s o n n a g e :: c h a n g e r A r m e ( s t r i n g n o m N o u v e l l e A r m e, in t d e g a t s N o u v e l l e A r m e ){
m _n o m A rm e = n o m N o u v e l l e A r m e ;
m _ d e g a t s A rm e = d e g a t s N o u v e l l e A r m e ;
}
bool P e r s o n n a g e :: e s t V i v a n t () {
if (m _v i e > 0) // P lu s d e 0 de vi e ?
r e t ur n t r ue ; / / VR AI , i l e st v i va n t !
else
r e t ur n f a l se ; / / FA UX , i l n e s t p l us v i va n t !
}
16 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Sparation prototypes et dfinitions
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
29/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Fichier mainPersonnage.cpp
# i n c l u d e
# i n c l u d e " P e r s o n n a g e . h " / / Ne p a s o u b li e r
u s i ng n a m e sp a c e st d ;
in t main ()
{
P e r s o n n a g e d a v id , g o l i a t h ;/ / Cr a t io n d e 2 o b je t s d e t yp e P e rs o nn a ge : d a vi d e t g o li a th
g o l i a t h . a t t a q u e r ( d a v i d ); / / g o l ia t h a t t a qu e d a v id
d a v i d . b o i r e P o t i o n D e V i e (20); / / d av i d r c u p re 2 0 d e v ie e n b u va n t u ne p o ti o n
g o l i a t h . a t t a q u e r ( d a v i d ); / / g o l ia t h r a t t a qu e d a v id
d a v i d . a t t a q u e r ( g o l i a t h ); / / d a v id c o nt r e - a t t a q ue . . . c e s t a s se z c l a ir n o n ?
g o l i a t h . c h a n g e r A r m e ( " D o ub l e h a ch e t r an c ha n te v n ne us e d e l a m or t ", 4 0) ;
g o l i a t h . a t t a q u e r ( d a v i d );
return 0;
}
17 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Explications
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
30/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Fichier Personnage.h
Idem que dans Personnage.cppprcdent, seulement il ny a plusde corps de fonction ; Attention ne pas oublier le ;en fin de ligne.
Fichier Personnage.cpp
Implmentation des mthodes
Syntaxe : type maClasse::maMethode(type paramtre,...)
Exemple : void Personnage::recevoirDegats(intnbDegats) ...
Ici la mthode le droit de modifier les attributs car on est
lintrieur de la classe.
Fichier mainPersonnage.cpp
Inclusion de lentte de la classe Personnage.h
18 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Explications
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
31/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Fichier Personnage.h
Idem que dansPersonnage.cpp
prcdent, seulement il ny a plusde corps de fonction ; Attention ne pas oublier le ;en fin de ligne.
Fichier Personnage.cpp
Implmentation des mthodes
Syntaxe : type maClasse::maMethode(type paramtre,...)
Exemple : void Personnage::recevoirDegats(intnbDegats) ...
Ici la mthode le droit de modifier les attributs car on est
lintrieur de la classe.
Fichier mainPersonnage.cpp
Inclusion de lentte de la classe Personnage.h
18 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Explications
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
32/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Fichier Personnage.h
Idem que dans Personnage.cppprcdent, seulement il ny a plusde corps de fonction ; Attention ne pas oublier le ;en fin de ligne.
Fichier Personnage.cpp
Implmentation des mthodes
Syntaxe : type maClasse::maMethode(type paramtre,...)
Exemple : void Personnage::recevoirDegats(intnbDegats) ...
Ici la mthode le droit de modifier les attributs car on est
lintrieur de la classe.
Fichier mainPersonnage.cpp
Inclusion de lentte de la classe Personnage.h
18 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Remarques diverses
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
33/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
structou class
On peut utiliser structen C++ pour dfinir une classe. Dans ce casles mthodes et attributs sont publics au lieu de privs par dfaut.
Directives usingDans les .h, il est recommand de ne jamais mettre la directiveusing namespace std;car cela pourrait avoir des effetsnfastes, par la suite, lorsque vous utiliserez la classe.
Par consquent, il faut rajouter le prfixe std::devant chaque
stringdu .h. Le cas chant vous obtenez une erreur.
19 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Remarques diverses
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
34/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
structou class
On peut utiliser structen C++ pour dfinir une classe. Dans ce casles mthodes et attributs sont publics au lieu de privs par dfaut.
Directives usingDans les .h, il est recommand de ne jamais mettre la directiveusing namespace std;car cela pourrait avoir des effetsnfastes, par la suite, lorsque vous utiliserez la classe.
Par consquent, il faut rajouter le prfixe std::devant chaque
stringdu .h. Le cas chant vous obtenez une erreur.
19 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Constructeur / Destructeur
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
35/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Dfinitions
le constructeur : cest une mthode appele automatiquement chaque fois que lon cre un objet bas sur cette classe.
le destructeur : cest une mthode appele automatiquementlorsquun objet est dtruit, par exemple la fin de la fonctiondans laquelle il a t dclar ou, si lobjet a t alloudynamiquement avec new, lors dun delete.
20 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Constructeur
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
36/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Dfinitions
cest une mthode qui sert construire lobjet. Ds quon cre
un objet, le constructeur est automatiquement appel ;Un constructeur par dfaut est automatiquement cr par lecompilateur. Cest un constructeur vide, qui ne fait rien departiculier.
On va crer son propre constructeur afin, gnralement, dy
raliser des initialisations
Rle du constructeur
Rle dinitialisation de variables ;
Dans la classe, les attributs sont dclars, mais pas initialiss
(interdit) ;On va crer son propre constructeur afin, gnralement, dyraliser des initialisations ;
Constructeur est indispensable pour initialiser les attributs nonobjet (types standards) ;
21 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Constructeur
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
37/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Dfinitions
cest une mthode qui sert construire lobjet. Ds quon cre
un objet, le constructeur est automatiquement appel ;Un constructeur par dfaut est automatiquement cr par lecompilateur. Cest un constructeur vide, qui ne fait rien departiculier.
On va crer son propre constructeur afin, gnralement, dy
raliser des initialisations
Rle du constructeur
Rle dinitialisation de variables ;
Dans la classe, les attributs sont dclars, mais pas initialiss
(interdit) ;On va crer son propre constructeur afin, gnralement, dyraliser des initialisations ;
Constructeur est indispensable pour initialiser les attributs nonobjet (types standards) ;
21 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Constructeur
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
38/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Cration
cest une mthode un peut particulire :Il faut que la mthode ait le mme nom que la classe (iciPersonnage) ;La mthode ne doit rien renvoyer, pas mme void ! Cest unemthode sans aucun type de retour.
Fichier Personnage.h
# i n c l u d e
class P e r s o n n a g e {
public :
P e r s o n n a g e () ; / / C o n s t r u c t e u r
void r e c e v o i r D e g a t s ( in t n b D e g a t s );
void a t t a q u e r ( P e r s o n n a g e & c i b l e );
void b o i r e P o t i o n D e V i e ( in t q u a n t i t e P o t i o n );
void c h a n g e r A r m e ( st d :: s t r i n g n o m N o u v e l l e A r m e, in t d e g a t s N o u v e l l e A r m e );bool e s t V i v a n t () ;
p r i v a t e :
in t m _ v i e ;
in t m _ m a n a ;
st d :: s t r in g m _ n o mA r m e ;
in t m _ d e g a t s A r m e ;
};
22 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Constructeur
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
39/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Cration
on ajoute ensuite le code source du constructeur danslimplmentation
dans Fichier Personnage.cpp
P e r s o n n a g e :: P e r s o n n a g e ()
{
m _v i e = 1 00 ;
m _ ma na = 1 00 ;
m _n o m A rm e = " E p e r o u il l e " ;
m _ d e g a t s A rm e = 1 0;
}
Attention
Il ny a pas de type de retour pour le constructeur.
23 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Constructeur
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
40/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Cration (2) : liste dinitialisation
Autre faon dinitialiser avec un constructeur : la listedinitialisation
dans Fichier Personnage.cpp
P e r s o n n a g e :: P e r s o n n a g e () : m_vie ( 1 0 0 ) , m_mana ( 1 0 0 ) ,
m _n o m A rm e ( " E p e r o u il l e " ) , m _ d e g a t s A r m e (10)
{/ / R ie n m e tt r e d an s l e c o rp s d u c o ns t ru c te u r , t ou t a d j t f ai t !
}
Syntaxe
On ajoute :puis la liste des attributs initialiser (avec valeurentre parenthses) spars par des virgules.
La liste dinitialisation est une bonne habitude prendre.
Le prototype du constructeur (dans le .h) ne change pas
24 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Constructeur
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
41/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Surcharger le constructeur
Lorsque les oprateurs sont des fonctions, on parle en gnral de
surcharge doprateur ;limplmentation est choisie en fonction du type des oprandes(on parle galement de polymorphisme ad hoc) ;
C++ autorise la surcharge.
mthodes = fonctions, on peut donc surcharger le constructeur.
Intrt de la surcharge
Crer un objet de plusieurs faons diffrentes.
Syntaxe
/ / D a ns P e r s on n a g e . h
P e r s o n n a g e ( st d :: s t r i n g n o m A r me, in t d e g a t s A r m e );
/ / pr f ix s td : : o b li g at o ir e c ar p as d e u si n g d an s . h
/ / D a ns P e r s on n a g e . c pp
P e r s o n n a g e :: P e r s o n n a g e ( s t r i n g n o m A r me, in t d e g a t s A r m e ) : m _ v i e ( 1 0 0 ) ,
m_ ma na ( 1 0 0 ) ,m _ n o mA r m e ( n o m A r m e ) , m _ d e g a t s A r m e ( d e g a t s A r m e ){
}
/ / u t i l i sa t i o n m a i n P er s o n n ag e . c
P e r s o n n a g e d a v id , g o l i a t h ( " E p e a i g ui s e " , 2 0) ;
25 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Destructeur
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
42/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Dfinitions
Cest une mthode appele lorsque lobjet est supprim de la
mmoire.rle : dsallouer la mmoire (delete) alloue dynamiquement.
Dans notre cas, il ny a pas eu dallocation dynamique (new)(inutile ici) ;
Un destructeur est une mthode qui commence par un tilde ( )
suivi du nom de la classe.Un destructeur ne renvoie aucune valeur, pas mme void(comme le constructeur).
le destructeur ne peut prendre aucun paramtre. Il y a donctoujours un seul destructeur, il ne peut pas tre surcharg.
Exemple
P e r s o n n a g e :: ~ P e r s o n n a g e () {
/ * En t e mp s n or ma l , u n d e st r uc t eu r f a it s o uv e nt d es d e le t e e t q u el q ue s
a u tr e s v r i fi c at i on s s i n c e ss a ir e a v an t l a d e st r uc t io n d e l o bj e t . * /
}
26 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Mthodes constantes
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
43/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Explications
Les mthodes constantes sont des mthodes de lecture seule ;Elles possdent le mot-cl const la fin de leur prototype et deleur dclaration ;
Indique au compilateur que votre mthode ne modifie pas lobjet(valeurs de ses attributs) ;
Exemple : affichage dinformations.
Syntaxe
/ / D an s P e rs o nn a ge . h P r ot o ty p e d e l a m t ho d e :
void m a M e t h o d e ( in t p a r a m e t r e ) const ;
/ / D an s P e rs o nn a ge . c p p D c l ar a ti o n d e l a m t ho d e :void M a C l a s s e ::m aM e t h o de ( in t p a r a m e t r e ) const{
/ / c o de s o u rc e
}
27 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Mthodes constantes
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
44/80
POO C++
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Exemples 1
bool Personnage :: estVivant () c o n s t{
if (m_vie > 0){
r e tu r n t ru e ;}else
{r e tu r n f a ls e ;
}}
Intrt
Pour vous : vous savez que votre mthode ne fait que lire lesattributs et vous vous interdisez ds le dbut de les modifier.
Pour les utilisateurs de votre classe : cest trs important aussipour eux, cela leur indique que la mthode se contente derenvoyer un rsultat et quelle ne modifie pas lobjet.
28 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Interaction entre classes
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
45/80
POO C++
Y. Morre
Introduction
La POOLes secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Un programme est fait de plusieurs classes
La POO devient puissante quend on commence combiner
plusieurs objets, classesCration dune nouvelle classe Armeet intraction avec notrePersonnage.
Cration des fichiers Arme.het Arme.cpp.
Fichier Arme.h
# i f n d e f D E F _ A R M E
# d e f i n e D E F _ A R M E
# i n c l u d e
# i n c l u d e
class Arme {
public :
Arme () ;
Arme ( st d :: s t r in g n om , in t degats );void c h a n g e r ( st d :: s t r in g n om , in t degats );
void a f f i c h e r () const ;
p r i v a t e :
st d :: s t r in g m _ n om ;
in t m _ d e g a t s ;
};
# e n d i f
29 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Interaction entre classes
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
46/80
POO C++
Y. Morre
Introduction
La POOLes secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Fichier Arme.cpp
# i n c l u d e " A r m e . h "
u s i ng n a m e sp a c e st d ;
Arme :: Arme () : m _ n o m ( " E p e r o u il l e " ) , m _ d e g a t s ( 10 ) { }
Arme :: Arme ( s t r in g n om , in t d e g a t s ) : m_nom ( no m ) , m _ d e g a t s ( degats ){ }
void Arme :: c h a n g e r ( s t r i ng n om , in t d e g a t s ){
m _n o m = no m ;
m_ d e ga t s = degats ;
}
void Arme :: a f f i c h e r () const {
cout < < " Ar me : " < < m _ n o m
-
7/23/2019 Chap2 Poo Beamer (1)
47/80
POO C++
Y. Morre
Introduction
La POOLes secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Adaptation de notre classe initiale Personnage
Suppression des attributs inutiles m_nomArmeet m_degatsArme ;
Remplacement par lobjet Arme m_arme ;On ne supprime pas de mthodes. Cette classe peut tre utiliseailleurs. On va toujours modifier ou ajouter des mthodes.
Fichier Personnage.h
# i f n d e f D E F _ P E R S O N N A G E
# d e f i n e D E F _ P E R S O N N A G E
# i n c l u d e
# i n c l u d e
# i n c l u d e " A r m e . h " / / Ne P AS o u bl i er d i n cl u re A rm e . h p ou r e n a v oi r l a d f i n i ti o n
class P e r s o n n a g e {
public :
P e r s o n n a g e () ;
P e r s o n n a g e ( st d :: s t r i n g n o m A r me, in t d e g a t s A r m e );
~ P e r s o n n a g e () ;void r e c e v o i r D e g a t s ( in t n b D e g a t s );
void a t t a q u e r ( P e r s o n n a g e & c i b l e );
void b o i r e P o t i o n D e V i e ( in t q u a n t i t e P o t i o n );
void c h a n g e r A r m e ( st d :: s t r i n g n o m N o u v e l l e A r m e, in t d e g a t s N o u v e l l e A r m e );
bool e s t V i v a n t () const ;
p r i v a t e :
in t m _ v i e ;
in t m _ m a n a ;
A r m e m _ a rm e ; // N o t r e P e r s on n a g e p o ss d e u n e A r m e
};
# e n d i f31 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Interaction entre classes
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
48/80
POO C++
Y. Morre
Introduction
La POOLes secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Adaptation de notre classe initiale Personnage
Suppression des attributs inutiles m_nomArmeet m_degatsArme ;
Remplacement par lobjet Arme m_arme ;
On ne supprime pas de mthodes. Cette classe peut tre utiliseailleurs. On va toujours modifier ou ajouter des mthodes.
Modification de Personnage.cpp/ / M o d i f ic a t i o n r a l i s er
P e r s o n n a g e :: P e r s o n n a g e () : m_vie ( 1 0 0 ) , m_mana (100){
/ / R ie n m e tt r e d an s l e c o rp s d u c o ns t ru c te u r , t ou t a d j t f ai t !
}
P e r s o n n a g e :: P e r s o n n a g e ( s t r i n g n o m A r me, in t d e g a t s A r m e ) : m _ v i e ( 1 0 0 ) ,
m_ ma na ( 1 0 0 ) ,m _a rm e ( nomArme, d e g a t s A r m e ){
/ / R ie n m e tt r e d an s l e c or p s d u c o ns t ru c te u r , t ou t a d j t f ai t !
}
void P e r s o n n a g e :: a t t a q u e r ( P e r s o n n a g e & c i b l e ){cible . r e c e v o i r D e g a t s (m_ ar me . g e t D e g a t s ());
/ / On i n fl i ge l a c i b le l es d g ts q ue c a us e n o tr e a r me
}
void P e r s o n n a g e :: c h a n g e r A r m e ( s t r i n g n o m N o u v e l l e A r m e, in t d e g a t s N o u v e l l e A r m e ){
m _a rm e . c h a n g e r ( n o m N o u v e l l e A r m e, d e g a t s N o u v e l l e A r m e );
}
32 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
Interaction entre classes
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
49/80
POO C++
Y. Morre
Introduction
La POOLes secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Explications des modifications
Modification des mthodes qui utilisent larme : constructeurs ;
Utilisation du constructeur surcharg Armedans le constructeursurchargPersonnage ;Problme de la attaquer:
cible.recevoirDegats(m_arme.m_degats); est interditdepuis la classe Personnage. Les attributs de Arme sont privs
il faut ajouter une mthode pour rcuprer/accder cesdonnes dans la classe Arme : Accesseurs.Gnralement ces mthodes sont nommes get etrespectivement set pour lire et respectivement crire dans lesattributs
Modification de Arme.cpp
/ / A j o ut d a n s A r m e . h
in t g e t D e g a t s () c o n s t ;
/ / A j o ut d a n s A r m e . c p p
in t Arme :: g e t D e g a t s () const {
return m _ d e g a t s ;
}
33 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
POO C
Interaction entre classes
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
50/80
POO C++
Y. Morre
Introduction
La POOLes secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Modification de la mthode attaquer
void Personnage :: attaquer ( Personnage & cible ){
cible . r e c e v o i r D e g a t s (m_arme . getDegats ());}
Modification de la mthode changerArme
Impossibilit daccder directement aux attributs de m_arme ;
On pourrait crer un accesseur en criture sur les attributs ;
Bien plus simple de passer par la mthode changerde la classeArme.
m_arme.changer(...).
Modification de la mthode changerArme
void Personnage :: c h a n g e r A r m e( s t r i n g n o m N o u ve l l e A r m e, int d e g a t s N o u v em_arme . changer ( nomNouvelleArme, d e g a t s N o u v e l l e A r m e );
}
34 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
POO C++
Mise en uvre des classes
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
51/80
POO C++
Y. Morre
Introduction
La POOLes secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Mthode pour afficher les tatsNos personnages se battent dans le main, mais on ne voit rien ;
Mthode constante pour afficher ltat de chaque personnage ;
Ajout de la mthode afficherEtat
/ / D an s P e rs o nn a ge . h void a f f i c h e r E t a t () c o n s t ;/ / D an s P e r so n n ag e . c p pvoid Personnage :: a f f i c h e r E t a t () c o n s t {
cout
-
7/23/2019 Chap2 Poo Beamer (1)
52/80
POO C++
Y. Morre
Introduction
La POOLes secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Modification du fichier mainPersonnage.cpp
in t main () {
/ / C r a t io n d e s p e r s o nn a g e s
P e r s o n n a g e d a v id , g o l i a t h ( " E p e a i g u is e " , 2 0) ;/ / Au c o mb a t !
g o l i a t h . a t t a q u e r ( d a v i d );
d a v i d . b o i r e P o t i o n D e V i e (20);
g o l i a t h . a t t a q u e r ( d a v i d );
d a v i d . a t t a q u e r ( g o l i a t h );
g o l i a t h . c h a n g e r A r m e ( " D o ub l e h a ch e t r an c ha n te v n ne us e d e l a m or t ", 4 0) ;
g o l i a t h . a t t a q u e r ( d a v i d );
/ / T em p s m o r t ! V o yo n s v oi r l a v i e d e c h a c un . . .
cout < < " D a v i d "
-
7/23/2019 Chap2 Poo Beamer (1)
53/80
POO C++
Y. Morre
Introduction
La POOLes secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie 37 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
POO C++
Surcharge doprateurs
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
54/80
POO C++
Y. Morre
Introduction
La POOLes secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Dfinition
Cest une technique qui permet de raliser des oprationsmathmatiques intelligentes entre vos objets ;
Utiliser+,-,*,/,etc. sur des objets quelconques (passeulement les types numriques).
En pratique
Soit une classe pour stocker une dure (par exemple 4h23m)
Soit deux objets de type Dureeque vous voulez additionner
Classiquement : resultat = additionner(duree1,duree2);
Par surcharge doprateur : resultat = duree1 + duree2;
38 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
POO C++
Classe Duree
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
55/80
++
Y. Morre
Introduction
La POOLes secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Gnralits
Dfinitions dune classe adapte la surcharge ;
Capable capable de stocker des heures, des minutes et dessecondes ;
Fichier Duree.h
# i f n d e f DEF_DUREE# d e f i n e DEF_DUREEc l a s s Duree {
p u b l i c :Duree ( int heures = 0 , int minutes = 0 , int secondes = 0);/ / V al eu r p ar d f au t d an s l e c o ns t ru c te u r
p r i v a t e :
int m_heures ;int m_minutes ;int m_secondes ;
};# e n d i f
39 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
POO C++
Classe Duree
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
56/80
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Fichier Duree.het mainDuree.cpp/ / F i c hi e r D u re e . c p p# i n c l u d e " D u r e e . h "
Duree :: Duree ( int heures, int minutes, int secondes ) : m_heures ( heurem _mi nut es (minutes ) , m_secondes ( secondes ){
}
/ / F i c hi e r m a i nD u r ee . c p p# i n c l u d e # i n c l u d e " D u r e e . h "
int main (){D u re e d u re e 1 (0 , 10 , 28 ) , duree2 (0 , 15 , 2 );r e t u r n 0;
}
40 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
POO C++
Surcharge doprateurs arithmtiques
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
57/80
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Oprateur +Pour utiliser le symbole +entre deux objets, Cration dunefonction nomme operator+ ;
Syntaxe de la fonction : Objet operator+(Objet const& a,Objet const& b);
Ce nest pas une mthode, mais une fonction normale en dehorsde la classe (ici Dure) ;
Syntaxe : Duree operator+(Duree const& a, Dureeconst& b);
Utilisation : resultat = duree1 + duree2; //Utilisationde operator+
41 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
POO C++
Surcharge doprateurs arithmtiques
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
58/80
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Oprateur +=Contrairement +, +=sera une mthode de la classe ;
Syntaxe de la mthode : Duree& operator+=(Duree const&duree);
Elle reoit en argument une autre Duree additionner et renvoie
une rfrence sur lobjet lui-mme ;Utilisation : duree1 += duree2; //Utilisation de la
mthode operator+= de lobjet duree1
Important
On utilise les rfrences pour viter de modifier les objets reus.
42 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
POO C++
Surcharge doprateurs arithmtiques
Mthode +=
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
59/80
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Mthode +=
Duree & Duree :: o p e r a t o r +=( Duree c o n s t & duree2 ){
// 1 : a jo ut d es s ec on de sm _s eco nd es += duree2 .m_s ec on des ;/ / E x c e p ti o n n el l e m en t a u to r is c ar m m e c l as s e// S i le n om br e de s ec on de s d pa ss e 60 , on r aj ou te d es m in ut es// E t on m et un n om br e de s ec on de s i nf r ie ur 60 m _mi nut es += m_secondes / 60;m _s eco nd es % = 6 0;// 2 : a jo ut d es m in ut es
m _mi nut es += duree2 .m _mi nut es ;// S i le n om br e de m in ut es d pa ss e 60 , on r aj ou te d es h eu re s// E t on m et un n om br e de m in ut es i nf r ie ur 60 m_ heure s += m_minutes / 60;m _mi nut es % = 6 0;// 3 : a jo ut d es h eu re sm_ heure s += duree2 .m_h eure s ;r e t u r n * this ;
}
Important
La mthode renvoie lobjet lui-mme laide de *this.
Cest un pointeur vers lobjet quonestentraindemanipuler.43 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
POO C++
Surcharge doprateurs arithmtiques
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
60/80
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
ImportantUtilisation de la mthode +=en utilisant une variableintermdiaire de copie ;
On retourne la variable de copie que nest pas constante.
Fonction +
Duree o p e r a t o r +( Duree c o n s t & a , Duree c o n s t & b ){
D u re e c o pi e ( a );copie += b ;r e t u r n copie ;
}
44 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
POO C++
Surcharge doprateurs arithmtiques
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
61/80
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
Introduction
Classe Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Code final
# i f n d e f DEF_DUREE# d e f i n e DEF_DUREEc l a s s Duree {
p u b l i c :Duree ( int heures = 0 , int minutes = 0 , int secondes = 0);/ / V al eu r p ar d f au t d an s l e c o ns t ru c te u r
Duree & o p e r a t o r +=( Duree c o n s t & a );void afficher () c o n s t ;
p r i v a t e :int m_heures ;int m_minutes ;int m_secondes ;
};
Duree o p e r a t o r +( Duree c o n s t & a , Duree c o n s t & b );# e n d i f
45 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
POO C++
Surcharge doprateurs arithmtiques
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
62/80
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
IntroductionClasse Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Code final
# i n c l u d e
# i n c l u d e " D u r e e . h "
u s i ng n a m e sp a c e st d ;
D u r e e :: Duree ( in t heures, in t minutes, in t s e c o n d e s ) : m _ h e u r e s ( h e u r e s ) ,
m _ m i nu t e s (mi n ut e s ) , m _ s e c o n d e s ( s e c o n d e s ){
}
D u r e e & Duree :: o p e r a t o r += ( const D u r e e & d u r e e 2 ) {
/ / 1 : a j ou t d es s e co n de s
m _ se c o n d e s += d u r e e 2 .m _s e c o n d es ;
m _m i n u te s += m _ s e c o n d e s / 6 0;
m _ se c o n d e s % = 6 0;m _m i n u te s += duree2 .m _ m in u t e s ;
m_ h e ur e s += m _ m i n u t e s / 6 0;
m _m i n u te s % = 6 0;
m_ h e ur e s += d u r e e 2 .m_ h eu r e s ;
return * this ;
}
void Duree :: a f f i c h e r () const {
cout < < m _ h e u r e s
-
7/23/2019 Chap2 Poo Beamer (1)
63/80
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
IntroductionClasse Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Code final
# i n c l u d e # i n c l u d e " D u r e e . h "u s in g n a m es p a ce std ;int main (){
D u re e d u re e 1 (0 , 10 , 42 ) , duree2 (0 , 53 , 2 7) ;D u re e r e su l t at ;duree1 . afficher ();cout
-
7/23/2019 Chap2 Poo Beamer (1)
64/80
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
IntroductionClasse Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Apport de la surcharge
additionner en une fois plusieurs dures : resultat = duree1+ duree2 + duree3;
additionner une Dureeet un inten crant une nouvellefonction de surcharge.
Nouvelle surcharge doprateur +
/ / P r o t o t y p eDuree & o p e r a t o r +=( int secondes );/ / I m p l m e n t a t i o n Duree o p e r a t o r +( Duree c o n s t & duree , int secondes ){
D u re e c o pi e ( duree );copie += secondes ;r e t u r n copie ;
}
48 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
POO C++
Surcharge doprateurs arithmtiques
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
65/80
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
IntroductionClasse Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Les autres oprateurs
fonctions operator-() operator*() operator/()operator%() ;
mthodes operator-=() operator*=() operator/=()operator%=() ;
49 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
POO C++
Surcharge doprateurs de flux
http://find/ -
7/23/2019 Chap2 Poo Beamer (1)
66/80
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
IntroductionClasse Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Oprateur < >
cout < < "Coucou !";= operator<
-
7/23/2019 Chap2 Poo Beamer (1)
67/80
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
IntroductionClasse Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Oprateur < >
cout < < "Coucou !";= operator<
-
7/23/2019 Chap2 Poo Beamer (1)
68/80
Y. Morre
Introduction
La POO
Les secret de string
Les classes
Crer une classe
Droits daccs enencapsulation
Sparationprototypes etdfinitions
Constructeur /Destructeur
Constructeur
Destructeur
Mthodes constantes
Interaction entreclasses
Surchargedoprateurs
IntroductionClasse Duree
Surchargedoprateursarithmtiques
Surchargedoprateurs de flux
Surchargedoprateurs decomparaisons
Bibliographie /Webo ra hie
Implmentation d operator< comme prcdemment on passe par unemthodedelaclasse.
54 / 59 C++ et Programmation Oriente Objet : Objets, classes et surcharge Y. Morre 2013
POO
top related