Come utilizzare l'ereditarietà in Ruby

October 11

L'ereditarietà è il nucleo della programmazione orientata agli oggetti. strutture di classe costruzione rende i programmi più piccoli facile, e programmi di grandi dimensioni possibili. In Ruby, l'eredità viene utilizzato per creare una relazione tra le classi che possono essere utilizzati nel codice. Quando una classe è un tipo di una classe diversa, è possibile utilizzare l'ereditarietà per rendere "classi figlie". Ad esempio, si potrebbe avere una classe Shape. Fare classi figlie della classe Shape, come un cerchio o di classe Square, significa un metodo che accetta un argomento Forma potrebbe anche prendere un cerchio come un tipo di forma.

istruzione

Utilizzare l'ereditarietà in Ruby

1 Inizia con una base (o "super") di classe. L'esempio seguente utilizza una classe denominata Microonde:
class Microwave
def put_food_in(food)
@food = food
enddef take_food_out
food = @food
@food = nil
return food
enddef turn_on
puts "Microwave is on"
end def turn_off
puts "Microwave is off"
end
end

2 Scrivere una dichiarazione classe ereditata. Questa è la stessa come una dichiarazione di classe normale, ma aggiunge il componente "<Superclass". Quando si vede "classe ChildClass <Superclass", significa "classe ChildClass che eredita da superclasse." Qui, l'ereditarietà viene utilizzata per aggiungere un timer alla classe Microonde:
class TimedMicrowave < Microwave
end

3 Aggiungere nuovi metodi per la classe. La classe avrà tutti i metodi della superclasse, come pure qualsiasi metodi aggiuntivi aggiunti. È inoltre possibile aggiungere nuove variabili e attr_ di accesso *:
class TimedMicrowave < Microwave
attr_reader :timerdef set_timer(seconds)
@timer = seconds
end def clear_timer
@timer = 0
end
end

4 Sostituire i metodi della superclasse con nuovi metodi. Poiché nell'esempio precedente un timer è stato aggiunto al microonde, un metodo turn_on che si accende automaticamente microonde off può ora essere implementato. È sufficiente definire un metodo con lo stesso nome del metodo nella superclasse. Quando si chiama il metodo nella classe bambino sovrascrivere il metodo della superclasse. Qui, qualsiasi codice che si aspetta di vedere un oggetto a microonde può utilizzare un oggetto TimedMicrowave:
class TimedMicrowave < Microwave
attr_reader :timerdef set_timer(seconds)
@timer = seconds
enddef clear_timer
@timer = 0
enddef turn_on
while @timer > 0
puts "Microwave is on. #{@timer} second(s) remaining."
@timer -= 1
sleep 1
end# We're done cooking, turn the microwave off
turn_off
end
end

Consigli e avvertenze

  • Se si dispone di più di una persona che lavora su un programma specifico, tenere a mente non si dovrebbe considerare qualsiasi cosa dopo l'operatore "#" come parte del codice. Queste note hanno lo scopo di fornire una guida per i programmatori.