help classe auto référentielle ( chainage d'objets ) - C++ - Programmation
Marsh Posté le 28-10-2004 à 14:59:28
Tu rémunères combien pour qu'on fasse ton boulot à ta place ?
Marsh Posté le 28-10-2004 à 15:01:59
je demande pas de faire le boulot à ma place !
j'ai déja tout préparé dans mon code
il me manque seulement une aide car je ne sais pas comment représenter une liste chainée en c++.
ca demande pas bcp je pense que c'est juste un petit service ca se paye ca?
Marsh Posté le 28-10-2004 à 15:05:47
Comment représenter une liste chaînée ?
Ca dépend, il y a plusieurs méthodes.
Si on pouvait jeter un oeil sur ton modèle UML, ça aiderait.
Et puis tu devrais poster ton code pour voir à quel niveau tu bloques.
Marsh Posté le 28-10-2004 à 15:11:18
moi je veux bien mais mon code est composé de 2 fichiers .h et de 3 .cpp
et puis le modele uml je fais cmt pour le poster? je le essine dans paint et je le poste?
Marsh Posté le 28-10-2004 à 15:13:42
on m'a parlé de classes auto référentielles.
j'ai une classe facture qui instancie un objet UneFacture qui possède un *ptrSuivant qui pointe vers une autre facture du meme type.
je ne sais pas trop cmt créer 100 factures sans saturer la mémory.
Marsh Posté le 28-10-2004 à 15:14:22
il est où le topic des bestof parce que là on en tient un bon
Marsh Posté le 28-10-2004 à 15:17:20
Poste seulement la déclaration de la classe collection, ça permettra d'avoir une idée sur la méthode mise en oeuvre.
Marsh Posté le 28-10-2004 à 15:18:06
Au fait : ignore la pollution de Taz, il ne sait faire que ça.
Marsh Posté le 28-10-2004 à 15:20:31
non, je vois juste un topic hors charte, avec un titre irritant et un gus parano qui a pas envie d'en foutre une ramée.
Marsh Posté le 28-10-2004 à 15:23:26
j'ai fait une classe Facture
ma classe Collection est vide
class Facture
{
private:
int id; // numero d'identification de la facture.
Date Datef; // objet de type Date crée.
float MontantHTVA; // le montant hors tva.
Facture *pFactureSuivante; // pointeur du type de la classe elle-même.
public:
Facture();
virtual ~Facture();
int getid();
Date getDate() ;
double getMontantHTVA();
void setid();
void setDate();
void setMontantHTVA();
AjoutFacture();
inline friend ostream &operator<< ( ostream &sortie, Facture &UneFacture )
{
sortie << "\n\n--- Votre facture est ---\n\n"
<<"\nreference facture: "<<UneFacture.id
<<"\ndate facture: "
<< UneFacture.Datef.jour<<"/"<<UneFacture.Datef.mois<<"/"<<UneFacture.Datef.annee
<<"\nmontant htva: "
<< UneFacture.MontantHTVA << endl ;
return sortie;
}
inline friend istream &operator>> ( istream &entree, Facture &UneFacture )
{
cout <<"\nreference facture: ";
entree >> setw(4) >> UneFacture.id; // entre le numero de la facture.
cout <<"\ndate facture (JJMMAAAA) : ";
entree >> UneFacture.Datef.jour >> UneFacture.Datef.mois >> UneFacture.Datef.annee;
cout <<"\nmontant HTVA facture: ";
entree >> setw(5) >> UneFacture.MontantHTVA; //entre le montant HTVA.
return entree; // permet cin >> a > etc
}
};
Marsh Posté le 28-10-2004 à 15:26:44
c'est ... flou comme model
tu voudrais pas séparer l'implementation de la liste de la facture ?
Marsh Posté le 28-10-2004 à 15:28:11
ouais, parce que sur ton schéma UML, ça doit apparaître clairement qu'une Collection est associé à * Facture ...
Marsh Posté le 28-10-2004 à 15:29:57
Ouip, même si en algo, on le fait souvent (de relier les noeuds entre eux), en C++, on évite :
- chaque facture est indépendante, et n'a pas conscience de l'existence des autres factures
- ta classe Collection gère la liste chaînée de facture.
Collection devient alors une simple instanciation de la clase list de la STL avec des pointeurs sur Facture. Et ta classe Facture n'a plus le pointeur vers la Facture suivante.
Le lien vers la classe list a déjà été donné par cris56
edit: le lien était de cris56, pas de Taz. A mon avis, Taz n'a jamais entendu parler de la STL...
Marsh Posté le 28-10-2004 à 15:31:36
edit : rien
Marsh Posté le 28-10-2004 à 15:32:00
séparer l'implementation de la liste de la facture ?
bon j'ai mis en rouge ce qui peut permettre un chainage... mais c flou effectivement
class Facture
{
private:
int id; // numero d'identification de la facture.
Date Datef; // objet de type Date crée.
float MontantHTVA; // le montant hors tva.
Facture *pFactureSuivante; // pointeur du type de la classe elle-même.
public:
Facture();
virtual ~Facture();
int getid();
Date getDate() ;
double getMontantHTVA();
void setid();
void setDate();
void setMontantHTVA();
AjoutFacture();
};
Marsh Posté le 28-10-2004 à 15:35:00
Lam's a écrit : A mon avis, Taz n'a jamais entendu parler de la STL... |
Marsh Posté le 28-10-2004 à 15:36:12
Sais-tu quel est le rôle de AjoutFacture() ?
Elle n'a aucun param d'entrée donc comment peut elle faire un lien ?
Marsh Posté le 28-10-2004 à 15:42:13
ajoutFacture()
n'a aucun param
je sais bien car je ne sais pas bien ce qu'elle doit faire.
en tout cas il faut qu'elle ajoute la facture a la collection.
mais il faut un début.... et puis un chainage jusqu'a la 100èmè et derniere facture qui elle pointe vers NULL.
mais bon c trop dur
Marsh Posté le 28-10-2004 à 15:43:36
Les forumeurs sont priés de ne pas mettre leurs titres en lettres capitales, conformément aux règles en vigueur sur cette section
Marsh Posté le 28-10-2004 à 15:44:08
fullnight a écrit : ajoutFacture() |
Oui mais non, on t'a dit de ne pas faire comme ça.
Relis mon message, et pose des questions si tu comprends pas, au lieu de t'entêter dans ton système de liste chaînée préhistorique.
Marsh Posté le 28-10-2004 à 15:50:32
c'est pas que je m'entete
c'est le prof qui veut que ce soit une classe autoréférentielle donc je suis obligé de passer par la
Marsh Posté le 28-10-2004 à 15:52:15
fullnight a écrit : c'est pas que je m'entete |
ta pas de chance d'avoir un prof normal
Marsh Posté le 28-10-2004 à 15:52:51
ok si je relis
je comprend que je dois créer une classe liste qui pointera vers 100 objets factures
Marsh Posté le 28-10-2004 à 15:53:32
mais on n'a pas encore vu la STL !!
argh !!
c le dernier chapitre du cours
Marsh Posté le 28-10-2004 à 15:53:58
fullnight a écrit : c'est pas que je m'entete |
ok, c'est bien ce qu'il me semblait. Donc tu pas besoin de classe Collection.
Sinon il te faut plusieurs méthodes pour te balader dans la liste chaînée, effacer un item, ajouter un item etc...
Marsh Posté le 28-10-2004 à 15:53:58
le lien proposé est bien gentil mais en anglais et je n'ai plus qu'une heure pr terminer
Marsh Posté le 28-10-2004 à 15:54:25
fullnight a écrit : mais on n'a pas encore vu la STL !! |
ben prend un peu d'avance
Marsh Posté le 28-10-2004 à 15:55:03
il a demandé aux plus forts d'effacer une facture bref de faire un menu .....
mais il veut simplement 100 factures par classe auto référencée
Marsh Posté le 28-10-2004 à 15:55:40
fullnight a écrit : le lien proposé est bien gentil mais en anglais et je n'ai plus qu'une heure pr terminer |
Citation : et voila que mon prof nous donne seulement 2 jours |
Mouais
Marsh Posté le 28-10-2004 à 15:56:45
mince alors, on a une solution, mais ça gère que 99 factures ... pas de chance
Marsh Posté le 28-10-2004 à 15:59:09
mardi il nous a demandé ca pour jeudi
donc ca fait 2 jours !
et sur la vie de ma mère que j'ai pas arreté de me questionner, d'implémenter et de pas trouver
hier jusqu'a 5 h du mat !
enfin on est jeudi et c chaud..... il me reste 1h
Marsh Posté le 28-10-2004 à 16:01:37
et si tu réfléchissais un peu avant ? si on te dis de séparer liste et facture, c'est parce que ça n'a rien à voir et que ça t'aide à appréhender le problème de collection de manière plus simple.
fait ton UML/ADT de Liste, code là, après tu bourre tes factures dedans et ça marche
Marsh Posté le 28-10-2004 à 14:54:50
bonjour a tous
alors voila je débute en c++
et voila que mon prof nous donne seulement 2 jours pour faire cet exercice....côté.
nous avons réalisés l'uml et en fait ce que je ne sais pas faire
c'est enchainer 100 objets chacun contenant un *ptrSuivant qui pointe vers l'objet suivant.
voila j'aimerais une aide détaillée(voire le code) si possible merci à tous
Message édité par fullnight le 16-12-2004 à 15:41:45