Sistema de simulação de fabricantes de carros
Publicado por Luciano Alexandre de Farias Silva (última atualização em 27/11/2012)
[ Hits: 4.361 ]
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
Shoes - GUIfique scripst em ruby
Web Crawler em Ruby com Open-URI e Nokogiri
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (16)
Arch Linux - Guia para Iniciantes (2)
Problemas ao instalar o PHP (11)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)