Rechercher : dans
Par :

Instanciation d'une classe fille

Dernière réponse le 4 oct 2008 à 23:43:20 hsmr, le 4 oct 2008 à 15:31:32 
 Signaler ce message aux modérateurs

Bonjour,
Je suis nouveau sur ce forum. Et j'ai une question au sujet de l'héritage d'une classe abstraite. Ma classe fille F hérite d'une classe mere M qui est abstraite ( donc avec des méthodes virtuelles pures). Lors de l'implementation de la classe fille F je fais appelle au constructeur de la classe mere. Mais lors de la compilation, le compilateur rale en me disant qu'il n'a pas le droit d'instancier la classe mère M dans la classe fille F à cause de son abstration.
Une idée pour m'aider svp ?
Merci

Configuration: Windows Vista
Firefox 3.0.3

Meilleures réponses pour « instanciation d'une classe fille » dans :
Le mot-clé static ou les attributs et méthodes de classe en POO Voir(NOTE: Cet article explique la signification du mot-clé static au sein d'une classe. La signification de "static" en C n'a par exemple rien à voir.) Vous êtes débutant en programmation orientée objet. En Java, en C++...ou que sais-je encore,...
Décalage des sous-titres avec Media Player Classic VoirProblème Je possède une vidéo au format .AVI, ainsi qu'un fichier de sous-titres au format .SUB, malheureusement lors de la lecture avec Media Player Classic, les sous-titres sont décalés par rapport à la vidéo. Solution Il existe le logiciel...
Télécharger Media Player Classic HomeCinema VoirMedia Player Classic - Home Cinema est une version modifiée de Media Player Classic. Elle reprend ce qui a fait le succès de l’original et y ajoute quelques nouveautés. Cette version inclut des décodeurs supplémentaires HD pour les codecs H.264 et VC...
PHP - Les classes VoirLa notion de classe Php3 intègre un soupçon de caractéristiques empruntées aux langages orientés objet, c'est-à-dire la possibilité d'utiliser des objets, entités regroupant des données et des fonctions au sein d'une structure et rendant la...
Les classes de style (CSS) VoirLes classes et les ID Les classes Il peut s'avérer intéressant d'affecter des styles différents à des mêmes balises. Pour cela les spécifications CSS ont introduit le concept de classe. La définition des classes est aussi simple que celles des...
Java - Les objets VoirLa création d'objets Un objet est une instance de classe, la création d'objets s'appelle donc l'instanciation. Cette instanciation se fait grâce à l'opérateur new suivi du nom de la classe à instancier et de parenthèses contenant les paramètres...

1

torpedolos, le 4 oct 2008 à 15:33:26

Tu parles de quoi là ?
Quel logiciel, tu essaie de faire quoi ?
On est censé tout deviner par télépathie ?

Répondre à torpedolos

4

hsmr, le 4 oct 2008 à 16:18:27

Bjr
Je parle de faire hériter une classe fille d'une classe mère abstraite. Désolé je suis en C++ j'oubliais.
Bref :
- une classe Figure abstraite qui contient une seule donnée membre.
- une classe Rectangle fille qui hérite de la classe mere abstraite Figure.

Ma classe Figure contient des méthodes virtuelles pures donc elle est abstraite; J'y ai mis un constructeur.
Dans la classe Rectangle qui hérite de la classe Figure j'ai écrit un constructeur dans lequel je rappelle le constructeur de la classe Figure.

Et à la compile j'ai un message d'erreur me disant que la classe Figure ne peut être instancié du fait qu'elle est abstraite.
Je ne comprends pas trop cette erreur car j'étais avant en java et je bascule en C++. Donc mon adaptation est un peu délicate du fait des comportements différents de ces deux langages.

Merci

Répondre à hsmr

5

cKoiDonc ??, le 4 oct 2008 à 16:30:34

Re,

Voir plus bas...
Pas de constructeur dans une classe Abstract car on ne peux pas l'instancier - vous toujours essayer de compiler mon cher ami (:>) - que ce soit en C++, Java, C# et autres.....

java.sun.com/docs/books/tutorial/java/IandI/abstract.html

Capito ?.
Have a nice day.

Répondre à cKoiDonc ??

6

hsmr, le 4 oct 2008 à 20:49:52

Rere,
En C++ peut être. Mais cela est possible en Java de definir un constructeur dans une classe abstraite (Mère) pour faciliter le polymorphisme avec ces différentes classes filles.
D'accord avc toi que l'objet de la classe Mère abstraite ne peut être instancié. Mais ce constructeur (de la classe mère abstraite) sera appelé lors de l'instanciation de la classe fille qui aura hérité de la classe mère abstraite

Have a nice day too !

Répondre à hsmr

7

Rollin'babe !!, le 4 oct 2008 à 21:35:05

Ok,

Je t'avais mal lu : tu n'instancies pas la classe abstraite mais tu appelle seulement son constructeur par un super() dans le constructeur de la classe fille.
Je ne connaissais pas cette subtilité en Java ...

Bonne soirée.

Répondre à Rollin'babe !!

8

hsmr, le 4 oct 2008 à 21:51:59

Re,
dsl de m'être mal exprimé. Et maintenant qu'on se comprends. C'est cette subtilité que je cherche en C++. En gros connais tu l'équivalent du mot super en C++ stp
merci

Répondre à hsmr

9

Rollin'babe !!, le 4 oct 2008 à 22:19:10

Re,

Exemple d'un appel d'un constructeur de la classe Mere à l'appel du constructeur de la classe fille :

Fille::Fille(void) : Mere(2)
{
printf("Exécution du constructeur de la classe fille.\n");
return;
}

Il faut spécifier explicitement le nom du constructeur de la super-classe avec ses paramètres : c'est l'équivalent du super() en Java.

A+.

Répondre à Rollin'babe !!

10

hsmr, le 4 oct 2008 à 22:46:57

Re,
Merci pour ton aide. C'est justement ce que j'ai fait au début. Mais l'erreur vient du fait que la Mere est abstraite. Et en faisant :

Fille::Fille(void):Mere(2)
{
...
}

Comme la mère est abstraite j'ai un message d'erreur à la compilation, me faisant comprendre que dans le main je tente d'instancier une classe abstraite. Je précise aussi que je suis sur vista et comme IDE j'aie le Visual C++

Merci

Répondre à hsmr

11

Rollin'babe !!, le 4 oct 2008 à 23:09:35

Re,

Je n'ai pour ma part jamais entendu parlé de la possibilité d'effectuer un appel explicite de constructeur de super-classes abstraites.
Il me semble que définir un constructeur pour ce type de classe reste un peu "exotique" comme pratique en C++ mais j'avoue que je ne me suis jamais vraiment penché sur la question (:<) mais je vais me renseigner et on se tient au courant.

A+.

Répondre à Rollin'babe !!

12

 hsmr, le 4 oct 2008 à 23:43:20

Re,
ok on se tient au courant je me renseignerai de mon côté aussi sur cette stratégie "exotique" comme tu dis, qui existe déjà en java via le mot super et très pratique dans le but d'éviter une redondance de code, soit une factorisation. Mais c'est vrai que Java n'est pas C++, mais bon l'esprit objet est toujours le même.
A bientôt !

Répondre à hsmr

2

Rollin'babe !!, le 4 oct 2008 à 15:57:32

Bjour,

Une classe Abstraite, sauf erreur de ma part, ne comporte pas de constructeur mais que des méthodes.
Elle ne peut être instanciée mais seulement dérivée et toutes ses méthodes doivent être redéfinies dans ta classe fille.

Salutations.

Répondre à Rollin'babe !!

3

Rollin'babe !!, le 4 oct 2008 à 16:07:09

Additif,

Les méthodes des classes abstraites ne sont pas définies mais simplement déclarées.
Ta classe fille doit implémenter ces méthodes mais tu n'est pas obligé de les définir si tu ne veux pas les utiliser.

Nuances (:>).
Salutations.

Répondre à Rollin'babe !!
Collection CommentÇaMarche.net