Ruby

  • Categorias

  • Arquivos

Modularização

Em Ruby possuimos duas formas de Encapsulamento: as classes e os módulos:

1) Classes:

A classe é como uma “modelo” a partir da qual objetos individuais são
construídos. Esta é uma classe bem simples:
class MyClass
end
E assim é como eu criaria um objeto utilizável a partir dela:
ob = MyClass.new

2)Módulos:

Igualmente a uma classe pode conter constantes, métodos e classes.

Podemos utilizar módulos de duas formas: Como empacotador e como mixin.

2.1) Empacotador : Por exemplo criar bibliotecas para reuso. Colocamos os métodos, variaveis e classes em um módulo, e ao importarmos esse módulo nosso programa irá ter acesso a todas essas variáveis, metodos e classes. Para importar um módulo utilizamos o comando ‘require’.

2.2) Mixin: É quando incluimos um módulo em uma classes -também chamado de misturar o módulo. Quando se inclui modulos em uma classe, quaisquer objetos criados a partir da classe poderão usar os métodos de instância do módulo incluso como se tivessem sido definidos na própria classe.

module MyModule

GOODMOOD = “happy”

BADMOOD = “grumpy”

def greet

return “I’m #{GOODMOOD}. How are you?”

end

def nogreet

return “I’m #{BADMOOD}. How are you?”

end

end

class MyClass

include MyModule

def sayHi

puts( greet )

end

def sayHiAgain

puts(nogreet )

end

end

ob = MyClass.new

ob.sayHi

ob.sayHiAgain

puts(ob.greet)

Formas de acesso aos métodos:

Em Ruby, você pode deixar três tipos de acesso aos métodos: métodos públicos, privados e protegidos. Os métodos públicos podem ser acessados por qualquer classe e por qualquer objeto (instância). Os métodos privados podem ser acessados somente por objetos de mesmo tipo (mesma classe).
Métodos protegidos são métodos que podem ser acessados por qualquer objeto dentro da mesma estrutura hierárquica da classe.
Ex:
class Pessoa
attr :nome, :nascimento, :cpf
def metodoPublico
end

protected
def metodoProtegido
end
def outroMetodoProtegido
end

private
def metodoPrivado
end
def outroMetodoPrivado
end

public
def deNovoMetodoPublico
end

end

Deixe um comentário