Class en c++
Résolu
yoshis94
Messages postés
9
Statut
Membre
-
Char Snipeur Messages postés 10112 Statut Contributeur -
Char Snipeur Messages postés 10112 Statut Contributeur -
bonjour j'avais un poste assez similaire mais pas avec la fonction class;
Voila j'aimerais saisir des infos sur mon ordinateur du type:marque taille ecran...,et les ranger dans une class a.ordinateur mais voila je ne comprend pas du tout comment je doit faire j'ai ecris un code que voila:
#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
class ordinateur {public:
char marque[10];char model[10];float proscesseur;int ram;int dd;char ecran[10];int taille;
void saisie();
void affichage();
};
ordinateur a;
int main ()
{
a.saisie();
a.affichage();
return 0;
}
void affichage()
{
cout<<"les informations saisie sont: "<<endl;
cout<<a.marque<<endl;
cout<<a.model<<endl;
cout<<a.proscesseur;
cout<<a.ram<<endl;
cout<<a.dd<<endl;
cout<<a.ecran<<endl;
cout<<a.taille<<endl;
}
void saisie()
{
cout<<"Quel est la marque de l'ordinateur: "<<endl;
cin>> a.marque;
cout<<endl<<"le model:"<<endl;
cin>>a.model;
cout<<endl<<"la vitesses du proscesseur:"<<endl;
cin>>a.proscesseur;
cout<<endl<<"quel est la taille de votre memoire vive en MO:"<<endl;
cin>>a.ram;
cout<<endl<<"la taille de votre disque dur en GO:"<<endl;
cin>>a.dd;
cout<<endl<<"la marque de votre ecran:"<<endl;
cin>>a.ecran;
cout<<endl<<"et ca taille en pouce:"<<endl;
cin>>a.taille;
}
NE PAS TENIR COMPTE DES INCLUDE!
quand je compile j'ai une erreur :
/usr/bin/ld: Undefined symbols:
ordinateur::saisie()
ordinateur::affichage()
collect2: ld returned 1 exit status
enfin bon j'essaye de comprendre les class et je n'avancepas.
Voila j'aimerais saisir des infos sur mon ordinateur du type:marque taille ecran...,et les ranger dans une class a.ordinateur mais voila je ne comprend pas du tout comment je doit faire j'ai ecris un code que voila:
#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
class ordinateur {public:
char marque[10];char model[10];float proscesseur;int ram;int dd;char ecran[10];int taille;
void saisie();
void affichage();
};
ordinateur a;
int main ()
{
a.saisie();
a.affichage();
return 0;
}
void affichage()
{
cout<<"les informations saisie sont: "<<endl;
cout<<a.marque<<endl;
cout<<a.model<<endl;
cout<<a.proscesseur;
cout<<a.ram<<endl;
cout<<a.dd<<endl;
cout<<a.ecran<<endl;
cout<<a.taille<<endl;
}
void saisie()
{
cout<<"Quel est la marque de l'ordinateur: "<<endl;
cin>> a.marque;
cout<<endl<<"le model:"<<endl;
cin>>a.model;
cout<<endl<<"la vitesses du proscesseur:"<<endl;
cin>>a.proscesseur;
cout<<endl<<"quel est la taille de votre memoire vive en MO:"<<endl;
cin>>a.ram;
cout<<endl<<"la taille de votre disque dur en GO:"<<endl;
cin>>a.dd;
cout<<endl<<"la marque de votre ecran:"<<endl;
cin>>a.ecran;
cout<<endl<<"et ca taille en pouce:"<<endl;
cin>>a.taille;
}
NE PAS TENIR COMPTE DES INCLUDE!
quand je compile j'ai une erreur :
/usr/bin/ld: Undefined symbols:
ordinateur::saisie()
ordinateur::affichage()
collect2: ld returned 1 exit status
enfin bon j'essaye de comprendre les class et je n'avancepas.
4 réponses
bon dite moi si j'ai faux dans ma demarche:
on crée une class:
class nom_de_la_class(public: element de la class;..;...;
public:
fonctions_membres de la class()
{
elements de la fonction
}
);
definition d'un element de la class:
nom_de_la_class element;
fonction main()
{
appel d'une fonction membre:
element.fonction_membre();
}
est-ce que ma methode ce tiens ou non est-ce que je dois revoir ma copie
???
merci pour vos futur reponses
on crée une class:
class nom_de_la_class(public: element de la class;..;...;
public:
fonctions_membres de la class()
{
elements de la fonction
}
);
definition d'un element de la class:
nom_de_la_class element;
fonction main()
{
appel d'une fonction membre:
element.fonction_membre();
}
est-ce que ma methode ce tiens ou non est-ce que je dois revoir ma copie
???
merci pour vos futur reponses
1 / où est le prototype ?
2/ où sont déclarées les instances de model, ram, ecran, dd, taille ?
3/ quel est l'intérêt à faire hériter une classe des propriétés
de simples variables (int char float) n'étant pas des objets
mais des types intégrés au langage ?
4/ même en admetant que ce soient des objets, un objet n'hérite pas d'instances mais de types
5/ qu'est-ce qu'un type et qu'est ce qu'une instance ?
int est le type de variable, et a est un instance de type integer
class déclare un type d'objet
de toute évidence, il faut que tu apprennes ce que sont
- le type
- l'instance
afin de pouvoir comprendre
- l'encapsulation
qui est la première des 3 étapes pour comprendre l'objet.
2/ où sont déclarées les instances de model, ram, ecran, dd, taille ?
3/ quel est l'intérêt à faire hériter une classe des propriétés
de simples variables (int char float) n'étant pas des objets
mais des types intégrés au langage ?
4/ même en admetant que ce soient des objets, un objet n'hérite pas d'instances mais de types
5/ qu'est-ce qu'un type et qu'est ce qu'une instance ?
int a;
int est le type de variable, et a est un instance de type integer
class déclare un type d'objet
de toute évidence, il faut que tu apprennes ce que sont
- le type
- l'instance
afin de pouvoir comprendre
- l'encapsulation
qui est la première des 3 étapes pour comprendre l'objet.
merci pour ta reponse
je me replonge dans mon bouquin pour essayé de bien saisir ce qu'est un objet car la je rame.
lorque je serai un peu plus pres je referais surface.
je me replonge dans mon bouquin pour essayé de bien saisir ce qu'est un objet car la je rame.
lorque je serai un peu plus pres je referais surface.
je te propose:
class ordinateur {
char marque[10];char model[10];float proscesseur;int ram;int dd;char ecran[10];int taille;
public:
void saisie();
void affichage();
};
ordinateur a;
int main ()
{
a.saisie();
a.affichage();
return 0;
}
void ordinateur::affichage()
{
cout<<"les informations saisie sont: "<<endl;
cout<<marque<<endl;// lignes modifier : plus de "a."
cout<<model<<endl;
cout<<proscesseur;
cout<<ram<<endl;
cout<<dd<<endl;
cout<<ecran<<endl;
cout<<taille<<endl;
}
void ordinateur::saisie()
{
cout<<"Quel est la marque de l'ordinateur: "<<endl;
cin>> marque;// lignes modifier : plus de "a."
cout<<endl<<"le model:"<<endl;
cin>>model;
cout<<endl<<"la vitesses du proscesseur:"<<endl;
cin>>proscesseur;
cout<<endl<<"quel est la taille de votre memoire vive en MO:"<<endl;
cin>>ram;
cout<<endl<<"la taille de votre disque dur en GO:"<<endl;
cin>>dd;
cout<<endl<<"la marque de votre ecran:"<<endl;
cin>>ecran;
cout<<endl<<"et ca taille en pouce:"<<endl;
cin>>taille;
}
voila comment je corrige ton programme. J'ai déplacer le public pour qu'on ne puisse pas acceder directement aux donnés.
l'implementation d'une méthode se fait en précisant la portée car si tu as :
class A{void saisie();...}
et class B{void saisie();...}
comment le compilo fait pour savoir à qui corespond l'implémentation
void saisie(){...} ?
class ordinateur {
char marque[10];char model[10];float proscesseur;int ram;int dd;char ecran[10];int taille;
public:
void saisie();
void affichage();
};
ordinateur a;
int main ()
{
a.saisie();
a.affichage();
return 0;
}
void ordinateur::affichage()
{
cout<<"les informations saisie sont: "<<endl;
cout<<marque<<endl;// lignes modifier : plus de "a."
cout<<model<<endl;
cout<<proscesseur;
cout<<ram<<endl;
cout<<dd<<endl;
cout<<ecran<<endl;
cout<<taille<<endl;
}
void ordinateur::saisie()
{
cout<<"Quel est la marque de l'ordinateur: "<<endl;
cin>> marque;// lignes modifier : plus de "a."
cout<<endl<<"le model:"<<endl;
cin>>model;
cout<<endl<<"la vitesses du proscesseur:"<<endl;
cin>>proscesseur;
cout<<endl<<"quel est la taille de votre memoire vive en MO:"<<endl;
cin>>ram;
cout<<endl<<"la taille de votre disque dur en GO:"<<endl;
cin>>dd;
cout<<endl<<"la marque de votre ecran:"<<endl;
cin>>ecran;
cout<<endl<<"et ca taille en pouce:"<<endl;
cin>>taille;
}
voila comment je corrige ton programme. J'ai déplacer le public pour qu'on ne puisse pas acceder directement aux donnés.
l'implementation d'une méthode se fait en précisant la portée car si tu as :
class A{void saisie();...}
et class B{void saisie();...}
comment le compilo fait pour savoir à qui corespond l'implémentation
void saisie(){...} ?
Ce que je fait dans ce cas la, pour débugger, c'est de tout mettre en public. Comme ça, tu peux faire un cout<<a.X et vérifier que c'est bien la bonne valeur qui a été prise.rajoute éventuellement de cout dans la fonction saisie.
Une idée, tu peux aussi surcharger l'opérateur '<<' pour pouvoir faire directement : cout<<a
ce qui permet d'avoir quelque chose de plus utilisable pour quelqu'un qui utiliserai ta classe., de te familiariser avec la notion de fonction amie, et de flux.
ostream& operator<<(ostream&, ordinateur);
bonne chance pour la suite de ton prog.
Une idée, tu peux aussi surcharger l'opérateur '<<' pour pouvoir faire directement : cout<<a
ce qui permet d'avoir quelque chose de plus utilisable pour quelqu'un qui utiliserai ta classe., de te familiariser avec la notion de fonction amie, et de flux.
ostream& operator<<(ostream&, ordinateur);
bonne chance pour la suite de ton prog.