Sistema de simulação de fabricantes de carros

Publicado por Luciano Alexandre de Farias Silva (última atualização em 27/11/2012)

[ Hits: 4.195 ]

Homepage: http://www.tecsource.blogspot.com.br/

Download 5620.Carro.rb




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.

  



Esconder código-fonte

#  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}"

Scripts recomendados

Web Crawler em Ruby com Open-URI e Nokogiri

Módulos em Ruby

Média de 4 notas

Métodos Privados em Ruby

Módulo DBI para acesso a dados no Ruby


  

Comentários
[1] Comentário enviado por taq em 27/11/2012 - 13:38h

Como parece que o exemplo foi bem "inspirado" pelo exemplo sobre isso no meu livro de Ruby, fica aqui a dica para quem quiser conhecer mais sobre a linguagem no conteúdo do livro (e mais um pouco!) distribuído agora como um tutorial, gratuitamente (se alguém quiser doar alguma coisa, também tá bom ehehe) em http://eustaquiorangel.com/tutorial-ruby
Divirtam-se com a linguagem. :-)

[2] Comentário enviado por LucianoAlexandre em 27/11/2012 - 17:05h

Realmente o script foi "inspirado" no seu livro sobre ruby, um ótimo material por sinal, parabens!!!

[3] Comentário enviado por andreuebe em 30/11/2012 - 20:17h

Luciano

Acredito que o taq tenha tido a mesma percepção minha de que não fizeste por má intenção. Mas fica a dica de que a divulgação é sempre bem vinda, mas com a devida atribuição de autoria. :-) Abração

[4] Comentário enviado por LucianoAlexandre em 01/12/2012 - 17:03h

ok. gente vlw e desculpe.

[5] Comentário enviado por taq em 03/12/2012 - 10:08h

Acha, não acho que foi por má intenção não, só aproveitei a dica pra divulgação. :-)

[6] Comentário enviado por taq em 03/12/2012 - 10:10h


[4] Comentário enviado por LucianoAlexandre em 01/12/2012 - 17:03h:

ok. gente vlw e desculpe.


Que isso, não precisa pedir desculpa, eu é quem agradeço na divulgação da linguagem. Não porque escrevi livro, tutorial, blá blá blá, mas por eu gostar da danada mesmo e achar que muita gente pode gostar e ser bem produtivo com ela. :-)

[7] Comentário enviado por taq em 03/12/2012 - 10:11h


[2] Comentário enviado por LucianoAlexandre em 27/11/2012 - 17:05h:

Realmente o script foi "inspirado" no seu livro sobre ruby, um ótimo material por sinal, parabens!!!


Obrigado. :-)

[8] Comentário enviado por LucianoAlexandre em 03/12/2012 - 14:55h


[7] Comentário enviado por taq em 03/12/2012 - 10:11h:


[2] Comentário enviado por LucianoAlexandre em 27/11/2012 - 17:05h:

Realmente o script foi "inspirado" no seu livro sobre ruby, um ótimo material por sinal, parabens!!!

Obrigado. :-)


De nada cara, tbm gosto muito da linguagem por iss que tou tentando divulga-la o maximo!!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts