heritage et lien de composition
salut tout le monde,
je suis en train de coder un projet de gestion d'une videotheque. et j'aimerais avoir votre aide pour quelque chose.
Exemple :
j'ai une classe mère "video", une classe fille "film" et une classe acteurs (lien de composition). voila une partie du diagramme avec les classes concernées :
http://membres.lycos.fr/slim01/devel...lm-acteurs.png
et voila comment j'ai codé ces classes :
video.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| #ifndef VIDEO_H
#define VIDEO_H
class video
{
protected:
chaine titre;
int duree;
int nb_exemplaires;
chaine sujet;
public:
// class constructor
video();
video(chaine titre2, int duree2, int nbexemp, chaine sujet2);
video(const video & vid);
//accesseurs
chaine gettitre() const {return titre;}
int getduree() const {return duree;}
int getnbexemp() const {return nb_exemplaires;}
chaine getsujet() const {return sujet;}
//mutateurs :
void settitre(const chaine & titre2) {titre = titre2;}
void setduree(const int & duree2) {duree = duree2;}
void setnbexemp(const int & nbexemp) {nb_exemplaires = nbexemp;}
void setsujet(const chaine & sujet2) {sujet = sujet2;}
void setvideo(chaine titre2, int duree2, int nbexemp, chaine sujet2);
//surcharge des opérateurs :
video & operator = (const video & vid);
bool operator == (const video & vid);
friend ostream & operator << (ostream & os, video & vid)
{os <<vid->titre<<" "<<vid->duree<<endl<<vid->nb_exemplaires<<endl<<vid->sujet<<endl;
return os;}
friend istream & operator >> (istream & is, video & vid);
void afficher() const {cout<< (video*) this;}
void afficherdetails() const {cout<<"Titre du film : "<<titre<<endl<<"Duree : "<<duree<<endl<<"Nombre d'exemplaires : "<<endl<<nb_exemplaires<<endl<<"Sujet : "<<sujet<<endl<<endl;}
};
#endif // VIDEO_H |
video.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| #include "video.h"
/*
chaine titre;
int duree;
int nb_exemplaires;
chaine sujet; */
video::video() : titre(), sujet()
{
duree = 0;
nb_exemplaires = 0;
}
video::video(chaine titre2, int duree2, int nbexemp, chaine sujet2)
{
titre = titre2;
duree = duree2;
nb_exemplaires = nbexemp;
sujet = sujet2;
}
video::video(const video & vid)
{
titre = vid.titre;
duree = vid.duree;
nb_exemplaires = vid.nb_exemplaires;
sujet = vid.sujet;
}
void video::setvideo(chaine titre2, int duree2, int nbexemp, chaine sujet2)
{
titre = titre2;
duree = duree2;
nb_exemplaires = nbexemp;
sujet = sujet2;
}
const video & video::operator = (const video & vid)
{
titre = vid.titre;
duree = vid.duree;
nb_exemplaires = vid.nb_exemplaires;
sujet = vid.sujet;
return *this;
}
bool video::operator == (const video & vid)
{
return titre==vid.titre && duree==vid.duree && nb_exemplaires==vid.nb_exemplaires && sujet==vid.sujet;
}
friend istream & video::operator >> (istream & is, video & vid)
{
chaine titre2;
int duree2;
int nbexemp;
chaine sujet2;
cout<<"Titre du film : ";
is>>titre2;
cout<<"Durée : ";
is>>duree2;
cout<<"Nombre d'exemplaires : ";
is>>nbexemp;
cout<<"Sujet : ";
is>>sujet2;
video vid2(titre2, duree2, nbexemp, sujet2);
vid = vid2;
return is;
} |
film.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #ifndef FILM_H
#define FILM_H
#include "video.h"
class film : public video
{
private:
chaine genre;
chaine realisateur;
acteurs acteur;
public:
film();
film(chaine genre2, chaine real, acteurs nouvacteur, chaine nouvtitre, int nouvduree, int nouvnb_exemplaires, chaine nouvsujet);
film(chaine genre2, chaine real, chaine nouvnom, chaine nouvprenom,chaine nouvtitre, int nouvduree, int nouvnb_exemplaires, chaine nouvsujet);
film(const film & film2);
//accesseurs :
chaine getgenre() const {return genre;}
chaine getrealisateur() const {return realisateur;}
chaine getnomact() const {return acteur.getnom();}
chaine getprenomact() const {return acteur.getprenom();}
//... pas encore terminée.... je bloque
};
#endif // FILM_H |
film.cpp
pas encore codé
acteurs.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| #ifndef ACTEURS_H
#define ACTEURS_H
class acteurs
{
private:
chaine nom;
chaine prenom;
public:
acteurs()
acteurs(chaine nom2, chaine prenom2);
acteurs(const acteurs & act);
//accesseurs et mutateurs :
chaine getnom() const {return nom;}
chaine getprenom() const {return prenom;}
void setnom(const chaine & n);
void setprenom(const chaine & p);
//surcharge des operateurs :
acteurs & operator = (const acteurs & act);
bool operator == (const acteurs & act);
friend ostream & operator << (ostream & os, const acteurs & act);
friend istream & operator >> (istream & is, const acteurs & act);
};
#endif // ACTEURS_H |
acteurs.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| #include "acteurs.h"
/*
chaine nom;
chaine prenom;
*/
acteurs::acteurs() : nom(), prenom()
{
}
acteurs::acteurs(chaine nom2, chaine prenom2)
{
nom = nom2;
prenom = prenom2;
}
acteurs::acteurs(const acteurs & act)
{
nom = act.nom;
prenom = act.prenom;
}
void acteurs::setnom(chaine nom2)
{
nom = nom2;
}
void acteurs::setprenom(const chaine & p)
{
prenom = prenom2;
}
acteurs & acteurs::operator = (const acteurs & act)
{
nom = nom2;
prenom = prenom2;
return *this;
}
bool acteurs::operator == (const acteurs & act)
{
return nom == act.nom && prenom == act.prenom;
}
friend ostream & operator << (ostream & os, const acteurs & act)
{
cout<<act.nom<<" "<<act.prenom;
return os;
}
friend istream & operator >> (istream & is, const acteurs & act)
{
chaine n;
chaine p;
is>>n>>p;
acteurs act2(n, p);
act = act2;
return is;
} |
je sais pas si vous pouvez m'apporter quelques remarques ou idées.
desole pour ce long code et merci beaucoup.