AccueilAccueil  PortailPortail  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  



Le deal à ne pas rater :
LEGO Icons 10331 – Le martin-pêcheur
35 €
Voir le deal

Partagez
 

 Cours #3 : Classes et methodes.

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : Précédent  1, 2
AuteurMessage
La Meche
Flibustier Lv.21
Flibustier Lv.21
La Meche


Masculin Age : 30
Inscrit le : 24/05/2008
Messages : 3234

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeDim 22 Mar 2009 - 17:09

Normal que cela marche pas
Déjà tu n'initialize pas @nombre !
Ensuite ce n'est pas dans begin qu'il faut le mettre mais dans ta classe
En dessous de @nombre tu met
Code:
@x = @nombre
if @x > 1
@x = "x"
else
@x = ""
end
Et dans ton return tu rajoutes
Code:
#{@x}
là ou il faut un x !

PS : Fait gaffe car si je met
Code:
achat2 = Achat.new("poire", 3, 60, 2)
Je vais me retrouver avec
Citation :
Vous achetez 3 poirex
Revenir en haut Aller en bas
pattes
Templier Lv.15
Templier Lv.15
pattes


Masculin Age : 30
Inscrit le : 29/11/2008
Messages : 1272

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeDim 22 Mar 2009 - 17:14

Je comprends mais pourquoi ne pourrais-je pas changer la variable @article à la place ? Et je n'initialize pas @nombre ? Il est bien dans intialize pourtant...
Revenir en haut Aller en bas
La Meche
Flibustier Lv.21
Flibustier Lv.21
La Meche


Masculin Age : 30
Inscrit le : 24/05/2008
Messages : 3234

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeDim 22 Mar 2009 - 19:09

Citation :
pourrais-je pas changer la variable @article à la place
Très très mauvaise idée !
Regarde, si tu met
Code:
achat2 = Achat.new(poire, 4, 60, 4)
et que dans intialize tu met
Code:
if @nombre > 1
@article = "couteaux"
Là tu écrase ta variable, donc que tu mettre "Poire" "Tomate" "Pêche" etc... tu achetera tj des couteaux Smile
Essai et tu verras !
Citation :
Il est bien dans intialize pourtant...
Oui mais initialize est une methode, donc elle n'est pas le sauf si on l'appel
Donc tu ne peux pas modifier quelque chose qui n'existe pas... encore !
Revenir en haut Aller en bas
pattes
Templier Lv.15
Templier Lv.15
pattes


Masculin Age : 30
Inscrit le : 29/11/2008
Messages : 1272

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeDim 22 Mar 2009 - 21:50

Je n'ai rien compris à l'initialize mais ça viendra plus tard ( je l'espère ).
Et pour la variable @article, je vais paraitre lourd mais j'aimerai quand même savoir ce qui est faux dans ce que j'ai écrit s'il vous plait alors que ton code avec le @x ressemble en tous points à ce que j'ai fait...
Revenir en haut Aller en bas
La Meche
Flibustier Lv.21
Flibustier Lv.21
La Meche


Masculin Age : 30
Inscrit le : 24/05/2008
Messages : 3234

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeLun 23 Mar 2009 - 15:04

Alors
ta classe Achat n'existe que si elle est appeler !
Sinon ton code n'est pas lu !
Donc tant que tu n'appelles pas
Code:
Achat.new(article,nombre,argent,cout)
Ta classe n'est pas u donc @article n'est pas défini !
Toi si j'ai bien compris pour tes "x" c'est de
Code:
@article = "couteaux" if @nombre > 1
Et bah lorsque tu appelles
Code:
achat1 = Achat.new(article,nombre,argent,cout)
achat1 prend comme valeur
Code:
Vous avez acheté x article
et si après tu met
Code:
@nombre > 1
@nombre = "couteaux"
de un ta variable n'existe pas (je crois :s) car c'est une @ et non une $ et en plus il faudrait que tu redefinisses achat1
Bref un bins complet qui au final... bug
Donc le mieux et de la faire dans ton intialize
Revenir en haut Aller en bas
MirainoHikari
Ex-Admin-Script
Ex-Admin-Script
MirainoHikari


Masculin Age : 42
Inscrit le : 26/05/2008
Messages : 2360

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeMar 24 Mar 2009 - 11:18

en effet, un IF ne donne pas de valeur, il ne fait que la vérifier. Hors, si elle n'existe pas encore, elle a la valeur NIL et son type est NIL. Donc du coup, l'interpréteur plantera systématiquement. Il doit y avoir une attribution de valeur initiale (initialize). D'ailleur, dans un initialize, ce n'est pas le temps de mettre des if ou des for. C'est juste une attribution de valeur. Je te conseille plutot de t'avoir une méthode spécialisée dans la forme plurielle que tu appèleras lors de la formation de ton string de retour.
Revenir en haut Aller en bas
http://mirainohikari.deviantart.com
pattes
Templier Lv.15
Templier Lv.15
pattes


Masculin Age : 30
Inscrit le : 29/11/2008
Messages : 1272

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeMar 24 Mar 2009 - 16:31

Merci beaucoup à vous deux, je pense avoir compris maintenant et je suis passé à la leçon 4. Quant à ton idée Miraino, merci.Je pourrai faire la méthode dans une classe (class Pluriel>class Achat)supérieure à la classe que je créerai.Merci encore !
Revenir en haut Aller en bas
Maysao
Illusionniste Lv.12
Illusionniste Lv.12
avatar


Masculin Age : 30
Inscrit le : 14/03/2009
Messages : 658

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeDim 7 Juin 2009 - 11:29

bon moi là j'ai un bug >< sur ça :

Code:
class Bateau
  def initalize(marque,modele,prix=10000)
    @marque=marque
    @modele=modele
    @prix=prix
    @vitesse=0
  end
 
  def set_vitesse(v=0)
    @vitesse=v
  end
 
  def get_vitesse
    return @vitesse
  end
 
  def accelerer(a)
    @vitesse+=a
  end
 
  def decelerer(a)
    acelerer(-a)
  end
 
  def to_s
    return"#{@marque} #{@modele} #{@prix}"
  end
 
 end
 
 begin
  bateau1=Bateau.new("fourwins","libérator",10000)
  bateau2=Bateau.new("fourwins","sundower",7000)
  bateau1.accelerer(110)
  bateau2.set_vitesse(60)
  print "#{bateau1} \n #{bateau2}"
 end
ça me met a la ligne 32 :
Argumenterror ocurred
Wrong number of arguments(3 for 0)

merci =)
Revenir en haut Aller en bas
La Meche
Flibustier Lv.21
Flibustier Lv.21
La Meche


Masculin Age : 30
Inscrit le : 24/05/2008
Messages : 3234

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeDim 7 Juin 2009 - 16:29

Citation :
def initalize
Tu es sur de pas avoir fait une connerie xD
Genre... Oublié un i ?
Revenir en haut Aller en bas
Maysao
Illusionniste Lv.12
Illusionniste Lv.12
avatar


Masculin Age : 30
Inscrit le : 14/03/2009
Messages : 658

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeDim 7 Juin 2009 - 17:00

Ah mince >< j'avai même pas vu xD Merci ^^
Revenir en haut Aller en bas
La Meche
Flibustier Lv.21
Flibustier Lv.21
La Meche


Masculin Age : 30
Inscrit le : 24/05/2008
Messages : 3234

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeDim 7 Juin 2009 - 17:20

T'inquiéte pas xD
Sa m'arrive très très très souvent d'oublié un i x]
Y'en a tellement xD
Revenir en haut Aller en bas
Maysao
Illusionniste Lv.12
Illusionniste Lv.12
avatar


Masculin Age : 30
Inscrit le : 14/03/2009
Messages : 658

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeDim 7 Juin 2009 - 18:39

xD bon ba ça va alors ^^
Encore merci =)
Revenir en haut Aller en bas
La Meche
Flibustier Lv.21
Flibustier Lv.21
La Meche


Masculin Age : 30
Inscrit le : 24/05/2008
Messages : 3234

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeMar 25 Aoû 2009 - 12:54

Double Post + Flood = 1 Averto
Revenir en haut Aller en bas
Gothor
Chevalier Lv.17
Chevalier Lv.17
Gothor


Masculin Age : 31
Inscrit le : 27/04/2008
Messages : 1835

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeMer 26 Aoû 2009 - 13:14

Bonjour, j'ai une petite question,
Voilà, dans le code donné à la fin du cours, nous avons:

Code:
def initialize(marque, modele, annee=1960)

D'après ce que je lis, on rend la variable annee égale à 1960, donc pourquoi, quand on appelle la voiture:

Code:
var=voiture.new("marque", "modele", 60)

L'année devient bien égale à 60 et non à 1960 =°

La valeur 1960 est bien donnée après la donnée 60, non? Oo
Revenir en haut Aller en bas
Sihn
Voyageur Lv.10
Voyageur Lv.10
Sihn


Masculin Age : 36
Inscrit le : 24/04/2009
Messages : 407

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeMer 26 Aoû 2009 - 13:30

Non. La valeur 1960 est une valeur "par défaut". annee devient donc un paramètre "facultatif".
En clair, tu peux très bien utiliser :
Code:
var=voiture.new("marque", "modele")
Dans cette exemple, l'année n'est pas saisie, et c'est donc 1960 qui sera utilisée.
Sinon, ce sera toujours la valeur saisie qui sera utilisée.
En revanche, marque et modele ne possède pas de valeur par défaut... et ne sont donc pas facultatif. Donc si tu oublies une de ces valeurs : bug!
Une dernière précision, enfin... Les paramètres facultatifs doivent toujours être placé le plus à droite possible.
Revenir en haut Aller en bas
http://www.google.fr/
Gothor
Chevalier Lv.17
Chevalier Lv.17
Gothor


Masculin Age : 31
Inscrit le : 27/04/2008
Messages : 1835

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeMer 26 Aoû 2009 - 13:34

Aaaaaah! D'accord! Merci ^^'

Dans ce cas, ça voudrait dire que je pourrais aussi très bien appeler ma méthode:

Code:
def initialize()

et la remplir depuis main avec:

Code:
var=voiture.new(marque="marque", modele="modèle")

???
Revenir en haut Aller en bas
Sihn
Voyageur Lv.10
Voyageur Lv.10
Sihn


Masculin Age : 36
Inscrit le : 24/04/2009
Messages : 407

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeMer 26 Aoû 2009 - 13:57

Houlla non... ^^;
...enfin presque, tu as inversé tes parenthèses.
Voici ce que tu pourrais faire, en effet :
Code:
def initialize(marque="marque", modele="modèle")
Puis :
Code:
var=voiture.new
Aussi, si tu ne rentres pas du tout de paramètres, alors même pas besoin de parenthèses! Wink (quoique, je me demande si ça ne marche pas aussi avec des parenthèses vides... Faudra que je teste, à l'occasion)
Revenir en haut Aller en bas
http://www.google.fr/
Gothor
Chevalier Lv.17
Chevalier Lv.17
Gothor


Masculin Age : 31
Inscrit le : 27/04/2008
Messages : 1835

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeMer 26 Aoû 2009 - 13:59

donc on peut pas remplir cette parenthèse comme on veut à partir du main... Ok,bon, très bien, merci beaucoup de tes réponses Wink
Revenir en haut Aller en bas
Sihn
Voyageur Lv.10
Voyageur Lv.10
Sihn


Masculin Age : 36
Inscrit le : 24/04/2009
Messages : 407

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeMer 26 Aoû 2009 - 14:05

Avec le def donné ci-dessus, tu peux très bien faire :
Code:
var=voiture.new
Mais aussi :
Code:
var=voiture.new("Fiat")
Mais encore
Code:
var=voiture.new("Kya", "Rio")
Mais également
Code:
var=voiture.new("marque", "DBZ-9000")
Revenir en haut Aller en bas
http://www.google.fr/
La Meche
Flibustier Lv.21
Flibustier Lv.21
La Meche


Masculin Age : 30
Inscrit le : 24/05/2008
Messages : 3234

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeMer 26 Aoû 2009 - 14:20

Citation :
quoique, je me demande si ça ne marche pas aussi avec des parenthèses vides... Faudra que je teste, à l'occasion
Regarde dans les methodes des scenes Wink
Toute appelle leur méthode parente avec des parenthèses... vides !
Revenir en haut Aller en bas
Gothor
Chevalier Lv.17
Chevalier Lv.17
Gothor


Masculin Age : 31
Inscrit le : 27/04/2008
Messages : 1835

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeMer 26 Aoû 2009 - 15:58

donc on peut pas rajouter d'autres variables juste à l'appel de la classe...

eeeet, si j'ai par exemple

Code:
def initialize(a, b, c, d, e)

je peux pas faire en sorte de donner une valeur à a,b,d,e mais pas c?
Revenir en haut Aller en bas
Sihn
Voyageur Lv.10
Voyageur Lv.10
Sihn


Masculin Age : 36
Inscrit le : 24/04/2009
Messages : 407

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeMer 26 Aoû 2009 - 16:17

Non. Sauf en mettant c en dernière position, et en lui donnant une valeur par défaut, donc. :p
Revenir en haut Aller en bas
http://www.google.fr/
Gothor
Chevalier Lv.17
Chevalier Lv.17
Gothor


Masculin Age : 31
Inscrit le : 27/04/2008
Messages : 1835

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeMer 26 Aoû 2009 - 16:42

Ah, une dernière question, peut-on faire en sorte que:

Code:
def initialize(@variable, @var, @v)
Revenir en haut Aller en bas
Sihn
Voyageur Lv.10
Voyageur Lv.10
Sihn


Masculin Age : 36
Inscrit le : 24/04/2009
Messages : 407

Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitimeMer 26 Aoû 2009 - 16:44

Non, mais tu peux faire :
Code:
def initialize(variable, var, v)
  @variable = variable
  @var = var
  @v = v
end
Revenir en haut Aller en bas
http://www.google.fr/
Contenu sponsorisé




Cours #3 : Classes et methodes. - Page 2 Empty
MessageSujet: Re: Cours #3 : Classes et methodes.   Cours #3 : Classes et methodes. - Page 2 Icon_minitime

Revenir en haut Aller en bas
 

Cours #3 : Classes et methodes.

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 2 sur 2Aller à la page : Précédent  1, 2

 Sujets similaires

-
» [Astuces] Trouver de l'inspiration, autres méthodes moins connues !
» [VX.Ace] Unique Classes
» Créer ses attaques et classes.
» Classes augmentant les statistiques
» Concours Event - La fin des classes

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Apprentissage :: Archives des anciens cours :: Cours de RGSS2-
Créer un forum | ©phpBB | Forum gratuit d'entraide | Signaler un abus | Cookies | Forum gratuit