Class en c++

Résolu/Fermé
yoshis94 Messages postés 9 Date d'inscription mercredi 31 août 2005 Statut Membre Dernière intervention 14 septembre 2005 - 14 sept. 2005 à 10:10
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 15 sept. 2005 à 13:13
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.

4 réponses

yoshis94 Messages postés 9 Date d'inscription mercredi 31 août 2005 Statut Membre Dernière intervention 14 septembre 2005
14 sept. 2005 à 11:13
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
0
blurk Messages postés 486 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 15 mars 2009 160
14 sept. 2005 à 13:10
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 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.
0
yoshis94 Messages postés 9 Date d'inscription mercredi 31 août 2005 Statut Membre Dernière intervention 14 septembre 2005
14 sept. 2005 à 14:23
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.
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
14 sept. 2005 à 15:18
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(){...} ?
0
yoshis94 Messages postés 9 Date d'inscription mercredi 31 août 2005 Statut Membre Dernière intervention 14 septembre 2005
14 sept. 2005 à 17:08
merci pour ta reponse :-)!

mais lorsque que je compile j'obtiens bien la premiere partie saisie mais apres je n'arrive pas a obtenir le réaffichage des informations saisie.

je vais etudier ca encore merci!
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297 > yoshis94 Messages postés 9 Date d'inscription mercredi 31 août 2005 Statut Membre Dernière intervention 14 septembre 2005
15 sept. 2005 à 13:13
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.
0