2016-04-13 184 views
-4

想象一下,我有一个对象“房子”。在“房子”里面,我想用不同的方法让对象“门”和对象“窗口”,可以说打开和关闭门窗。 我的主要目标是有代码看起来像这样:如何用ruby中的对象(类)创建一个对象(类)?

my_house = House.new 
neighbor_house = House.new 

my_house.Door.open 
neighbor_house.Window.close 
neighbor_house.Door.open 
neighbor_house.Door.close 
my_house.Door.close 
+2

你的问题是什么? – mudasobwa

+0

如何创建班级的房子,以便在班级里面有窗户和门。 – mareiou

+0

mareiou,请编辑您的问题,以包括您的评论,回答mudsie的问题,并删除评论。 –

回答

1

虽然我不明白,你为什么决定在这里问这个问题,而不是读一些介绍Ruby语言,回答如下:

class Door 
    def open; end 
    def close; end 
end 
class Window 
    def open; end 
    def close; end 
end 
class House 
    attr_reader :door, :window 
    def initialize door, window 
    @door, @window = door, window 
    end 
end 

house = House.new Door.new, Window.new 
house.door.open 
house.window.close 
+0

Upvoting并添加我的2美分。 @mareiou我会建议也研究面向对象的编程原则。在这个特定的情况下,你会希望在'House'类中创建类似'#open_door'或'#close_window'的方法,而不是在返回的对象上调用它们。这是由[德米特法](https://www.google.com/search?q=Law+of+Demeter)指导的。或者,创建另一个类,它接受类的实例并对它们执行操作,例如'HomeManager'。这由[SRP原则](https://www.google.com/search?q=SRP)指导。 – Uzbekjon