Linux slogan
Visite também: BR-Linux.org · Dicas-L · SoftwareLivre.org · UnderLinux

Linux banner
Linux banner
Linux banner
Linux banner


» Screenshot
Linux: Debian REGGAE
Por mcnd2


Scripts

Linux user

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

Login: LucianoAlexandre, 65150 pontos

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

Download:



Descrição

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.


[ Download: 5620.Carro.rb ]   [ Enviar nova versão ]

[ 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
   Script Linux recomendado Criando um objeto em Ruby
   Script Linux recomendado Cadastro simples em Ruby
   Script Linux recomendado Utilização de Classes em Ruby
   Script Linux recomendado Faça uma lista com o nome de pessoas
   Script Linux recomendado Inversor de links com Shoes

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


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.