C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Héritage partiel ?

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
charly
Guest





PostPosted: Fri Sep 19, 2003 1:27 pm    Post subject: Héritage partiel ? Reply with quote



Bonjour,

Soit deux classes A et B.
B hérite de A.

La classe A peut-elle interdire à ses classes filles l'accès à une
méthode particulière.

Je recherche une solution bcp + élégante que celle-ci :
les classes héritières ont une propriété héritée de A qui est à vrai par
ex quand l'objet est de classe A et à faux quand l'objet est de classe B.

Tout appel à ladite méthode vérifie l'état de cette propriété avant tout
traitement..

Merci de vos conseils !

Back to top
Alain Naigeon
Guest





PostPosted: Fri Sep 19, 2003 1:28 pm    Post subject: Re: Héritage partiel ? Reply with quote



"charly" <kanari667 (AT) yahoo (DOT) fr> a écrit dans le message news:
3f6b0372$0$27584$626a54ce (AT) news (DOT) free.fr...
Quote:
Bonjour,

Soit deux classes A et B.
B hérite de A.

La classe A peut-elle interdire à ses classes filles l'accès à une
méthode particulière.

private ?

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - [email]anaigeon (AT) free (DOT) fr[/email] - Strasbourg, France



Back to top
charly
Guest





PostPosted: Fri Sep 19, 2003 1:49 pm    Post subject: Re: Héritage partiel ? Reply with quote



Certes mais j'avais oublié une info (Méa Culpa) : je n'ai pas accès au
code source de la classe mère .

Et ne pas compter sur l'utilisateur pour tester si l'objet est une
instance de telle ou telle classe.

Ca fait bcp de contraintes mais si qqun a une solution ..

Back to top
Serge Paccalin
Guest





PostPosted: Fri Sep 19, 2003 2:44 pm    Post subject: Re: Héritage partiel ? Reply with quote

Le vendredi 19 septembre 2003 à 15:49, charly a écrit dans
fr.comp.lang.c++ :

Quote:
Certes mais j'avais oublié une info (Méa Culpa) : je n'ai pas accès au
code source de la classe mère .

Et ne pas compter sur l'utilisateur pour tester si l'objet est une
instance de telle ou telle classe.

Ca fait bcp de contraintes mais si qqun a une solution ..

Peut-être en intercalant un étage : une classe A' dérivant de A, dont
doivent dériver les classes B...

class A
{
public:
int autorisee();
int interdite();
};

class Abis : private A
{
public:
int autorisee()
{
return A::autorisee();
}
};

class B : public Abis
{
// N'a pas accès à A::interdite.
};

--
___________ 2003-09-19 16:42:12
_/ _ _`_`_`_) Serge PACCALIN -- sp ad mailclub.net
_L_) Il faut donc que les hommes commencent
-'(__) par n'être pas fanatiques pour mériter
_/___(_) la tolérance. -- Voltaire, 1763

Back to top
Christophe Lephay
Guest





PostPosted: Fri Sep 19, 2003 3:21 pm    Post subject: Re: Héritage partiel ? Reply with quote

"charly" <kanari667 (AT) yahoo (DOT) fr> a écrit dans le message de
news:3f6b088c$0$27595$626a54ce (AT) news (DOT) free.fr...
Quote:
Certes mais j'avais oublié une info (Méa Culpa) : je n'ai pas accès au
code source de la classe mère .

Et ne pas compter sur l'utilisateur pour tester si l'objet est une
instance de telle ou telle classe.

Ca fait bcp de contraintes mais si qqun a une solution ..

Pourquoi veux-tu que B hérite de A ?

Je pose la question, parce que rendre inaccessible une fonction membre qui
est public dans la classe de base s'accorde assez mal avec l'héritage public
(je suppose que tu fais un héritage public et que la fonction membre est
elle-même publique).

A mon avis, tu es en train de commettre une erreur de design juste par
flemme de retaper quelques fonctions (bien qu'avec aussi peu d'informations
sur ton problème, il est possible que ta démarche soit justifiée).

Je te suggère de poster un peu plus d'informations...

Chris



Back to top
charly
Guest





PostPosted: Fri Sep 19, 2003 3:46 pm    Post subject: Re: Héritage partiel ? Reply with quote

Merci pour vos contributions,

En fait, La classe A n'est pas nécessairement développée par moi-même,
ce qui explique que je n'ai pas la main sur le design (genre classes de
bibliothèques toutes faites).

Il semblerait que la solution proposée par Serge Paccalin corresponde à
nos besoins...

Bon WE à tous en tout cas et merci encore !

Back to top
Gourgouilloult
Guest





PostPosted: Sat Sep 20, 2003 11:22 am    Post subject: Re: Héritage partiel ? Reply with quote

Serge Paccalin wrote:
Quote:
charly a écrit :

Peut-être en intercalant un étage : une classe A' dérivant de A, dont
doivent dériver les classes B...

Elle de qui, au fait, cette petite phrase "il n'y a pas de problème
qu'un niveau supplémentaire d'indirection ne puisse résoudre" ?

Quote:
class A
{
public:
int autorisee();
int interdite();
};

class Abis : private A
{
public:
int autorisee()
{
return A::autorisee();
}
};

class B : public Abis
{
// N'a pas accès à A::interdite.
};

Pourquoi pas plutôt une déclaration using dans Abis, pour autorisee() ?

Gourgou


Back to top
kanze@gabi-soft.fr
Guest





PostPosted: Mon Sep 22, 2003 6:46 am    Post subject: Re: Héritage partiel ? Reply with quote

Gourgouilloult <gourgou_at_club-internet_point_fr> wrote

Quote:
Serge Paccalin wrote:
charly a écrit :

Peut-être en intercalant un étage : une classe A' dérivant de A,
dont doivent dériver les classes B...

Elle de qui, au fait, cette petite phrase "il n'y a pas de problème
qu'un niveau supplémentaire d'indirection ne puisse résoudre" ?

C'était l'énoncé original. Adapté à l'OO, ça donne « il n'y a pas de
problème qu'un niveau supplémentaire d'héritage ne puisse résoudre. »

--
James Kanze GABI Software mailto:kanze (AT) gabi-soft (DOT) fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.