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 

subclasse/superclasse

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





PostPosted: Wed Jul 21, 2004 4:55 pm    Post subject: subclasse/superclasse Reply with quote



Quelques questions (philosophique?) qui me viennent a l'esprit:

Est-ce qu'une classe est une subclasse d'elle meme?
Est-ce qu'une classe est une super classe d'elle meme?

Vu maintenant du point pratique, si on avait deux fonctions pour
repondre a ces questions:

isSubClassOf (A, A) == true
isSuperClassOf(A, A) == true

seraient toujours vraies ou toujours fausses?

a+, ld.
Back to top
Fabien LE LEZ
Guest





PostPosted: Wed Jul 21, 2004 5:51 pm    Post subject: Re: subclasse/superclasse Reply with quote



On Wed, 21 Jul 2004 18:55:51 +0200, Laurent Deniau
<Laurent.Deniau (AT) cern (DOT) ch>:

Quote:
Est-ce qu'une classe est une subclasse d'elle meme?
Est-ce qu'une classe est une super classe d'elle meme?

Pour les "subclasses" et "superclasses", je ne sais pas -- c'est le
genre de termes que je n'ai jamais rencontré en C++.

En C++ on parle plutôt de "classe de base" ou "classe dérivée", et ces
termes impliquent un héritage (donc une classe n'est pas dérivée
d'elle-même).



--
;-)

Back to top
Loïc Joly
Guest





PostPosted: Wed Jul 21, 2004 6:57 pm    Post subject: Re: subclasse/superclasse Reply with quote



Laurent Deniau wrote:

Quote:
Quelques questions (philosophique?) qui me viennent a l'esprit:

Est-ce qu'une classe est une subclasse d'elle meme?
Est-ce qu'une classe est une super classe d'elle meme?

Vu maintenant du point pratique, si on avait deux fonctions pour
repondre a ces questions:

isSubClassOf (A, A) == true
isSuperClassOf(A, A) == true

seraient toujours vraies ou toujours fausses?

Contrairement à Fabien, je pense que la question n'est pas aussi simple.
Ca dépend si on est essentialiste ou existencialiste.

L'existentialiste ira voir la notion intrinsèque d'une classe de base et
dérivée, et répondra comme Fabien. Je ne reviens pas sur son argument.

L'essentialisme dira que ces notions ne se définissent que par leur
propriétés, et verra que A possède presque toutes les caractèristiques
que doivent possèder une classe de base de A, mais pas toutes. En
particulier, une classe de base B de A possède la propriété que toutes
ses fonctions private peuvent être appelées de B mais pas de A, ce qui
n'est pas le cas pour A=B.

La conclusion est la même, mais la démarche me semble plus productive.
Maintenant, pour ce qui est de savoir si ça sert à quelque chose...

--
Loïc

Back to top
Laurent Deniau
Guest





PostPosted: Thu Jul 22, 2004 8:11 am    Post subject: Re: subclasse/superclasse Reply with quote

Loïc Joly wrote:
Quote:
Laurent Deniau wrote:

Quelques questions (philosophique?) qui me viennent a l'esprit:

Est-ce qu'une classe est une subclasse d'elle meme?
Est-ce qu'une classe est une super classe d'elle meme?

Vu maintenant du point pratique, si on avait deux fonctions pour
repondre a ces questions:

isSubClassOf (A, A) == true
isSuperClassOf(A, A) == true

seraient toujours vraies ou toujours fausses?


Contrairement à Fabien, je pense que la question n'est pas aussi simple.
Ca dépend si on est essentialiste ou existencialiste.

Yep.

Quote:
L'existentialiste ira voir la notion intrinsèque d'une classe de base et
dérivée, et répondra comme Fabien. Je ne reviens pas sur son argument.

Yep. D'ailleurs c'est pour cela que je n'ai pas employe base et derivee
car avec ce vocabulaire, il n'y a pas d'ambiguite.

Quote:
L'essentialisme dira que ces notions ne se définissent que par leur
propriétés, et verra que A possède presque toutes les caractèristiques
que doivent possèder une classe de base de A, mais pas toutes. En
particulier, une classe de base B de A possède la propriété que toutes
ses fonctions private peuvent être appelées de B mais pas de A, ce qui
n'est pas le cas pour A=B.

Ca c'est l'aspect philosophique avec lequel j'adhere 100%.

Dans l'aspect pratique, quand on veut savoir si une classe est une
classe de base d'une autre classe, cela inclu souvent que l'on accepte
une "egalite" de classe.

Par exemple le code (fictif) suivant inclu l'egalite:

bool isSubClassOf(Class class, Class super)
{
while (class != super && class)
class = superOf(class);

return class == super && class;
}

Mais l'utilisation pratique d'un tel code implique souvent le besoin
d'inclure l'egalite. L'exclure complique passablement sont utilisation.

Quote:
La conclusion est la même, mais la démarche me semble plus productive.
Maintenant, pour ce qui est de savoir si ça sert à quelque chose...

oui. par exemple l'implementation de catch ou de dynamic_cast sur
heritage simple en prenant Class ci-dessus comme etant par exemple un
pointeur de vtbl ou de typdeid.

a+, ld.

Back to top
Fabien LE LEZ
Guest





PostPosted: Thu Jul 22, 2004 1:55 pm    Post subject: Re: subclasse/superclasse Reply with quote

On Thu, 22 Jul 2004 10:11:49 +0200, Laurent Deniau
<Laurent.Deniau (AT) cern (DOT) ch>:

Quote:
Ca c'est l'aspect philosophique avec lequel j'adhere 100%.

Donc, en gros, tu définis la relation "est une superclasse de" comme
une relation d'ordre,au sens mathématique du terme ?


--
;-)

Back to top
Laurent Deniau
Guest





PostPosted: Thu Jul 22, 2004 2:49 pm    Post subject: Re: subclasse/superclasse Reply with quote

Fabien LE LEZ wrote:
Quote:
On Thu, 22 Jul 2004 10:11:49 +0200, Laurent Deniau
[email]Laurent.Deniau (AT) cern (DOT) ch[/email]>:


Ca c'est l'aspect philosophique avec lequel j'adhere 100%.


Donc, en gros, tu définis la relation "est une superclasse de" comme
une relation d'ordre,au sens mathématique du terme ?

Yep. Mais apres les reponses que j'ai eues, il semble que inclure
l'egalite ammene trop de confusion. J'ai donc ecarte ce cas.

a+, ld.

Back to top
Fabien LE LEZ
Guest





PostPosted: Thu Jul 22, 2004 4:08 pm    Post subject: Re: subclasse/superclasse Reply with quote

On Thu, 22 Jul 2004 16:49:06 +0200, Laurent Deniau
<Laurent.Deniau (AT) cern (DOT) ch>:

Quote:
Yep. Mais apres les reponses que j'ai eues, il semble que inclure
l'egalite ammene trop de confusion. J'ai donc ecarte ce cas.

De toutes façons, ça reste de la métaphysique (ou de la linguistique).
Et tu peux très bien dire, au début d'un exposé :

"Définition : on dira ici qu'une "subclasse" (ou "épagneul breton")
d'une classe est une classe dérivée, ou elle-même".


--
;-)

Back to top
Falk Tannhäuser
Guest





PostPosted: Thu Jul 22, 2004 5:40 pm    Post subject: Re: subclasse/superclasse Reply with quote

Loïc Joly wrote:
Quote:

L'essentialisme dira que ces notions ne se définissent que par leur
propriétés, et verra que A possède presque toutes les caractèristiques
que doivent possèder une classe de base de A, mais pas toutes. En
particulier, une classe de base B de A possède la propriété que toutes
ses fonctions private peuvent être appelées de B mais pas de A, ce qui
n'est pas le cas pour A=B.

Vu de l'extérieur, les fonctions 'private' sont inaccessibles, par contre
une fonction membre (ou amie) de la classe de base 'B' peut les appeler,
peu importe qu'elle opère sur une instance de la classe 'B' ou une instance
de la classe dérivée 'D'.
Dans le cas de la dérivation publique, les instances de la classe dérivée
peuvent apparaître partout où sont acceptées les instances de la classe
de base (parce que les conversions 'D*' vers 'B*' et 'D&' vers 'B&' sont
implicites et automatiques). Il appartient au concepteur de 'D' de s'assurer
que les fonctions membres de 'D' répondent à toutes les contraintes imposées
au niveau de 'B' (invariantes, pré- et postconditions) - c'est en gros le
principe de substituabilité (ça se dit ainsi en français ?) de Liskov.
En revanche, une classe peut toujours être substituée par elle-même -
c'est pour cela que je dirais que, dans la pratique, la relation
"_ est une subclasse de ou égale à _" est plus importante que la relation
"_ est une vraie subclasse de _".

Falk

Back to top
Vincent Lascaux
Guest





PostPosted: Thu Jul 22, 2004 10:54 pm    Post subject: Re: subclasse/superclasse Reply with quote

Quote:
"Définition : on dira ici qu'une "subclasse" (ou "épagneul breton")
d'une classe est une classe dérivée, ou elle-même".

Le problème est qu'alors tu ne peux plus parler d'épagneul breton. Dans ce
cas, il faut ajouter "on dira qu'une casserole est un chien au pelage blanc
et orangé et à la queue écourtée".

--
Vincent



Back to top
Fabien LE LEZ
Guest





PostPosted: Thu Jul 22, 2004 10:58 pm    Post subject: Re: subclasse/superclasse Reply with quote

On Thu, 22 Jul 2004 23:54:42 +0100, "Vincent Lascaux"
<nospam (AT) nospam (DOT) org>:

Quote:
Le problème est qu'alors tu ne peux plus parler d'épagneul breton.

Pas grave, on n'est pas sur fr.rec.jeux.nomic ici.


--
;-)

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.