1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
class BaseSimple : public ISimple{ /*la classe de base n'expose que l'interface ISimple */
/* tu en fais ce que tu veux (redéfinir simple(), peut être? mais rien ne t'y oblige !!! */
};
class BaseRiche : public BaseSimple, public IRiche{ /* Dans BaseRiche, on ajoute l'interface IRiche à l'interface ISimple*/
/* tu en fais ce que tu veux (redéfinir simple() ou riche(), peut être? mais rien ne t'y oblige !!!) */
};
class Simple : public BaseSimple, public IBiduloide{ /* dans Simple, on ajoute l'inerface IBiduloide à l'interface ISimple */
/* tu en fais ce que tu veux (redéfinir simple() ou operator()(), peut être? mais rien ne t'y oblige !!!)
};
class MoinsSimple : public Simple{ /* la classe MoinSimple ne fait que redéfinir les comportements de Simple */
};
/* Pour Riche, il faut faire un choix :
* SOLUTION N°1 : On veut la mélanger avec d'autres objets "connus comme étant" de type BaseSimple
* (mais rien ne nous empêche de la transmettre à une fonction qui s'attend à recevoir un ISimple, un IRiche ou un IBiduloide)
*/
class Riche : public BaseSimple, public IBiduloide, public IRiche{
};
/* SOLUTION N°2 : on veut la mélanger avec des objets "connus comme étant" de type BaseRiche
* (mais rien ne nous empêche de la transmettre à une fonction qui s'attend à recevoir un ISimple, un IRiche ou un IBiduloide)
*/
class Riche : public BaseRiche, public IBiduloide{
};
/* SOLUTION N°3 : on veut la mélanger avec des objets "connus comme étant" de type Simple
* (mais rien ne nous empêche de la transmettre à une fonction qui s'attend à recevoir un ISimple, un IRiche ou un IBiduloide)
*/
class Riche : public Simple, public IRiche{
};
/* SOLUTION N°4 : on veut uniquement la mélanger avec des objets "connus comme éant" du type MoinsSimple
* (mais rien ne nous empêche de la transmettre à une fonction qui s'attend à recevoir un ISimple, un IRiche ou un IBiduloide)
*/
*/
class Riche : public MoinsSimple, public IRiche{
}; |
Partager