Disjonction dans une classe C++ [Résolu]

Signaler
Messages postés
27
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
4 juin 2006
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
Bonsoir,

Je souhaiterai créer une classe présentant une disjonction, c'est à dire :

class Element
{
Soit un élément du type1
Soit un élément du type2
}

Par exemple, pour créer une liste récursive c'est soit une liste vide soit un couple (valeur, queue de la liste)

Merci de votre aide

12 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
Ah oui, un oubli :)

class Date
{
public:
virtual void Afficher() const = 0;
};

class DateExacte: public Date
{
public:
virtual void Afficher() const;
}
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
L'héritage bien sur

class List
{
List* queue;
T valeur;
}

class Vide extends List {}
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
C'est une obligation que tu as de faire comme ca ou tu as un exo à résoudre par n'importe quels moyens ?

Shell
Messages postés
27
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
4 juin 2006

Non, ce n'est pas une obligation (ce n'est pas pour un cours) mais j'essaie de développer comme on m'a appris à l'école...

Bonnes fêtes
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Tu veux faire quoi au juste ?

Shell
Messages postés
27
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
4 juin 2006

J'ai une classe Date celle ci se compose ainsi

Soit c'est une date exacte et donc un triplet d'entiers
Soit c'est une période donc deux triplets$
soit c'est un intervalle : avant une date, entre deux dates, après une date
soit c'est une phrase (string)

et quelques autres trucs ...

Espérant avoir été clair
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
Une classe Date eventuellement abstraite, et 3 sous-classes concrètes DateExacte, DatePedriode et DateIntervalle
Messages postés
27
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
4 juin 2006

Je ne comprends pas trop ce que vous dites au sujet de classe abstraite.

Merci d'eclaircir un peu le concept
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
C'est a dire que le Date ne sera pas forcément instanciable (pas d'objets de type Date). Ils font tous partie d'une sous-classe. Cela te permet d'omettre une implémentation pour certaines opérations.
Par exemple, si chaque type de date doit offrir une méthode Afficher, tu n'est pas obliger de la définir pour Date:
class Date
{
virtual void Afficher() const = 0;
};

class DateExacte
{
virtual void Afficher() const;
}

Et tu donnes le code pour DateExacte::Afficher, mais pas pour Date::Afficher
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Dans ce cas la autant crée une class par type de date tu crois pas ?
Ou alors si tes class on de nombreux points en commun, regroupe les en une class, puis fait hérité les classe fille de celle ci.
Tu n'auras plus qu'a redéfinir certaines méthodes par le polymorphisme.

Shell
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
C'est bien ce que je dis, non? Une classe par type de date... Mais ce sont toutes des classes donc elles héritent d'une même classe
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
T'as zappé l'héritage pour DateExacte d'ou ma remarque.
Sinon c'est ok.

Shell