| Cours #3 : Classes et methodes. | |
|
|
Auteur | Message |
---|
Flibustier Lv.21
Age : 30 Inscrit le : 24/05/2008 Messages : 3234
| Sujet: Re: Cours #3 : Classes et methodes. Dim 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
|
|
| |
Templier Lv.15
Age : 30 Inscrit le : 29/11/2008 Messages : 1272
| Sujet: Re: Cours #3 : Classes et methodes. Dim 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... |
|
| |
Flibustier Lv.21
Age : 30 Inscrit le : 24/05/2008 Messages : 3234
| Sujet: Re: Cours #3 : Classes et methodes. Dim 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 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 ! |
|
| |
Templier Lv.15
Age : 30 Inscrit le : 29/11/2008 Messages : 1272
| Sujet: Re: Cours #3 : Classes et methodes. Dim 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... |
|
| |
Flibustier Lv.21
Age : 30 Inscrit le : 24/05/2008 Messages : 3234
| Sujet: Re: Cours #3 : Classes et methodes. Lun 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 |
|
| |
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
| Sujet: Re: Cours #3 : Classes et methodes. Mar 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. |
|
| |
Templier Lv.15
Age : 30 Inscrit le : 29/11/2008 Messages : 1272
| Sujet: Re: Cours #3 : Classes et methodes. Mar 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 ! |
|
| |
Illusionniste Lv.12
Age : 30 Inscrit le : 14/03/2009 Messages : 658
| Sujet: Re: Cours #3 : Classes et methodes. Dim 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 =) |
|
| |
Flibustier Lv.21
Age : 30 Inscrit le : 24/05/2008 Messages : 3234
| Sujet: Re: Cours #3 : Classes et methodes. Dim 7 Juin 2009 - 16:29 | |
| - Citation :
- def initalize
Tu es sur de pas avoir fait une connerie xD Genre... Oublié un i ? |
|
| |
Illusionniste Lv.12
Age : 30 Inscrit le : 14/03/2009 Messages : 658
| Sujet: Re: Cours #3 : Classes et methodes. Dim 7 Juin 2009 - 17:00 | |
| Ah mince >< j'avai même pas vu xD Merci ^^ |
|
| |
Flibustier Lv.21
Age : 30 Inscrit le : 24/05/2008 Messages : 3234
| Sujet: Re: Cours #3 : Classes et methodes. Dim 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 |
|
| |
Illusionniste Lv.12
Age : 30 Inscrit le : 14/03/2009 Messages : 658
| Sujet: Re: Cours #3 : Classes et methodes. Dim 7 Juin 2009 - 18:39 | |
| xD bon ba ça va alors ^^ Encore merci =) |
|
| |
Flibustier Lv.21
Age : 30 Inscrit le : 24/05/2008 Messages : 3234
| Sujet: Re: Cours #3 : Classes et methodes. Mar 25 Aoû 2009 - 12:54 | |
| Double Post + Flood = 1 Averto |
|
| |
Chevalier Lv.17
Age : 31 Inscrit le : 27/04/2008 Messages : 1835
| Sujet: Re: Cours #3 : Classes et methodes. Mer 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 |
|
| |
Voyageur Lv.10
Age : 36 Inscrit le : 24/04/2009 Messages : 407
| Sujet: Re: Cours #3 : Classes et methodes. Mer 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. |
|
| |
Chevalier Lv.17
Age : 31 Inscrit le : 27/04/2008 Messages : 1835
| Sujet: Re: Cours #3 : Classes et methodes. Mer 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") ??? |
|
| |
Voyageur Lv.10
Age : 36 Inscrit le : 24/04/2009 Messages : 407
| Sujet: Re: Cours #3 : Classes et methodes. Mer 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! (quoique, je me demande si ça ne marche pas aussi avec des parenthèses vides... Faudra que je teste, à l'occasion) |
|
| |
Chevalier Lv.17
Age : 31 Inscrit le : 27/04/2008 Messages : 1835
| Sujet: Re: Cours #3 : Classes et methodes. Mer 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 |
|
| |
Voyageur Lv.10
Age : 36 Inscrit le : 24/04/2009 Messages : 407
| Sujet: Re: Cours #3 : Classes et methodes. Mer 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") |
|
| |
Flibustier Lv.21
Age : 30 Inscrit le : 24/05/2008 Messages : 3234
| Sujet: Re: Cours #3 : Classes et methodes. Mer 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 Toute appelle leur méthode parente avec des parenthèses... vides ! |
|
| |
Chevalier Lv.17
Age : 31 Inscrit le : 27/04/2008 Messages : 1835
| Sujet: Re: Cours #3 : Classes et methodes. Mer 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? |
|
| |
Voyageur Lv.10
Age : 36 Inscrit le : 24/04/2009 Messages : 407
| Sujet: Re: Cours #3 : Classes et methodes. Mer 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 |
|
| |
Chevalier Lv.17
Age : 31 Inscrit le : 27/04/2008 Messages : 1835
| Sujet: Re: Cours #3 : Classes et methodes. Mer 26 Aoû 2009 - 16:42 | |
| Ah, une dernière question, peut-on faire en sorte que: - Code:
-
def initialize(@variable, @var, @v) |
|
| |
Voyageur Lv.10
Age : 36 Inscrit le : 24/04/2009 Messages : 407
| Sujet: Re: Cours #3 : Classes et methodes. Mer 26 Aoû 2009 - 16:44 | |
| Non, mais tu peux faire : - Code:
-
def initialize(variable, var, v) @variable = variable @var = var @v = v end |
|
| |
| Sujet: Re: Cours #3 : Classes et methodes. | |
| |
|
| |
| Cours #3 : Classes et methodes. | |
|