Sistema de simulação de fabricantes de carros
Publicado por Luciano Alexandre de Farias Silva (última atualização em 27/11/2012)
[ Hits: 4.530 ]
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}"
Obtendo o IP público (Internet) usando o Ruby
Postmon - Consumindo uma API com Ruby
Exemplos de comentários e operadores de impressão na tela
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Instalar driver Nvidia no Debian 13
Redimensionando, espelhando, convertendo e rotacionando imagens com script
Debian 13 Trixie para Iniciantes
Convertendo pacotes DEB que usam ZSTD (Padrão Novo) para XZ (Padrão Antigo)
Ajuda com o Debian 13 - Video hibrido geforce 940 mx Wayland OFF (0)
baschrc customizado pegeui vários. (3)