[#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: How do I make lots of classes aware of each other?

From: Joel Pearson <lists@...>
Date: 2013-07-02 08:12:52 UTC
List: ruby-talk #408646
Perhaps an example would help. I struggled for a while with the links 
between classes in an Excel-style structure that I made.

Here's the documentation:
http://rubydoc.info/gems/rubyexcel/0.2.7/index

This is the structure I used:

All classes are namespaced under "module RubyExcel"

"class Workbook" holds multiple instances of "class Sheet" in an 
instance variable called @sheets. Method "Workbook#sheets" allows you to 
loop through each sheet or select specific ones with an argument.

Each instance of "class Sheet" holds a reference to its "parent" 
Workbook, and its data, held in "class Data". The Data and its link

Each instance of classes Row, Column, Range, and Cell hold references to 
their "parent" Sheet, which in turn provides a path to the Data and the 
Workbook.
Because these classes exist merely to access specific sections of the 
Sheet/Data, they can be garbage collected once they're finished with, 
and don't need persistent tracking since all they do is reference 
sections of the Data. They can be recreated when required.

When I say "parent", I'm not talking about class inheritance, merely an 
instance variable which holds a reference to an instance of another 
class which is associated with the instance of the current class.


Here's a simple example of the structure (without all the long object 
ids in the output):

class Parent
  attr_accessor :children
  def initialize
    @children = []
  end
end

class Child
  attr_accessor :parent
  def initialize( parent )
    @parent = parent
    parent.children << self
  end
end

parent = Parent.new
child1 = Child.new parent
child2 = Child.new parent

parent.children
=> child1, child2

child1.parent
=> parent

child2.parent
=> parent

-- 
Posted via http://www.ruby-forum.com/.

In This Thread