Programação Orientada a Objetos (POO) em Ruby
Programação Orientada a Objetos (POO) é um paradigma de programação que organiza o código em torno de objetos. Um objeto representa uma entidade no mundo real ou sistema que está sendo modelado.
Aulas: Link to heading
- Classes são templates que definem os atributos (variáveis de instância) e comportamento (métodos) dos objetos.
- É declarado usando a palavra-chave class.
Exemplo: Link to heading
Longo caminho Link to heading
class Pessoa
# Construtor
def initialize(nome, idade)
@nome = nome
@idade = idade
end
# Getters
def nome
@nome
end
def idade
@idade
end
# Setters
def nome=(nome)
@nome = nome
self
end
def idade=(idade)
@idade = idade
self
end
# ... outros métodos de comportamento
end
Forma curta Link to heading
class Pessoa
# métodos de classe
def self.nomes_sugeridos
["john", "ana", "maria"]
end
# Construtor
def initialize(nome, idade)
@nome = nome
@idade = idade
end
# Métodos de instância (Getters e Setters)
attr_accessor :nome, :idade
# ... outros métodos de comportamento
end
Formato ainda mais curto Link to heading
class Pessoa < Struct.new(:nome, :idade)
# Struct declara o construtor, getters e setters
# ... outros métodos de comportamento
end
Cada abordagem tem suas vantagens e desvantagens. O formato longo oferece mais controle, enquanto os formatos curtos são mais concisos. A escolha depende das necessidades específicas da turma.
Objetos: Link to heading
- As instâncias de uma classe são os objetos.
- Eles são criados usando o método new da classe.
- Cada objeto possui valores próprios para os atributos definidos na classe.
Exemplo: Link to heading
pessoa = Pessoa.new("Juan", 25)
puts pessoa.nome # "Juan"
puts pessoa.idade # 25
Métodos: Link to heading
- Métodos são funções definidas dentro de uma classe que operam nos objetos dessa classe.
- Podem acessar e modificar os atributos do objeto.
- Métodos de classe e métodos de instância podem ser definidos.
Exemplo: Link to heading
class Pessoa
# ...
def saudacao
puts "Olá, meu nome é #{@nome}"
end
end
pessoa.saudacao # "Olá, meu nome é Juan"
Herança: Link to heading
- Uma classe pode herdar atributos e comportamento de outra classe (classe pai).
- A classe filha (subclasse) pode adicionar sua própria funcionalidade ou modificar a herdada.
Abstração: Link to heading
- POO permite ocultar os detalhes de implementação de um objeto e expor apenas sua interface (métodos públicos).
OPO fornece uma maneira de organizar o código de maneira modular, reutilizável e de fácil manutenção. Ao modelar o mundo real com objetos, os programas tornam-se mais fáceis de entender, modificar e estender.
Dicas adicionais: Link to heading
- Você pode usar módulos para agrupar funcionalidades compartilhadas entre classes.
- Você pode usar o padrão de design MVC para separar lógica de negócios, apresentação e controle.
- Você pode usar injeção de dependência para melhorar a testabilidade e a capacidade de manutenção do código.
Continue experimentando POO para criar aplicativos complexos e bem projetados!