snpier wolf
Messages postés216Date d'inscriptionsamedi 11 août 2007StatutMembreDernière intervention30 mai 2011
-
5 févr. 2008 à 01:47
snpier wolf
Messages postés216Date d'inscriptionsamedi 11 août 2007StatutMembreDernière intervention30 mai 2011
-
8 févr. 2008 à 17:06
bonjour voila j'ais commancer un peux a programmé avec les class.
et j'ais un problème que je n'arrive pas à résoudre.
voila le bou de code
class command
{
public :
string ligne;
string page;
char* sName ;
void ouvrire()
{
ifstream fichier(sName);
}
void lire()
{
while ( getline( fichier, ligne )){ page=page+entre+ligne;}
cout<<page;
}
protected:
string entre;
};
mon problème est symple il me dis que fichier n'ais pas déclaré a la ligne "while (getline(fichier,ligne)){page=page+entre+ligne;}" .
alors je me suis dis que sais peux être a cause qui se trouve dans void ouvrire, donc je l'ais mi avant ouvrire comme ceci :
gamemonde
Messages postés336Date d'inscriptionsamedi 9 août 2003StatutMembreDernière intervention 9 juillet 20112 5 févr. 2008 à 02:06
1 -tu utilises pas de constructeur ni de destructeur et tu utilises des pointeurs
2 - ouvrire -> ouvrir
3 - tu initialise un ifstream en local mais ta classe ne le connais pas tu aurais du mettre dans le privte : ifstream & m_oFile;
4 - une classe sert de regroupement et de protection tu mets tout en public sans proteger tes données mets tes variables en private
et utilise des get ou set pour la manipulation .
donc dans la methode ouvrir
tu fais
oFile.open(sName);
sName il recoit ces données ou? moi j'ai encore des erreurs ensuite mais plus le temps de verifié cela .
gamemonde
Messages postés336Date d'inscriptionsamedi 9 août 2003StatutMembreDernière intervention 9 juillet 20112 5 févr. 2008 à 02:17
tu permets a l'utilisateur de modifié des données directement sans passé par ta classe je crois que tu devrais trouvé de l'information sur le premier modele d'une classe soit : l'encapsulation
regarde sur internet tu comprendras mieux comment doit être creer une classe
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 5 févr. 2008 à 22:00
Prendre l'utilisateur de la classe (qui est, soit dit en passent, un programmeur) pour un idiot total est la plus grande idioties jamais inventée. Quand on sait programmer, on ne devrait même pas avoir à connaitre ce qu'est l'encapsulation.
Voilà, ce n'était ici que mon simple point de vue sur l'encapsulation. Je ne juge personne.
Ensuite, [auteur/SNPIERWOLF/1125650.aspx snpier wolf], ce n'est pas la première fois qu'on te le dis. Il faut ABSOLUMENT que tu ouvres un livre et comprenne les principes avant de les appliquer. Sinon, tu tourneras sans cesse en rond.
gamemonde
Messages postés336Date d'inscriptionsamedi 9 août 2003StatutMembreDernière intervention 9 juillet 20112 5 févr. 2008 à 23:14
ou quelque part il est ecrit que je l'est pris pour un idiot attention je lui donnais le nom du procédé qui permet de créer une classe en utilisant les données d'une maniere acceptable .
a moin que j'ai mal compris ton point de vue .
la classe permet justement à empecher l'utilisateur de modifie les données directement sans passer par la classe.
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 5 févr. 2008 à 23:23
Non non je n'est pas dis que tu l'avais traité d'idiot.
C'est le concept de tout cacher au programmeur utilisateur et passer par de couteux appels à des méthodes plutôt qu'un accès direct que je trouve idiot.
L'utilisateur n'est pas un crétin quand même. Il doit savoir ce qu'il fait, quand le faire et où le faire. Si il n'est pas capable de gérer convenablement un programme sans passer pour toute une surcouche inutile, peut-on l'appeler un programmeur ?
gamemonde
Messages postés336Date d'inscriptionsamedi 9 août 2003StatutMembreDernière intervention 9 juillet 20112 5 févr. 2008 à 23:31
a bien ok je comprend malheureusement non le programmeur est pas forcement cretin mais peux etre ignorant
pour une simple classe je comprend mais exemple permettre de pouvoir utilisé toute les variables de la classe string
une personne voulant le faire croyant que ca va resoudre quelque chose . peux faire cracher le programme
meme chose si tu as une variable membre appeller m_iSize et elle est un retour a une variable qui a été alouer ex : un tableau
un crache peux survenir et pourtant la compilation passe .
meme chose avec la classe fstream .
meme le mfc pareil .
au moins si tu te dis bof pas grave fais la validation la ou ta variable sera utilisé sur celui ci : ouvrir
mais bon je crois que cest un debat qui a pas lieu d'etre mais je trouve que c'est une bonne pratique de programmation
surtout avant de passer
au deuxieme : heritage et au 3er polymorphisme
snpier wolf
Messages postés216Date d'inscriptionsamedi 11 août 2007StatutMembreDernière intervention30 mai 2011 5 févr. 2008 à 23:34
si je commance a programmé avec des class sais bien parce que je suis au class dans le livre, mais je ne comprends pas tout a se qu'il dise alors j'essaie. et comme je n'arrivais toujours pas a comprendre mm en regardan sur le net j'ais posé la question dsl si elle était si idiote.
merci gamemonde sa marche mnt...
gamemonde
Messages postés336Date d'inscriptionsamedi 9 août 2003StatutMembreDernière intervention 9 juillet 20112 5 févr. 2008 à 23:37
la question etais pas idiote car il faut savoir que fstream enpeche le constructeur par copie il ne permet que l'envoi par reference
c'est pour cela que ca marchait pas
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 5 févr. 2008 à 23:39
Et bien désolé mais quand je vois que tu déclares fichier en local dans ouvrir puis tu essais de l'utiliser dans lire, je me dis que tu n'as pas encore compris la base.
(Oui, j'ai bien vue que tu avais corrigé par la suite).
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 6 févr. 2008 à 13:07
[auteur/SAKINGDOM/617077.aspx SAKingdom]
"Quand on sait programmer, on ne devrait même pas avoir à connaitre ce qu'est l'encapsulation."
=> Justement si. Ton point de vue est compréhensible, mais tu oublies que l'encapsulation peut être très utile lors du debuggage. Donc "quand on sait programmer", on doit mettre en oeuvre des methodes pour faciliter le debug.
gamemonde
Messages postés336Date d'inscriptionsamedi 9 août 2003StatutMembreDernière intervention 9 juillet 20112 6 févr. 2008 à 23:10
attention regarde la definition de classe c'est l'encapsultation des données et la protection de celle ci
deplus elle ne reste pas toujours en mode debug . mais il peux y avoir d'autre programmeur qui vont l'utilisé
voir justement mon dernier message qui contient des exemples de classe qui doivent etre securisé
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 7 févr. 2008 à 00:26
Je sais ce qu'est le principe d'encapsulation, où et comment on devrait l'appliquer.
Ce principe aurait pu avoir du bon si on avait continué à apprendre au programmeur à être stricte et non à croire que c'est à la classe de tout faire le travail.
Je sais de quoi je parle ici. Je suis actuellement des cours en programmation (Java) et à entendre parler notre prof, l'encapsulation est un dieu. Tout ce qui va à l'encontre de l'encapsulation doit être banni et patati et patata.
De la manière dont on enseigne la programmation aujoud'hui, l'encapsulation, c'est
considérer l'utilisateur de la classe comme un incapable analphabet.
Pour ma part, je considère ce "débat" clos. Il est clair que chacun restera sur sa position pour des raisons tout à fait compréhensible. Il n'est donc pas très utile de continuer davantage.
Bonne continuation.
gamemonde
Messages postés336Date d'inscriptionsamedi 9 août 2003StatutMembreDernière intervention 9 juillet 20112 7 févr. 2008 à 00:33
ok oui on a nos opinion juste un point on est d'accord que quand on programme et ensuite on nous enseigne on remarque que les profs on tendance a nous oubligé a faire des choses en disant on doit faire ci et cela encore la c'est que le prof a ses propres concept sur la prog .
mais bon une fonction est comme un manipulateur de variable membre on voit pas le code qui a derriere ca fais pas de nous des idiots pour rien . c'est juste pour s'assurer que l'utilisateur de la classe modifie la variable et lui cause une erreur .
mais bon bonne continuation a toi aussi je suis sur on va se reparler
snpier wolf
Messages postés216Date d'inscriptionsamedi 11 août 2007StatutMembreDernière intervention30 mai 2011 8 févr. 2008 à 02:33
lol avec si peut d'info sa va etre dur de savoir.
voila je start mon prog la tout va bien après je charge le fichier sa va toujours mais quand je fais la saisie avec modif et que je tape enter sa plante et sa sa me le fait a chaque foix que j'utilise cin>>
vous avez une idé de la chose?
snpier wolf
Messages postés216Date d'inscriptionsamedi 11 août 2007StatutMembreDernière intervention30 mai 2011 8 févr. 2008 à 17:06
okok merci j'ai compris il faut pas mettre char* cMod; mais char cMod[MAX_PATH];
car il je voulai pas un pointeur mais just une tableau qui qui prends la saisie pour modifié le fichier.
merci encors