From: RichardOnRails Date: 2008-08-28T10:10:24+09:00 Subject: Re: Access to method in superclass On Aug 26, 11:19 am, David Colque wrote: > RichardOnRails wrote: > > On Aug 25, 2:35 pm, David Colque wrote: > >> LIKE ACCEDING TO THE METHOD " setSpeed" OF THE SUPERCLASS "Airplane". > >> Thak you > > >> Attachments:http://www.ruby-forum.com/attachment/2606/prueba1.rb > > >> -- > >> Posted viahttp://www.ruby-forum.com/. > > > Hi David, > > > Your access to Airplane::setSpeed is working. > > > On line 55, you create an Airplane::Jet instance with @speed=0 > > On line 56, you invoke that setSpeed on the instance with argument 422 > > so the method on line 38 is called with 422 > > which in turn invokes Airplane::setSpeed with the argument > > 422*Multiplier, of 844, > > which is then set in @speed of the Airplane::Jet instance > > On line 57, you print out the 844 > > > Then on line 57, you invoke > > > Line 56 set the Jet's speed to 0 > > Line 57 with argument 422 set the Jet's speed to 422*Multiplier, or > > 844 and printed it > > > Line 60 invoked accelerate, which in turn invoked > > Line 45 setSpeed(getSpeed()*2) > > getSpeed returned your 844, which then got doubled to 1688 > > which was used as the argument to setSpped, which applied the > > Multiplier > > so the speed was set to 3376 > > Line 61 used getSpeed to retrieve the 3376, which then got printed. > > > All this is confirmed by lines 2 and 2 of your output. > > > HTH, > > Richard > > class Jet < Airplane > MULTIPLIER = 2 > def initialize > super > end > def setSpeed(speed) > super(speed*MULTIPLIER) > end > def accelerate > # TROUBLE!!!!!!!! > # LIKE ACCEDING TO THE METHOD " setSpeed" > # OF THE SUPERCLASS "Airplane" > Airplane::setSpeed(getSpeed()*2) > end > > end > > At the time of making it run it leaves the error>ruby prueba1.rb > > prueba1.rb:28:in `accelerate': undefined method `setSpeed' for > Airplane:Class (NoMethodError) > from prueba1.rb:43:in `principal' > from prueba1.rb:57 > 212 > 844>Exit code: 1 > > -- > Posted viahttp://www.ruby-forum.com/. Hi David, I can’t see what’s wrong on your program/machine. I ran the code you posted unchanged and got the following output: 212 844 3376 54016 216064 864256 1696 The first question I’d ask is, what version of Ruby/OS are you running ... though I doubt that will be too helpful? I’m running: ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32] WinXP-Pro/SP2 The second question is, are you up to cleaning up code and debugging it? At http://www.pastie.org/261401, I posted a version of your program that is closer to what I understand to be “The Ruby Way”. I don’t understand your purpose, so I can’t do anymore. I hope this version runs on your machine as it does on mine. I also hope it leads to a clearer understanding of your program flow. The version I posted doesn’t produce the same numbers that your original did, but I don’t want to spend anymore time on it. As I said, my goal is to help you get closer to “The Ruby Way.” Best wishes, Richard