2016-04-13 13 views
-4

Bir evimin "House" olduğunu düşünün. "Ev" içinde bir nesne "Kapı" ve farklı bir yöntemle "Pencere" nesnesine sahip olmak istiyorum, açık/kapalı kapıları/pencereleri söyleyelim. Anlamıyorum olmama rağmen Yakut dilinde bazı tanıtımı okuduktan yerine burada bu soruyu sormaya karar verdikRuby'de nesneler (sınıflar) tarafından yapılmış bir nesne (sınıf) nasıl oluşturulur?

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

Sorunuz nedir? – mudasobwa

+0

Sınıf Penceresi ve Kapısının içine girebilmek için sınıf Evi nasıl oluşturulur. – mareiou

+0

mareiou, lütfen sorunuzun cevabını yanıtlamak için lütfen yorumunuzu düzenleyin ve yorumu silin. –

cevap

1

, cevap şu:

asıl maksadım bir koda sahip olmaktır
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

2 sentimi alıp ekliyorum. @mareiou Ayrıca nesne yönelimli programlama ilkelerini de incelemenizi tavsiye ederim. Bu özel durumda, "House" sınıfında "# open_door" veya "close_window" gibi döndürülen nesneler yerine onları çağırmak yerine yöntemler oluşturmak istersiniz. Bu, [Demeter Yasası] tarafından yönlendirilir (https://www.google.com/search?q=Law+of+Demeter). Alternatif olarak, sınıflarınızın örneklerini alan ve bunlarda "HomeManager" gibi işlemler gerçekleştiren başka bir sınıf oluşturun. Bu, [SRP ilkesi] tarafından yönlendirilir (https://www.google.com/search?q=SRP). – Uzbekjon

İlgili konular