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!

<< Procs e Lambdas em Ruby Módulos em Ruby >>