Descrição
Esse é um script bem interessante, que busca simular um sistema de controle de fabricantes de carros. O script traz em seu código a utilização de alguns conceitos de orientação a objetos bem interessantes, como: herança, classes, métodos etc.
[ Download:
5620.Carro.rb ]
[
Enviar nova versão ]
[ Esconder código-fonte ]
# Carro.rb
#
# www.tecsource.blogspot.com.br
#
# Created by Luciano Alexandre on 13/11/12.
class Automovel
attr_reader :marca, :modelo, :cor, :tanque
attr_writer :cor
def initialize(marca,modelo,cor,tanque)
@marca = marca
@modelo = modelo
@cor = cor
@tanque = tanque
end
def to_s
"marca:#{@marca} modelo:#{@modelo} cor:#{@cor} capac.tanque#{@tanque}"
end
end
class Carro < Automovel
def to_s
"Carro:"+super
end
end
class Caminhao < Automovel
def to_s
"Caminhao:"+super
end
end
class Montadora
attr_reader :nome, :modelos, :qtde_fabricados
@@qtde_total_de_automoveis = 0
def initialize(nome,modelos)
@nome = nome
@modelos = modelos
@qtde_fabricados = 0
end
def fabrica(modelo,cor)
if !@modelos.include? modelo
puts "ATENCAO! A montadora #{@nome} nao fabrica o modelo #{modelo}"
return nil
end
puts "Fabricando um #{modelo} na montadora #{@nome}..."
@@qtde_total_de_automoveis += 1
@qtde_fabricados += 1
# se tiver um tanque com menos de 100 litros, e ́ um carro
if @modelos[modelo] < 100
Carro::new(@nome,modelo,cor,@modelos[modelo])
else
Caminhao::new(@nome,modelo,cor,@modelos[modelo])
end
end
def Montadora.qtde_total_de_automoveis
@@qtde_total_de_automoveis
end
end
# criando as montadoras
volks = Montadora::new("Volkswagen",{"Gol"=>50,"Golf"=>55,"Polo"=>45,"17210C"=>275})
ford = Montadora::new("Ford",{"Ka"=>42,"Fiesta"=>42,"Focus"=>55,"C-815"=>150})
# criando automoveis da Volkswagen (com um carrinho ali no meio)
automoveis_volks = []
automoveis_volks.push(volks.fabrica("Gol", :azul))
automoveis_volks.push(volks.fabrica("Golf", :preto))
automoveis_volks.push(volks.fabrica("Ka", :verde))
automoveis_volks.push(volks.fabrica("17210C",:branco))
puts "#{volks.nome} fabricou #{volks.qtde_fabricados} automoveis ate o momento"
automoveis_volks.each {|v| puts v unless v.nil?}
puts
# criando os automoveis da Ford
automoveis_ford = []
automoveis_ford.push(ford.fabrica("Ka",:verde))
automoveis_ford.push(ford.fabrica("Fiesta",:vermelho))
automoveis_ford.push(ford.fabrica("Focus",:preto))
automoveis_ford.push(ford.fabrica("C-815",:branco))
puts "#{ford.nome} fabricou #{ford.qtde_fabricados} automoveis ate o momento"
automoveis_ford.each {|v| puts v unless v.nil?}
puts
puts "Qtde total de automoveis no mundo: #{Montadora::qtde_total_de_automoveis}"
Scripts recomendados
Shoes - GUIfique scripst em ruby
Utilização de Classes em Ruby
Média de 4 notas
Faça uma lista com o nome de pessoas
Crivo de Eratóstenes Simples em Ruby
Comentários
[1] Comentário enviado por
taq em 27/11/2012 - 13:38h:
Como parece que o exemplo foi bem "inspirado" pelo exemplo sobre isso no meu livro de Ruby, fica aqui a dica para quem quiser conhecer mais sobre a linguagem no conteúdo do livro (e mais um pouco!) distribuído agora como um tutorial, gratuitamente (se alguém quiser doar alguma coisa, também tá bom ehehe) em
http://eustaquiorangel.com/tutorial-ruby
Divirtam-se com a linguagem. :-)
[2] Comentário enviado por
LucianoAlexandre em 27/11/2012 - 17:05h:
Realmente o script foi "inspirado" no seu livro sobre ruby, um ótimo material por sinal, parabens!!!
[3] Comentário enviado por
andreuebe em 30/11/2012 - 20:17h:
Luciano
Acredito que o taq tenha tido a mesma percepção minha de que não fizeste por má intenção. Mas fica a dica de que a divulgação é sempre bem vinda, mas com a devida atribuição de autoria. :-) Abração
[4] Comentário enviado por
LucianoAlexandre em 01/12/2012 - 17:03h:
ok. gente vlw e desculpe.
[5] Comentário enviado por
taq em 03/12/2012 - 10:08h:
Acha, não acho que foi por má intenção não, só aproveitei a dica pra divulgação. :-)
[6] Comentário enviado por
taq em 03/12/2012 - 10:10h:
[4] Comentário enviado por LucianoAlexandre em 01/12/2012 - 17:03h:
ok. gente vlw e desculpe.
Que isso, não precisa pedir desculpa, eu é quem agradeço na divulgação da linguagem. Não porque escrevi livro, tutorial, blá blá blá, mas por eu gostar da danada mesmo e achar que muita gente pode gostar e ser bem produtivo com ela. :-)
[7] Comentário enviado por
taq em 03/12/2012 - 10:11h:
[2] Comentário enviado por LucianoAlexandre em 27/11/2012 - 17:05h:
Realmente o script foi "inspirado" no seu livro sobre ruby, um ótimo material por sinal, parabens!!!
Obrigado. :-)
[8] Comentário enviado por
LucianoAlexandre em 03/12/2012 - 14:55h:
[7] Comentário enviado por taq em 03/12/2012 - 10:11h:
[2] Comentário enviado por LucianoAlexandre em 27/11/2012 - 17:05h:
Realmente o script foi "inspirado" no seu livro sobre ruby, um ótimo material por sinal, parabens!!!
Obrigado. :-)
De nada cara, tbm gosto muito da linguagem por iss que tou tentando divulga-la o maximo!!!