Sistema de simulação de fabricantes de carros
Publicado por Luciano Alexandre de Farias Silva (última atualização em 27/11/2012)
[ Hits: 4.494 ]
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
Faça uma lista com o nome de pessoas
Crivo de Eratóstenes Simples em Ruby
Postmon - Consumindo uma API com Ruby
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Aplicativo simples para gravar tela
Quebra de linha na data e hora no Linux Mint
Firefox não abre em usuário não administradores (2)
Ubuntu com problemas no áudio (1)
Sempre que vou baixar algum pacote acontece o erro dpkg (8)
tentando instalar em um notebook antigo o Linux LegacyOS_2023... [RESO... (8)