algorytm.org

Implementacja w Ruby



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Strategia (strategy) - Implementacja w Ruby
Ocena użytkownikóww: *****  / 1
SłabyŚwietny
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
Dodaj komentarz