2016-04-13 248 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