Sistema de simulação de fabricantes de carros
Publicado por Luciano Alexandre de Farias Silva (última atualização em 27/11/2012)
[ Hits: 4.603 ]
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}"
Exemplos de comentários e operadores de impressão na tela
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Programa fora de escala na tela do pc (10)
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (1)
O programa assinador digital (1)









