Examen 2019, question 3: Conception OO et programmation

Examen 2019, question 3: Conception OO et programmation

by Katja Sophia Moos -
Number of replies: 2

Bonjour,

J'ai une question pour l'exercice 3: Conception OO et programmation de l'épreuve 2019:

J'ai discuté avec une amie et nous avons deux solution un peu différentes et maintenant nous sommes curieuses si tous les deux fonctionnent ou pas:

Mon amie a écrit les lignes suivantes:

class Personnage {//corps};

class Personnage_BD: virtual public Personnage {//corps};

class Personnage_enfant: virtual public Personnage {//corps};

class Schtroumpf: public Personnage_BD, public Personnage_enfant {//corps};

Et j'ai la code suivante:

class Personnage {//corps};

class Personnage_BD: public Personnage {//corps};

class Personnage_enfant {//corps};

class Schtroumps: virtual public Personnage_BD, virtual public Personnage_enfant {//corps}

Finalement, la seule différence est le placement du mot virtual. Ca serait vraiment gentil si quelq'un peut nous dire quelle version et la meilleure et pourquoi ou si tous le deux sont possible à écrire.

Merci en avance pour votre réponse,

In reply to Katja Sophia Moos

Re: Examen 2019, question 3: Conception OO et programmation

by Fares Ahmed -

Bonjour,

la première version est correcte, et dans le contexte de cet exercice votre deuxième solution ne fonctionne pas. Le but d'avoir une superclasse virtuelle est d'indiquer que cette classe peut potentiellement être héritée plusieurs fois afin d'éviter d'avoir ses attributs "importés" plusieurs fois (revoir le MOOC sur l'héritage multiple si nécessaire). Dans cet exercice, la classe qui répondrait le plus à ce besoin à mon sens est la classe Personnage, c'est donc elle qui devrait être héritée virtuellement.

In reply to Fares Ahmed

Re: Examen 2019, question 3: Conception OO et programmation

by Katja Sophia Moos -

Bonjour,

Merci beaucoup pour votre réponse. J'ai aussi regardé encore une fois la vidéo et maintenant avec vos explication et la vidéo c'est clair.