Sistema de simulação de fabricantes de carros
Publicado por Luciano Alexandre de Farias Silva (última atualização em 27/11/2012)
[ Hits: 4.771 ]
Homepage: http://www.tecsource.blogspot.com.br/
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.
# 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}"
Web Crawler em Ruby com Open-URI e Nokogiri
Postmon - Consumindo uma API com Ruby
O Journal no Linux para a guarda e consulta de logs do sistema
A evolução do Linux e as mudanças que se fazem necessárias desde o seu lançamento
Maquina modesta - a vez dos navegadores ferrarem o usuario
Fscrypt: protegendo arquivos do seu usuário sem a lentidão padrão de criptograr o disco
Sway no Arch Linux: configuração Inicial sem enrolação
Resolvendo o bloqueio do Módulo Warsaw no Arch Linux (Porta 30900)
Continuando meus tópicos anteriores (0)
Saída de loop após teste de if. (2)
Governo da França vai trocar Windows por Linux (9)
Warsaw não é reconhecido no Google Chrome 147.0.7727.55 [RESOLVIDO] (9)









