Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/07/2007, à 18:56

djjudge

[C++] classe, objet... debutant inside !

Bonjour,

pour m'entraîner avec la POO, je voudrais programmer une "médiathèque".
j'ai crée une classe media et une classe personne (dans des fichiers séparés tongue)

class Media
{
	public: // méthodes

	Media(std::string nom, long type, bool disponible); // constructeur
	bool estDispo();
	void modifierDisponibilite();
	Media acquerirMedia();

	// procedures d'affichage
	void afficherNomMedia();
	void afficherTypeMedia();
	void afficherDispo();
	void afficherEtat();

	private: // attributs

	std::string m_nomMedia;
	long m_typeMedia;
	bool m_disponible;
};

class Personne
{
	public:


	private:
	std::string m_nom;
	std::string m_prenom;
	long m_age;
	double m_telephone;
	std::string m_adresse;
	std::string m_mail;
};

Je voudrais acquerir (à la console) un media  mais je ne sais pas comment faire. pour info, voici ma fonction acquerir:

Media Media::acquerirMedia()
{
string nom; 
long type;
bool disponible;

cout<<"Nom du media: "; cin>> nom;
cout<<"Type: "; cin>>type;
cout<<"Disponibilite: "; cin>> disponible;
Media M(nom,type,disponible);
return M;
}

Ensuite, je voudrais utiliser les listes chaînées (avoir une liste chaînée de media), enregistrer mes données dans un fichier (je ne sais pas faire avec des classes) mais la aussi je galère...

Merci d'avance pour votre aide !

Dernière modification par djjudge (Le 26/07/2007, à 18:15)

Hors ligne

#2 Le 25/07/2007, à 21:31

obiwankennedy

Re : [C++] classe, objet... debutant inside !

Peux-tu expliquer ce qui ne va pas ?
On ne sais pas comment t'aider là.


Dans mes logiciels, j'écris ton nom.
SGNGD: SvgGd is Not GD
Rolisteam

Hors ligne

#3 Le 25/07/2007, à 22:05

djjudge

Re : [C++] classe, objet... debutant inside !

Tout d'abord, merci pour ta réponse!

Je souhaite enregistrer un media en ligne de commande (fonction à priori basique). Je sais le faire en définissant une structure  mais avec une classe je ne sais pas... et ceci est du aux constructeurs je crois.

je souhaiterais faire quelque chose comme ça (comme si je faisais avec un structure ) :

Media M = acquerirMedia();

Mais avec les classes, ce n'est pas possible...
Pourtant ça ne doit pas être bien sorcier créer un objet à l'aide d'un constructeur dans lequel on rentre ce que l'on a tapé au clavier:

Media M(nom,type,disponible);

j'espère avoir été plus explicite lol

Hors ligne

#4 Le 25/07/2007, à 22:46

obiwankennedy

Re : [C++] classe, objet... debutant inside !

Je pense avoir compris. Voilà ce que je te conseille pour débuter.

//media.h
class Media
{
    public: // méthodes

    Media(std::string nom, long type, bool disponible); // constructeur
    Media(); //constructeur par defaut
    bool estDispo();
    void modifierDisponibilite();
  

    // procedures d'affichage
    void afficherNomMedia();
    void afficherTypeMedia();
    void afficherDispo();
    void afficherEtat();

    private: // attributs

    std::string m_nomMedia;
    long m_typeMedia;
    bool m_disponible;
};

//Media.cpp

Media::Media()
{

int disponible;


cout<<"Nom du media: "; cin>> m_nom;
cout<<"Type: "; cin>>m_type;
cout<<"Disponibilite: "; cin>> disponible;

if(disponible==1)//je suis pas sur que l'ont puisse saisir un booléen donc je fais saisir 
//un entier
m_disponible=true;
else 
m_disponible=false;

}

en faite, en gros, tu demandes à l'objet de se créer lui même alors qu'il n'existe pas.
Par ma méthode, je crée un objet par le constructeur par défaut, c'est le constructeur qui demande la saisie des infos.
ainsi ton objet est créé et tu as rempli ses champs.

dans le main.cpp

Media monmedia();

monmedia.afficherNomMedia();
monmedia.afficherTypeMedia();
monmedia.afficherDispo();
monmedia.afficherEtat();

si tu veux faire un truc plus propre encore tu peux faire des accesseurs à tes champs de ta classe.

Dernière modification par obiwankennedy (Le 25/07/2007, à 23:02)


Dans mes logiciels, j'écris ton nom.
SGNGD: SvgGd is Not GD
Rolisteam

Hors ligne

#5 Le 25/07/2007, à 23:05

obiwankennedy

Re : [C++] classe, objet... debutant inside !

bon je te donne un solution simple à toi de l'améliorer.

Code de media.cpp

#include <iostream>
#include "media.h"
using namespace std;

media::media()
{
        int disponible;


cout<<"Nom du media: "; cin>> m_nom;
cout<<"Type: "; cin>>m_type;
cout<<"Disponibilite: "; cin>> disponible;

if(disponible==1)
m_disponible=true;
else
m_disponible=false;
}

void media::affichage()
{
        cout << m_nom << " "<< m_type <<  " " ;
        if(m_disponible)
        if(m_disponible)
        cout <<"est disponible" << endl;
        else
        cout << "n'est pas disponible" <<endl;


}

code de media.h

#include <iostream>
#include <string.h>
using namespace std;

class media
{
        string m_nom;
        long m_type;
        bool m_disponible;

public:
        media();
        void affichage();


};

code du main.cpp

#include "media.h"

int main ()
{

        media monmedia;


        monmedia.affichage();




}

ligne pour compiler tout celà.

g++ -Wall -c media.cpp
g++ -Wall -c main.cpp
g++ -Wall -o main main.o media.o

et pour executer "./main"

Dernière modification par obiwankennedy (Le 25/07/2007, à 23:06)


Dans mes logiciels, j'écris ton nom.
SGNGD: SvgGd is Not GD
Rolisteam

Hors ligne

#6 Le 26/07/2007, à 06:43

djjudge

Re : [C++] classe, objet... debutant inside !

Merci pour ta réponse détaillé, ça marche !!!

Il fallait donc faire cela dans le constructeur roll !

merci beaucoup, je n'ai plus qu'à continuer d'avancer le tout tongue

Dernière modification par djjudge (Le 26/07/2007, à 06:46)

Hors ligne

#7 Le 26/07/2007, à 07:32

obiwankennedy

Re : [C++] classe, objet... debutant inside !

De rien, si tu as d'autres question n'hesite pas.

Dernière modification par obiwankennedy (Le 26/07/2007, à 07:38)


Dans mes logiciels, j'écris ton nom.
SGNGD: SvgGd is Not GD
Rolisteam

Hors ligne

#8 Le 26/07/2007, à 18:19

djjudge

Re : [C++] classe, objet... debutant inside !

Alors j'ai réfléchi un peu aujourd'hui au sujet et je me suis dis que le meilleur moyen de gérer les emprunts, c'est de mettre ma classe personne en pointeur dans ma classe media.

// constructeur 
Media::Media(string nom, long type, bool disponible):m_nom(nom), m_type(type), m_disponible(disponible)
{
	m_personne = new Personne;
}

// destructeur 
Media::~Media()
{
    delete m_personne;
}

Maintenant, j'aimerais obtenir une liste chainée de media (mieux qu'un tableau ??) mais je ne sais pas le faire avec les classes.

Dernière modification par djjudge (Le 26/07/2007, à 19:39)

Hors ligne

#9 Le 26/07/2007, à 20:37

obiwankennedy

Re : [C++] classe, objet... debutant inside !

Regarde du coté de la classe vector de la STL ça s'utilise comment un tableau mais sans les problèmes d'ajouts et de suppressions. c'est le must..


Dans mes logiciels, j'écris ton nom.
SGNGD: SvgGd is Not GD
Rolisteam

Hors ligne

#10 Le 26/07/2007, à 21:27

djjudge

Re : [C++] classe, objet... debutant inside !

merci pour ton aide ! Je vais me pencher dessus alors...

Hors ligne