[#408634] How do I make lots of classes aware of each other? — "Andrew S." <lists@...>

I'm apparently missing something fundamental in my knowledge of classes

10 messages 2013/07/02

[#408712] Ruby web service with REST support — "Shubhada S." <lists@...>

Hi All,

17 messages 2013/07/05

[#408812] create variables depending on counter — stefan heinrich <lists@...>

Hi community,

21 messages 2013/07/09

[#408854] execute commands within SMTP email code: send content in variables and not actual variables — dJD col <lists@...>

I am trying to send an email using the code below. I am able to send the

9 messages 2013/07/10

[#409031] tap { break } idiom deserves its own Kernel method? — Andy Lowry <lists@...>

I use this idiom from time to time:

13 messages 2013/07/22

[#409072] Link To Masses Of External Data In Openoffice? — "Austin J." <lists@...>

This is what I want to do.

19 messages 2013/07/23
[#409102] Re: Link To Masses Of External Data In Openoffice? — Tamara Temple <tamouse.lists@...> 2013/07/24

[#409103] Re: Link To Masses Of External Data In Openoffice? — "Austin J." <lists@...> 2013/07/25

tamouse m. wrote in post #1116598:

[#409122] Re: Link To Masses Of External Data In Openoffice? — Tamara Temple <tamouse.lists@...> 2013/07/26

[#409142] Re: Link To Masses Of External Data In Openoffice? — "Austin J." <lists@...> 2013/07/26

tamouse m. wrote in post #1116750:

[#409073] class <=> module — Bráulio Bhavamitra <lists@...>

Hello all,

17 messages 2013/07/23

[#409104] Ruby newbie question on Methods (NoMethoderror) — "Crispian A." <lists@...>

I have recently started learning ruby and so I am writing a small little

10 messages 2013/07/25

[#409170] Working through Ch.10 for learning to program 2.0 (Chris Pine) — JD JD <lists@...>

So, I have been working through this book, and have been doing ok up

33 messages 2013/07/28
[#409195] Re: Working through Ch.10 for learning to program 2.0 (Chris Pine) — Harry Kakueki <list.push@...> 2013/07/29

I tried this and came up with a one-liner that seems to do it. It sorts the

[#409258] WATIR - ScriptError popup on IE - Unable to get rid of! — Graeme Halls <lists@...>

I am new to Ruby & Watir, and I am having a nightmare with IE and Script

11 messages 2013/07/31

Re: Designing a Cabinet class

From: Jes俍 Gabriel y Gal疣 <jgabrielygalan@...>
Date: 2013-07-02 12:37:55 UTC
List: ruby-talk #408650
On Tue, Jul 2, 2013 at 1:26 PM, Mike Vezzani <lists@ruby-forum.com> wrote:
> So here is my most recent work. I decided to completely set aside the
> idea of class Cabinet for now, and I have since designed a working class
> Drawer with the desired functionality. It works. I have run the program
> through and through and it accomplishes what I set out to do with a
> Drawer.
>
> My next challenge is understanding how to make a drawer object interact
> with its parent object Chest_of_drawers. I want to be able to write the
> following code:
>
> chest_of_drawers = Chest_of_drawers.new(4)
>
> and have a new chest of drawers object that contains 4 drawers. This
> goal pushes me past my understanding. I have no clue where to go next.
> Once again, sample code is welcomed, but ideally I'd like to have an
> explanation or a direction to some materials that I can read, and then
> try (and likely fail) on my own first before someone hands me ready made
> code that will accomplish what I'm looking for. I find that trial and
> error tend to teach me much more effectively than simply reading through
> correct code (though I see the value in that as well.)

Create a new class which contains the drawers. In the initialize
method, you can create that number of drawers and store them in an
instance variable (start with @), for example in an array. You can
then create a method in the Chest_of_drawers class to get at each of
the drawers by index (0 to 3). By the way, the convention in Ruby is
to use CamelCase for class names: ChestOfDrawers.

> @tamouse: I really appreciate your feed back (along with everyone
> else's). I'm curious, in what ways can I remove the user interaction
> portion of my code from my instance method and still have a class that
> will allow me to have an object with which I can interact?

You should move all the puts and gets to a different place (the top
level, for example), and change the interface of the Drawer class, so
that it receives the object to place, for example:

class Drawer
  attr_reader :drawer_contents # this creates a method that returns
@drawer_contents
[...]


  def place object
     raise "The drawer appears to be closed. Try opening it first."
unless @drawer_position
    @drawer_contents << object
  end
end

and in the main:

drawer = Drawer.new
puts "What would you like to put into the drawer for storage?"
thing_to_put_into_drawer = gets.chomp
drawer.place thing_to_put_into_drawer
puts "You now have #{drawer.drawer_contents} in the drawer"

This way, your Drawer class is much more reusable, for example if you
want to use it in a web application instead of a command line app. In
general a class should have one concern and mixing the drawer logic
with the user interaction logic is bad.

Jesus.

In This Thread

Prev Next