Chap2 Poo Beamer (1)

Embed Size (px)

Citation preview

  • 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