Selon toute logique, une classe qui hérite d'une autre doit avoir quelque chose en commun avec son ancêtre ainsi que ces particularités, ainsi je ne trouve pas que le fait d'avoir une classe générale sois la meilleure solution. Ton code, spirit, signifie pour moi qu'une map a un ancêtre commun avec... un personnage. Je ne trouve pas cette relation très logique, c'est pour ça que je ne trouve pas ton code très logique.
pac:
Pour le polymorphisme en Perl (langage faiblement typé), il existe bien, la surcharge d'une fonction étant possible d'une classe à l'autre.
package Class1;
sub consclass1
{
#définition du constructeur
}
sub methode1
{
#définiton methode1
}
1;
package Class2;
use Class1;
our @ISA = ("Class1"); #Class2 IS_A Class1
sub consclass2
{
#définition du constructeur
}
sub methode1
{
#définiton methode1
}
1;
Le langage Perl étant semi interprété, il supporte les liaisons dynamiques. Si je définit ceci :
sub fonction
{
my ($param) = @_;
$param->methode1;
}
#déclaration de deux objets, un de type Class1 et l'autre de type Class2
my $instance1 = Class1->consclass1
my $instance2 = Class2->consclass2
fonction($instance1);#fonction exécute Class1::methode1()
fonction($instance2);#fonction exécute Class2::methode1()
}
N'est ce pas du polymorphisme ? Pourtant il n'est pas question de type ici.
D'ailleurs, voivi un exemple en C++ (désolé si il y a des erreurs)
Il n'y a pas de différence dans les arguments des deux classe methodes, pourtant il y a bien polymorphisme (class2 surcharge methode() de class1).
Tout ça pour dire que je ne vois pas en quoi le faible typage enpêce la surcharge de fonction d'une classe à l'autre et le polymorphisme.
__________________________
[col]Woufeil[/col] et respectez la charte.
Ola c'est quoi ce bug ? Ma réponse n'a pas été comptée, mais elle s'affoche quand même... Bizare.
__________________________
[col]Woufeil[/col] et respectez la charte.
[quote]heroAndMap *h = new heroAndMap;
h->createPerso(new Perso);
h->createMap(200,300);
h->LoopWhileNotQuit();
[/quote]
pas vraiment, je fais juste un heroAndMap *h;
h = new heroAndMap(tous mes arguments);
et dans mon main j'ai une boucle while(!done) dans laquelle je fais toutes les gestion d'évènements (changer de maps selon certaines conditions etc)
[quote]h->createPerso(new Perso);[/quote]
vu qu'il n'y en a qu'un, je préfère que ma classe générale descende directement de celle-ci
vous n'arriverez pas à me faire changer^^
__________________________
Spirit - modérateur casu ^-^'
ERREUR BBCODE SUR CE MESSAGE : - La valeur de la balise "quote" n'est pas correcte !
[quote]vous n'arriverez pas à me faire changer^^[/quote]
Ca ne sert à rien dans ce cas de débattre. On perd notre temps à essayer de te faire comprendre comment faire un meilleur code. :():
[quote]N'est ce pas du polymorphisme ?[/quote]
Oui c'est du polymorphisme, mais par héritage, on identifie la méthode en fonction de la classe effectivement construite de l'objet.
je parlais d'un autre type de polymorphisme :
[code]public:
void methode(int, double);
void methode(char*, double);
void methode(int, char*);[/code]
ou ici, on utilise la signature de la méthode pour identifier laquelle appeller.
En ActionScrpit 2.0, il existe le typage faible et le typage fort en même temps, on n'est pas obligé d'appeller les routines avec le bon nombre de paramètres, il n'y a pas de vérification au moment de la compilation, pour moi ce sont de gros défauts qui ne sécurisent pas du tout le code et qui font qu'on ne sait plus trop ou on en est.
__________________________
Lisez la [url=http://www.forum.moteurprog.com/bavardages/forum-msg-22857-1.htm]charte[/url], pensez à regarder la [url=http://www.forum.moteurprog.com/FAQ/FAQ.php]FAQ[/url], les [url=http://www.moteurprog.com/Tutoriaux/]tutoriaux[/url], l'[url=http://www.moteurprog.com/Annuaire/]annuaire[/url] et faites une [url=http://www.forum.moteurprog.com/Rechercher/Index.php]recherche[/url] dans les forums.
N'oubliez pas le Tag [b][Résolu][/b][img]http://www.ressources.moteurprog.com//Ressources/Images/Forum/Resolu.gif[/img].
Initiez-vous à Delphi avec [url=http://www.turboexplorer.com/delphi]Turbo Delphi Explorer[/url], au C ou au C++ avec [url=http://www.codeblocks.org]Code::Blocks[/url] et C# avec [url=http://www.microsoft.com/france/msdn/vstudio/express/vcsharp/telechargez.mspx]Visual C# 2005 Express[/url].
ERREUR BBCODE SUR CE MESSAGE : - La valeur de la balise "quote" n'est pas correcte !
pac, ce que tu as fais là est une simple surcharge de fonction, c'est aussi considéré comme du polymorphisme ? Si oui, je savais pas, je croyais que justement le polymorphisme intervenait quand on surcharge des fonctions par héritages...
Hum, à y être je pose une question : quels sont les intérêts de l'héritage privé ? Et surtout quand l'utiliser ? Selon moi, si un membre a été déclaré come privé, je ne vois pas pourquoi une classe fille devrais y avir accés, sauf en cas d'héritage multiple : on veux que certaines classes filles y est accés mais pas d'autres. Mais je sais qu'il y a d'autres exemples plus appropriés sur l'utilité de l'héritage privé, vous pouvez m'en citer ?
__________________________
[col]Woufeil[/col] et respectez la charte.
[quote] pac, ce que tu as fais là est une simple surcharge de fonction, c'est aussi considéré comme du polymorphisme ? Si oui, je savais pas, je croyais que justement le polymorphisme intervenait quand on surcharge des fonctions par héritages...
[/quote]
C'est marrant, car pour moi, redéclarer une méthode dans une classe fille, je n'appelle pas ça du polymorphisme, mais une simple surcharge de méthodes. :lol:
L'héritage privée, si je me souviens bien, la classe fille n'a accés ni aux attributs private, ni aux attributs protected et je ne vois pas du tout quelle en est l'utilité, d'ailleurs ce n'est presque jamais utilisé et nos pairs n'en trouvent pas beaucoup d'utilité non plus.
Et ne parlons même pas de l'héritage protected. :lol:
__________________________
Lisez la [url=http://www.forum.moteurprog.com/bavardages/forum-msg-22857-1.htm]charte[/url], pensez à regarder la [url=http://www.forum.moteurprog.com/FAQ/FAQ.php]FAQ[/url], les [url=http://www.moteurprog.com/Tutoriaux/]tutoriaux[/url], l'[url=http://www.moteurprog.com/Annuaire/]annuaire[/url] et faites une [url=http://www.forum.moteurprog.com/Rechercher/Index.php]recherche[/url] dans les forums.
N'oubliez pas le Tag [b][Résolu][/b][img]http://www.ressources.moteurprog.com//Ressources/Images/Forum/Resolu.gif[/img].
Initiez-vous à Delphi avec [url=http://www.turboexplorer.com/delphi]Turbo Delphi Explorer[/url], au C ou au C++ avec [url=http://www.codeblocks.org]Code::Blocks[/url] et C# avec [url=http://www.microsoft.com/france/msdn/vstudio/express/vcsharp/telechargez.mspx]Visual C# 2005 Express[/url].
ERREUR BBCODE SUR CE MESSAGE : - La valeur de la balise "quote" n'est pas correcte !
Ben si ça sert, seulement le comportement que l'on désire pour nous objets, souvent, est propice à l'utilisation d'un héritage public ...
__________________________
Be C++ Mon Blog (C++, Intelligence Artificielle, Prolog)