Nadesłany przez Marcin Prokop, 05 listopada 2013 21:21
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.Pobierz pełne rozwiązanie.
strategy.rb:
# Wzorzec Projektowy Strategy
# (strategia )
# www.algorytm.org
# Strategie
class NaprawaSamachodow
def pracuj
puts "Praca: naprawia samochody"
end
end
class Leczenie
def pracuj
puts "Praca: leczy ludzi"
end
end
class RoznoszenieListow
def pracuj
puts "Praca: roznosi listy"
end
end
class Samochod
def dojezdzaj
puts "Dojazd: samochod"
end
end
class Rower
def dojezdzaj
puts "Dojazd: rower"
end
end
class Silownia
def spedzaj_wolny_czas
puts "Wolny Czas: silownia"
end
end
class LiteraturaPopularnoNaukowa
def spedzaj_wolny_czas
puts "Wolny Czas: literatura popularno-naukowa"
end
end
# Kontekst
class Pracownik
def initialize(zawod)
if zawod.casecmp("mechanik").zero?
@pracowac = NaprawaSamachodow.new
@dojezdzac = Samochod.new
@spedzanie_wolnego_czasu = Silownia.new
elsif zawod.casecmp("lekarz").zero?
@pracowac = Leczenie.new
@dojezdzac = Samochod.new
@spedzanie_wolnego_czasu = LiteraturaPopularnoNaukowa.new
elsif zawod.casecmp("listonosz").zero?
@pracowac = RoznoszenieListow.new
@dojezdzac = Rower.new
@spedzanie_wolnego_czasu = Silownia.new
end
end
# wywołujemy metody strategii
def metody
@pracowac.pracuj
@dojezdzac.dojezdzaj
@spedzanie_wolnego_czasu.spedzaj_wolny_czas
end
end
zawod = gets.chomp
begin
pracownik = Pracownik.new zawod
pracownik.metody
rescue
puts "nie ma takiej metody"
end

