Ruby – Module – Mixing – Multiple Inheritance – Linux

Publicado: 29 de dezembro de 2014 em Ruby on Rails

Um módulo é um conjunto de métodos e constantes. Os métodos em um módulo podem ser métodos de instância ou métodos do próprio módulo. Módulos também proporcionam um espaço de nomes (namespace) onde pode-se organizar o código e evitar possíveis colisões de nomenclaturas. Os métodos de instância se comportam como métodos em uma classe quando o módulo está incluído na classe, os métodos do módulo não se comportam da mesma forma. Por outro lado, os métodos de módulos podem ser chamados sem criar um objeto de encapsulamento, enquanto os métodos de instância não podem.

Module: http://www.ruby-doc.org/core-2.2.0/Module.html

Linguagens como C++ permitem que uma classe possa herdar mais de uma classe, Ruby não, entretanto existe o conceito chamado Mixing que nos permite utilizar está mesma funcionalidade através dos módulos.

Ruby - Modules - Mixing

Ruby – Modules – Mixing

Exemplo:

Neste exemplo criamos um modulo chamado Portas e um modulo chamado Janelas. A especificação de objetos Ruby não permite múltiplas heranças ou seja, não permite que minha classe chamada Casa possa herdar as classes Portas e Janelas ao mesmo tempo, no entanto existe um modo de criar esta mesma funcionalidade incluindo os módulos em minha classe.

Ruby

#!/usr/bin/env ruby
# Desenvolvimento Aberto
# Mixing.rb

# Define modulo
module Portas
  
  def porta(tipo)
    puts "Portas: " + tipo       
  end
      
end

# Define modulo
module Janelas
  
  def janela(tipo)
    puts "Janelas: " + tipo
  end
  
end

# Define classe 
class Casa
  
 # Inclui modulos
 include Portas
 include Janelas
 
 def modelo(tipo, cor)
   puts "Casa ----------------->>>> 1\n\n"
   puts "Modelo:" + tipo
   puts "Cor: " + cor
 end
 
end

# Cria instancia do objeto
minhaCasa = Casa.new

# utiliza objeto
minhaCasa.modelo("Sobrado", "Branco")
minhaCasa.porta("Azul")
minhaCasa.janela("Amarelas")
Publicidade

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s