savoir si une classe a un lien d'héritage avec une autre classe

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

savoir si une classe a un lien d'héritage avec une autre classe

Olivier Auverlot
Bonjour à tous,

Voici un scénario :
        -> Classe Pere
                -> Classe Fils
                        -> Classe FilsDeFils


Comment déterminer dynamiquement qu'une instance de la classe FilsDeFils est un objet héritant de la classe Pere ?

Il y a bien la méthode superclass qui permet de connaitre la classe dont la classe courante hérite mais comment faire s'il y a plusieurs niveaux d'héritage ? Existe t'il une méthode toute faite ou faut il l'écrire (remonter l'héritage jusqu'au moment où l'on trouve Object) ?

Olivier ;-)
www.auverlot.fr
Reply | Threaded
Open this post in threaded view
|

Re: savoir si une classe a un lien d'héritage avec une autre classe

laurent laffont
monObjectFilsDeFils isKindOf: ClassPere

Laurent


2012/3/4 Olivier Auverlot <[hidden email]>
Bonjour à tous,

Voici un scénario :
       -> Classe Pere
               -> Classe Fils
                       -> Classe FilsDeFils


Comment déterminer dynamiquement qu'une instance de la classe FilsDeFils est un objet héritant de la classe Pere ?

Il y a bien la méthode superclass qui permet de connaitre la classe dont la classe courante hérite mais comment faire s'il y a plusieurs niveaux d'héritage ? Existe t'il une méthode toute faite ou faut il l'écrire (remonter l'héritage jusqu'au moment où l'on trouve Object) ?

Olivier ;-)
www.auverlot.fr

Reply | Threaded
Open this post in threaded view
|

Re: savoir si une classe a un lien d'héritage avec une autre classe

Ludovic
Olivier,

        jette aussi un oeil à la classe Behavior, dans les protocoles de
méthode accessing*, tu y verras des méthodes d'instance très utiles comme :
- allSubclasses
- allSuperclasses
- allSelectors
- sourceCodeAt:
...
        Et comme toutes les classes héritent de Behavior, toutes tes classes en
bénéficient.

Un exemple en Pharo:
OrderedCollection allSuperclasses
-> an OrderedCollection(SequenceableCollection Collection Object
ProtoObject)

        Ceci est valable en VisualWorks & Pharo.

Ludo.

Le 06/03/2012 08:11, laurent laffont a écrit :

> monObjectFilsDeFils isKindOf: ClassPere
>
> Laurent
>
>
> 2012/3/4 Olivier Auverlot <[hidden email]
> <mailto:[hidden email]>>
>
>     Bonjour à tous,
>
>     Voici un scénario :
>             -> Classe Pere
>                     -> Classe Fils
>                             -> Classe FilsDeFils
>
>
>     Comment déterminer dynamiquement qu'une instance de la classe
>     FilsDeFils est un objet héritant de la classe Pere ?
>
>     Il y a bien la méthode superclass qui permet de connaitre la classe
>     dont la classe courante hérite mais comment faire s'il y a plusieurs
>     niveaux d'héritage ? Existe t'il une méthode toute faite ou faut il
>     l'écrire (remonter l'héritage jusqu'au moment où l'on trouve Object) ?
>
>     Olivier ;-)
>     www.auverlot.fr <http://www.auverlot.fr>
>
>


--
Ludovic
Ludovic