sad

Ruby code posted
created at 24 Aug 18:50

Edit | Back
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
require './pedido.rb'
require './modulosujeito.rb'
# instanciamos a classe pedido
pedido = Pedido.new
# instance_eval permite alterar a estrura 
# classe apenas para essa instancia em especifico
pedido.instance_eval do
  class << self
    # transformamos essa instancia em uma classe
    # capaz de adicionar blocks observadores
    include ModuloSujeito

    # o metodo mudar_status é redefinido para 
    # que ele possa notificar seus observadores
    alias_method :old_mudar_status,:mudar_status
    def mudar_status(novo_status)
      old_mudar_status(novo_status)
      # notificando os observadores
      notificarObservadores
    end
  end
end

pedido.addObservador do |p|
    puts("Email: Prezado cliente seu pedido esta: #{p.status}")
    puts("Estoque: status - #{p.status} - estoque remanejado")
end

pedido.mudar_status "Aberto"
pedido.mudar_status "Confirmado"
pedido.mudar_status "Reservado"
pedido.mudar_status "Despachado"
947 Bytes in 2 ms with coderay