draq wrote:
> E. g. I am going to make a programm for a forwarding agency containing
> two classes: City and Connection.
>
> The class City contains information about clients, goods etc. and the
> class Connection implies the path length, potential toll charges and
> type of the road.
>
> How can I implement the two classes the best? With both classes
> referring to each other?
>

In my inexperience, I would inherit from a Map.

Fortunately for you, there are folks here who'll tell
us why this is an awful suggestion (?) ;-)


class Map
  Cities = Hash[]
  def Map.add_city(name, latitude, longitude)
    Cities[name] = City.new(name, latitude, longitude)
  end
end

class City < Map
  attr_reader :grid_ref, :name
  def initialize(name, latitude, longitude, *rest)
    @name = name
    @grid_ref = [latitude, longitude]
  end
end

class Connection < Map
  attr_reader :conn1, :conn2, :distance
  def initialize(name1, name2)
    @conn1 = Cities[name1]
    @conn2 = Cities[name2]
    @distance = 'some calculation'
  end
end

Map.add_city('Tokyo', 33, 11)
Map.add_city('Paris', 44, 22)
Map.add_city('Melbourne', 11, 88)
Map.add_city('New Delhi', 00, 77)
Map.add_city('Singapore', 55, 55)

c01 = Connection.new('Tokyo', 'Paris')
p [c01.conn1.name, c01.conn1.grid_ref]  # ["Tokyo", [33, 11]]


    (don't take this too seriously, yet)


daz