Sistema de simulação de fabricantes de carros
Publicado por Luciano Alexandre de Farias Silva (última atualização em 27/11/2012)
[ Hits: 4.465 ]
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}"
Crivo de Eratóstenes Simples em Ruby
Módulo DBI para acesso a dados no Ruby
Obtendo o IP público (Internet) usando o Ruby
Web Crawler em Ruby com Open-URI e Nokogiri
Resolver problemas de Internet
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Descritores de Arquivos e Swappiness
Fez porcaria no teu repositório Git? Aprenda a restaurar uma versão anterior do seu código!
Restaurando Fontes de Download do Hydra no Linux
Atualizando "na marra" o YT-DLP quando começa a dar erro de downloads
Como instalar o WPS com interface e corretor ortográfico em PT-BR no Arch Linux
How to Choose a Motherboard? (0)
Atualizador de Programas do Zorin 17.3 não funciona [RESOLVIDO] (5)