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 :




et voila comment j'ai codé ces classes :

video.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.