j'ai un projet de simulateur de colonie de fourmis, et je cherche à
faire du C++ élégant, rigoureux et évolutif.
Je me heurte au problème suivant:
Un objet de classe /Ouvriere/ (sans jeu de mots) doit aller chercher des
objets dérivés d'une classe /Ressource/ sur les ordres de sa /Reine/. La
/Reine/ connait la hiérarchie des /Ressource/ mais /Ouvriere/ ne la
connait pas. La /Reine/ montre donc un échantillon de ce qu'elle veut
(par exemple des /Vegetaux/) et l'/Ouvriere/ doit parcourir le monde à
la recherche d'objets dérivant de /Vegetaux/.
Je n'ai pas trouvé ni dans dynamic_cast ni dans typeid de façon de
décider si un objet est d'une classe qui dérive de la classe d'un objet
de comparaison. Existe-t-il une méthode pour faire ça ?
Notez que je n'ai pas du tout commencé à implémenter tout ça donc si je
me trompe complètement sur l'architecture à utiliser, je suis preneur
d'explications.
Merci d'avance pour vos pistes,
--
Vincent Jacques
"S'il n'y a pas de solution, c'est qu'il n'y a pas de problème."
Devise Shadok
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Marc Bourguet
Vincent Jacques writes:
Je n'ai pas trouvé ni dans dynamic_cast ni dans typeid de façon de décider si un objet est d'une classe qui dérive de la classe d'un objet de comparaison. Existe-t-il une méthode pour faire ça ?
De memoire je n'en vois pas.
Notez que je n'ai pas du tout commencé à implémenter tout ça donc si je me trompe complètement sur l'architecture à utiliser, je suis preneur d'explications.
Je ne connais pas tellement ce genre de simulation. Je ne vois rien qui cloche avec l'architecture que tu proposes, ce qui ne veut pas dire qu'il n'y a pas mieux.
Je ne vois pas de moyen simple d'y arriver. Definir dans toutes les classes que la Reine puisse montrer un membre "correspond" qui lui utilise le RTTI pour faire sa verification. C'est un peu fastidieux. En jouant avec les template on peut faciliter l'implementation mais il faut quand meme penser a le faire pour chaque classe.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Vincent Jacques <jacquev6@cti.ecp.fr> writes:
Je n'ai pas trouvé ni dans dynamic_cast ni dans typeid de façon de décider
si un objet est d'une classe qui dérive de la classe d'un objet de
comparaison. Existe-t-il une méthode pour faire ça ?
De memoire je n'en vois pas.
Notez que je n'ai pas du tout commencé à implémenter tout ça donc si
je me trompe complètement sur l'architecture à utiliser, je suis
preneur d'explications.
Je ne connais pas tellement ce genre de simulation. Je ne vois rien
qui cloche avec l'architecture que tu proposes, ce qui ne veut pas
dire qu'il n'y a pas mieux.
Je ne vois pas de moyen simple d'y arriver. Definir dans toutes les
classes que la Reine puisse montrer un membre "correspond" qui lui
utilise le RTTI pour faire sa verification. C'est un peu fastidieux.
En jouant avec les template on peut faciliter l'implementation mais il
faut quand meme penser a le faire pour chaque classe.
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Je n'ai pas trouvé ni dans dynamic_cast ni dans typeid de façon de décider si un objet est d'une classe qui dérive de la classe d'un objet de comparaison. Existe-t-il une méthode pour faire ça ?
De memoire je n'en vois pas.
Notez que je n'ai pas du tout commencé à implémenter tout ça donc si je me trompe complètement sur l'architecture à utiliser, je suis preneur d'explications.
Je ne connais pas tellement ce genre de simulation. Je ne vois rien qui cloche avec l'architecture que tu proposes, ce qui ne veut pas dire qu'il n'y a pas mieux.
Je ne vois pas de moyen simple d'y arriver. Definir dans toutes les classes que la Reine puisse montrer un membre "correspond" qui lui utilise le RTTI pour faire sa verification. C'est un peu fastidieux. En jouant avec les template on peut faciliter l'implementation mais il faut quand meme penser a le faire pour chaque classe.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Fabien LE LEZ
On Fri, 28 Oct 2005 18:15:09 +0200, Vincent Jacques :
doit aller chercher des objets dérivés d'une classe /Ressource/
J'ai effectivement l'impression que le vague embryon de RTTI que le C++ offre ne te sortira pas d'affaire ici.
La seule solution un peu élégante que je vois, c'est une fonction EstClasseDerivee(), virtuelle, définie dans chaque classe dérivant de Ressource.
class Ressource { public: MACRO_MON_PETIT_RTTI (Ressource) };
class Vegetal: public Ressource { public: MACRO_MON_PETIT_RTTI (Vegetal) };
Je ne suis pas trop sûr que ça marche, je te laisse le soin de tester tout ça...
Du coup, si la reine te donne un pointeur "ce_que_je_veux", et que tu as un pointeur "ce_que_jai_trouve", ta quête est terminée si ce_que_je_veux-> EstClasseDerivee (ce_que_jai_trouve) == true.
On Fri, 28 Oct 2005 18:15:09 +0200, Vincent Jacques
<jacquev6@cti.ecp.fr>:
doit aller chercher des
objets dérivés d'une classe /Ressource/
J'ai effectivement l'impression que le vague embryon de RTTI que le
C++ offre ne te sortira pas d'affaire ici.
La seule solution un peu élégante que je vois, c'est une fonction
EstClasseDerivee(), virtuelle, définie dans chaque classe dérivant de
Ressource.
class Ressource
{
public:
MACRO_MON_PETIT_RTTI (Ressource)
};
class Vegetal: public Ressource
{
public:
MACRO_MON_PETIT_RTTI (Vegetal)
};
Je ne suis pas trop sûr que ça marche, je te laisse le soin de tester
tout ça...
Du coup, si la reine te donne un pointeur "ce_que_je_veux", et que tu
as un pointeur "ce_que_jai_trouve", ta quête est terminée si
ce_que_je_veux-> EstClasseDerivee (ce_que_jai_trouve) == true.
class Ressource { public: MACRO_MON_PETIT_RTTI (Ressource) };
class Vegetal: public Ressource { public: MACRO_MON_PETIT_RTTI (Vegetal) };
Je ne suis pas trop sûr que ça marche, je te laisse le soin de tester tout ça...
Du coup, si la reine te donne un pointeur "ce_que_je_veux", et que tu as un pointeur "ce_que_jai_trouve", ta quête est terminée si ce_que_je_veux-> EstClasseDerivee (ce_que_jai_trouve) == true.
Falk Tannhäuser
Vincent Jacques wrote:
Je n'ai pas trouvé ni dans dynamic_cast ni dans typeid de façon de décider si un objet est d'une classe qui dérive de la classe d'un o bjet de comparaison. Existe-t-il une méthode pour faire ça ?
As-tu regardé le "Visitor Pattern" ?
Falk
Vincent Jacques wrote:
Je n'ai pas trouvé ni dans dynamic_cast ni dans typeid de façon de
décider si un objet est d'une classe qui dérive de la classe d'un o bjet
de comparaison. Existe-t-il une méthode pour faire ça ?
Je n'ai pas trouvé ni dans dynamic_cast ni dans typeid de façon de décider si un objet est d'une classe qui dérive de la classe d'un o bjet de comparaison. Existe-t-il une méthode pour faire ça ?
As-tu regardé le "Visitor Pattern" ?
Falk
kanze
Vincent Jacques wrote:
j'ai un projet de simulateur de colonie de fourmis, et je cherche à faire du C++ élégant, rigoureux et évolutif.
Je me heurte au problème suivant:
Un objet de classe /Ouvriere/ (sans jeu de mots) doit aller chercher des objets dérivés d'une classe /Ressource/ sur les ordres de sa /Reine/. La /Reine/ connait la hiérarchie des /Ressource/ mais /Ouvriere/ ne la connait pas. La /Reine/ montre donc un échantillon de ce qu'elle veut (par exemple des /Vegetaux/) et l'/Ouvriere/ doit parcourir le monde à la recherche d'objets dérivant de /Vegetaux/.
Je n'ai pas trouvé ni dans dynamic_cast ni dans typeid de façon de décider si un objet est d'une classe qui dérive de la classe d'un objet de comparaison. Existe-t-il une méthode pour faire ça ?
virtual bool Vegetaux::isSameTypeOrChild( Resource const* other ) const { return dynamic_cast< Vegetaux const* >( other ) != NULL ; }
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Vincent Jacques wrote:
j'ai un projet de simulateur de colonie de fourmis, et je
cherche à faire du C++ élégant, rigoureux et évolutif.
Je me heurte au problème suivant:
Un objet de classe /Ouvriere/ (sans jeu de mots) doit aller
chercher des objets dérivés d'une classe /Ressource/ sur les
ordres de sa /Reine/. La /Reine/ connait la hiérarchie des
/Ressource/ mais /Ouvriere/ ne la connait pas. La /Reine/
montre donc un échantillon de ce qu'elle veut (par exemple des
/Vegetaux/) et l'/Ouvriere/ doit parcourir le monde à la
recherche d'objets dérivant de /Vegetaux/.
Je n'ai pas trouvé ni dans dynamic_cast ni dans typeid de
façon de décider si un objet est d'une classe qui dérive de la
classe d'un objet de comparaison. Existe-t-il une méthode pour
faire ça ?
j'ai un projet de simulateur de colonie de fourmis, et je cherche à faire du C++ élégant, rigoureux et évolutif.
Je me heurte au problème suivant:
Un objet de classe /Ouvriere/ (sans jeu de mots) doit aller chercher des objets dérivés d'une classe /Ressource/ sur les ordres de sa /Reine/. La /Reine/ connait la hiérarchie des /Ressource/ mais /Ouvriere/ ne la connait pas. La /Reine/ montre donc un échantillon de ce qu'elle veut (par exemple des /Vegetaux/) et l'/Ouvriere/ doit parcourir le monde à la recherche d'objets dérivant de /Vegetaux/.
Je n'ai pas trouvé ni dans dynamic_cast ni dans typeid de façon de décider si un objet est d'une classe qui dérive de la classe d'un objet de comparaison. Existe-t-il une méthode pour faire ça ?
Y a-t-il moyen de forcer une classe dérivée à définir cette fonction, histoire d'avoir une erreur (ou au moins un warning) en cas d'oubli ?
Merci à vous quatre pour vos réponses, et merci à Fabien de poser la question qui me vient après ;-)
A bientôt pour la réponse, j'éspère, -- Vincent Jacques
"S'il n'y a pas de solution, c'est qu'il n'y a pas de problème." Devise Shadok
James Kanze
Fabien LE LEZ wrote:
On 28 Oct 2005 10:22:48 -0700, "kanze" :
et dans toutes les classes dérivées :
Y a-t-il moyen de forcer une classe dérivée à définir cette fonction, histoire d'avoir une erreur (ou au moins un warning) en cas d'oubli ?
C'est plus difficile, je crois. La solution habituelle, c'est de passer par une fonction non virtuelle qui vérifie que tout c'est bien passé. Mais ici, je ne vois pas comment y arriver.
La seule chose que je vois, c'est que chaque classe peut vérifier que si elle est base d'une autre classe, quelque part dans l'hiérachie on la remplacé :
Une autre possibilité, peut-être (je n'y ai pas encore réelement refléchi), c'est au moyen d'une base virtuelle qui prend un paramètre. Du coup, il faut que la classe la plus dérivée en construit le paramètre (ce qui n'assure pas ce qu'elle fasse correctement, mais qui assure au moins qu'elle a fait quelque chose). Dans ce cas-là, on pourrait imaginer une interface, avec une classe dérivée templatée, et que la base virtuelle prend un pointeur à l'interface.
-- James Kanze mailto: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
Fabien LE LEZ wrote:
On 28 Oct 2005 10:22:48 -0700, "kanze" <kanze@gabi-soft.fr>:
et dans toutes les classes dérivées :
Y a-t-il moyen de forcer une classe dérivée à définir cette
fonction, histoire d'avoir une erreur (ou au moins un warning)
en cas d'oubli ?
C'est plus difficile, je crois. La solution habituelle, c'est de
passer par une fonction non virtuelle qui vérifie que tout c'est
bien passé. Mais ici, je ne vois pas comment y arriver.
La seule chose que je vois, c'est que chaque classe peut
vérifier que si elle est base d'une autre classe, quelque part
dans l'hiérachie on la remplacé :
Une autre possibilité, peut-être (je n'y ai pas encore réelement
refléchi), c'est au moyen d'une base virtuelle qui prend un
paramètre. Du coup, il faut que la classe la plus dérivée en
construit le paramètre (ce qui n'assure pas ce qu'elle fasse
correctement, mais qui assure au moins qu'elle a fait quelque
chose). Dans ce cas-là, on pourrait imaginer une interface, avec
une classe dérivée templatée, et que la base virtuelle prend un
pointeur à l'interface.
--
James Kanze mailto: james.kanze@free.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
Y a-t-il moyen de forcer une classe dérivée à définir cette fonction, histoire d'avoir une erreur (ou au moins un warning) en cas d'oubli ?
C'est plus difficile, je crois. La solution habituelle, c'est de passer par une fonction non virtuelle qui vérifie que tout c'est bien passé. Mais ici, je ne vois pas comment y arriver.
La seule chose que je vois, c'est que chaque classe peut vérifier que si elle est base d'une autre classe, quelque part dans l'hiérachie on la remplacé :
Une autre possibilité, peut-être (je n'y ai pas encore réelement refléchi), c'est au moyen d'une base virtuelle qui prend un paramètre. Du coup, il faut que la classe la plus dérivée en construit le paramètre (ce qui n'assure pas ce qu'elle fasse correctement, mais qui assure au moins qu'elle a fait quelque chose). Dans ce cas-là, on pourrait imaginer une interface, avec une classe dérivée templatée, et que la base virtuelle prend un pointeur à l'interface.
-- James Kanze mailto: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
Frédéric Lachasse
"Vincent Jacques" wrote in message news:djtiqa$hol$
Bonjour à tous,
j'ai un projet de simulateur de colonie de fourmis, et je cherche à faire du C++ élégant, rigoureux et évolutif.
Je me heurte au problème suivant: Un objet de classe /Ouvriere/ (sans jeu de mots) doit aller chercher des objets dérivés d'une classe /Ressource/ sur les ordres de sa /Reine/. La /Reine/ connait la hiérarchie des /Ressource/ mais /Ouvriere/ ne la connait pas. La /Reine/ montre donc un échantillon de ce qu'elle veut (par exemple des /Vegetaux/) et l'/Ouvriere/ doit parcourir le monde à la recherche d'objets dérivant de /Vegetaux/.
Je n'ai pas trouvé ni dans dynamic_cast ni dans typeid de façon de décider si un objet est d'une classe qui dérive de la classe d'un objet de comparaison. Existe-t-il une méthode pour faire ça ?
Notez que je n'ai pas du tout commencé à implémenter tout ça donc si je me trompe complètement sur l'architecture à utiliser, je suis preneur d'explications.
La /Reine/ ne peut pas donner un échantillon de /Vegetaux/ car c'est une classe abstraite. La /Reine/ doit donner un /SelecteurDeResource/ que l'/Ouvriere/ va utiliser pour tester si la /Resource/ est compatible.
class SelecteurDeResource { public: virtual Resource* estCompatible(Resource*); };
Un template permet de générer des SelecteurDeResource testant si la resource derive d'une classe:
template <class T> class Select : public SelecteurDeResource { public: virtual Resource* estCompatible(Resource* r) { return dynamic_cast<T*>(r); } };
La /Reine/ va donc donner à l'/Ouvriere/ une réference vers un SelecteurDeResource:
Que l'/Ouvrière/ utilise pour tester la compatibilité des resources rencontrées:
if (selecteur.estCompatible(resource) != 0) { ... }
Le méchanisme permet des critères de selection plus évolué que "est de type ..."
-- Frédéric Lachasse - ECP86
"Vincent Jacques" <jacquev6@cti.ecp.fr> wrote in message
news:djtiqa$hol$1@smilodon.ecp.fr...
Bonjour à tous,
j'ai un projet de simulateur de colonie de fourmis, et je cherche à faire
du C++ élégant, rigoureux et évolutif.
Je me heurte au problème suivant:
Un objet de classe /Ouvriere/ (sans jeu de mots) doit aller chercher des
objets dérivés d'une classe /Ressource/ sur les ordres de sa /Reine/. La
/Reine/ connait la hiérarchie des /Ressource/ mais /Ouvriere/ ne la
connait pas. La /Reine/ montre donc un échantillon de ce qu'elle veut (par
exemple des /Vegetaux/) et l'/Ouvriere/ doit parcourir le monde à la
recherche d'objets dérivant de /Vegetaux/.
Je n'ai pas trouvé ni dans dynamic_cast ni dans typeid de façon de décider
si un objet est d'une classe qui dérive de la classe d'un objet de
comparaison. Existe-t-il une méthode pour faire ça ?
Notez que je n'ai pas du tout commencé à implémenter tout ça donc si je me
trompe complètement sur l'architecture à utiliser, je suis preneur
d'explications.
La /Reine/ ne peut pas donner un échantillon de /Vegetaux/ car c'est une
classe abstraite. La /Reine/ doit donner un /SelecteurDeResource/ que
l'/Ouvriere/ va utiliser pour tester si la /Resource/ est compatible.
class SelecteurDeResource {
public:
virtual Resource* estCompatible(Resource*);
};
Un template permet de générer des SelecteurDeResource testant si la resource
derive d'une classe:
template <class T>
class Select : public SelecteurDeResource {
public:
virtual Resource* estCompatible(Resource* r) {
return dynamic_cast<T*>(r);
}
};
La /Reine/ va donc donner à l'/Ouvriere/ une réference vers un
SelecteurDeResource:
"Vincent Jacques" wrote in message news:djtiqa$hol$
Bonjour à tous,
j'ai un projet de simulateur de colonie de fourmis, et je cherche à faire du C++ élégant, rigoureux et évolutif.
Je me heurte au problème suivant: Un objet de classe /Ouvriere/ (sans jeu de mots) doit aller chercher des objets dérivés d'une classe /Ressource/ sur les ordres de sa /Reine/. La /Reine/ connait la hiérarchie des /Ressource/ mais /Ouvriere/ ne la connait pas. La /Reine/ montre donc un échantillon de ce qu'elle veut (par exemple des /Vegetaux/) et l'/Ouvriere/ doit parcourir le monde à la recherche d'objets dérivant de /Vegetaux/.
Je n'ai pas trouvé ni dans dynamic_cast ni dans typeid de façon de décider si un objet est d'une classe qui dérive de la classe d'un objet de comparaison. Existe-t-il une méthode pour faire ça ?
Notez que je n'ai pas du tout commencé à implémenter tout ça donc si je me trompe complètement sur l'architecture à utiliser, je suis preneur d'explications.
La /Reine/ ne peut pas donner un échantillon de /Vegetaux/ car c'est une classe abstraite. La /Reine/ doit donner un /SelecteurDeResource/ que l'/Ouvriere/ va utiliser pour tester si la /Resource/ est compatible.
class SelecteurDeResource { public: virtual Resource* estCompatible(Resource*); };
Un template permet de générer des SelecteurDeResource testant si la resource derive d'une classe:
template <class T> class Select : public SelecteurDeResource { public: virtual Resource* estCompatible(Resource* r) { return dynamic_cast<T*>(r); } };
La /Reine/ va donc donner à l'/Ouvriere/ une réference vers un SelecteurDeResource:
Que l'/Ouvrière/ utilise pour tester la compatibilité des resources rencontrées:
if (selecteur.estCompatible(resource) != 0) { ... }
Le méchanisme permet des critères de selection plus évolué que "est de type ..."
-- Frédéric Lachasse - ECP86
Vincent Jacques
"Vincent Jacques" wrote in message news:djtiqa$hol$
j'ai un projet de simulateur de colonie de fourmis, et je cherche à faire du C++ élégant, rigoureux et évolutif.
Je me heurte au problème suivant: Un objet de classe /Ouvriere/ (sans jeu de mots) doit aller chercher des objets dérivés d'une classe /Ressource/ sur les ordres de sa /Reine/. La /Reine/ connait la hiérarchie des /Ressource/ mais /Ouvriere/ ne la connait pas. La /Reine/ montre donc un échantillon de ce qu'elle veut (par exemple des /Vegetaux/) et l'/Ouvriere/ doit parcourir le monde à la recherche d'objets dérivant de /Vegetaux/.
La /Reine/ ne peut pas donner un échantillon de /Vegetaux/ car c'est une classe abstraite. La /Reine/ doit donner un /SelecteurDeResource/ que l'/Ouvriere/ va utiliser pour tester si la /Resource/ est compatible.
Le méchanisme permet des critères de selection plus évolué que "est de type ..."
Merci à tous pour vos réponses,
-- Vincent Jacques - ECP 2006 :-)
"S'il n'y a pas de solution, c'est qu'il n'y a pas de problème." Devise Shadok
"Vincent Jacques" <jacquev6@cti.ecp.fr> wrote in message
news:djtiqa$hol$1@smilodon.ecp.fr...
j'ai un projet de simulateur de colonie de fourmis, et je cherche à faire
du C++ élégant, rigoureux et évolutif.
Je me heurte au problème suivant:
Un objet de classe /Ouvriere/ (sans jeu de mots) doit aller chercher des
objets dérivés d'une classe /Ressource/ sur les ordres de sa /Reine/. La
/Reine/ connait la hiérarchie des /Ressource/ mais /Ouvriere/ ne la
connait pas. La /Reine/ montre donc un échantillon de ce qu'elle veut (par
exemple des /Vegetaux/) et l'/Ouvriere/ doit parcourir le monde à la
recherche d'objets dérivant de /Vegetaux/.
La /Reine/ ne peut pas donner un échantillon de /Vegetaux/ car c'est une
classe abstraite. La /Reine/ doit donner un /SelecteurDeResource/ que
l'/Ouvriere/ va utiliser pour tester si la /Resource/ est compatible.
Le méchanisme permet des critères de selection plus évolué que "est de type
..."
Merci à tous pour vos réponses,
--
Vincent Jacques - ECP 2006 :-)
"S'il n'y a pas de solution, c'est qu'il n'y a pas de problème."
Devise Shadok
"Vincent Jacques" wrote in message news:djtiqa$hol$
j'ai un projet de simulateur de colonie de fourmis, et je cherche à faire du C++ élégant, rigoureux et évolutif.
Je me heurte au problème suivant: Un objet de classe /Ouvriere/ (sans jeu de mots) doit aller chercher des objets dérivés d'une classe /Ressource/ sur les ordres de sa /Reine/. La /Reine/ connait la hiérarchie des /Ressource/ mais /Ouvriere/ ne la connait pas. La /Reine/ montre donc un échantillon de ce qu'elle veut (par exemple des /Vegetaux/) et l'/Ouvriere/ doit parcourir le monde à la recherche d'objets dérivant de /Vegetaux/.
La /Reine/ ne peut pas donner un échantillon de /Vegetaux/ car c'est une classe abstraite. La /Reine/ doit donner un /SelecteurDeResource/ que l'/Ouvriere/ va utiliser pour tester si la /Resource/ est compatible.
Le méchanisme permet des critères de selection plus évolué que "est de type ..."
Merci à tous pour vos réponses,
-- Vincent Jacques - ECP 2006 :-)
"S'il n'y a pas de solution, c'est qu'il n'y a pas de problème." Devise Shadok
James Kanze
James Kanze wrote:
Fabien LE LEZ wrote:
On 28 Oct 2005 10:22:48 -0700, "kanze" :
et dans toutes les classes dérivées :
Y a-t-il moyen de forcer une classe dérivée à définir cette fonction, histoire d'avoir une erreur (ou au moins un warning) en cas d'oubli ?
C'est plus difficile, je crois. La solution habituelle,[...]
En fait, Frédéric Lachasse a donné la bonne réponse. Comme les autres, je n'ai pas vu plus loin que le bout de mon nez.
-- James Kanze mailto: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
James Kanze wrote:
Fabien LE LEZ wrote:
On 28 Oct 2005 10:22:48 -0700, "kanze" <kanze@gabi-soft.fr>:
et dans toutes les classes dérivées :
Y a-t-il moyen de forcer une classe dérivée à définir cette
fonction, histoire d'avoir une erreur (ou au moins un warning)
en cas d'oubli ?
C'est plus difficile, je crois. La solution habituelle,[...]
En fait, Frédéric Lachasse a donné la bonne réponse. Comme les
autres, je n'ai pas vu plus loin que le bout de mon nez.
--
James Kanze mailto: james.kanze@free.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
Y a-t-il moyen de forcer une classe dérivée à définir cette fonction, histoire d'avoir une erreur (ou au moins un warning) en cas d'oubli ?
C'est plus difficile, je crois. La solution habituelle,[...]
En fait, Frédéric Lachasse a donné la bonne réponse. Comme les autres, je n'ai pas vu plus loin que le bout de mon nez.
-- James Kanze mailto: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34