Nesta aula iremos aprender como criar propriedades em uma classe ruby, iremos criar propriedades de duas formas, utilizando a forma complexa e utilizando os accessors.

Accessors

Acessors manipulam os métodos de uma classe, gerando os getters e setters através da metaprogramação do Ruby, provendo agilidade no desenvolvimento.

Tipos de Accessors

Definição sem Accessors

      
        class Pessoa
          def nome 
            @nome
          end
          def nome(value) 
            @nome = value
          end
        end
        Pessoa.nome = "Danilo"
      
    

Relembrando os métodos de Classe:

      
        def nome 
          @nome
        end
      
    

Um método de classe também pode receber valores padrão

      
        def nome(nome)
          @nome = nome
        end
      
    

Definição de classe com inicializador

      
        class Pessoa
          def initialize(nome) 
            @nome = nome
          end
        end
        Pessoa.new("Danilo")
      
    

Aula Prática

Como de praxe copie o arquivo padrão das aulas anteriores para seguir conforme o padrão.


Definição de classe com métodos e getters e setters sem Accessors

      
        require 'byebug'
        class Carro
          def initialize(nome = "Modelo Padrão") 
            @nome = nome
          end

          def nome=(value)
            @nome = value
          end

          def nome
            @nome
          end

          def pneu=(value)
            @pneu = value
          end

          def pneu
            @pneu
          end
          
          def porta=(value)
            @porta = value
          end

          def porta
            @porta
          end

          def painel=(value)
           @painel = value
          end

          def painel
            @painel
          end

          def roda=(value)
            @roda = value
          end

          def roda
            @roda
          end

          def mostrar(marca="Marca Padrão")
            puts "Marca: #{marca} - Modelo: #{self.nome}"
          end
        end
        
        c = Carro.new
        
        debugger
        
        Carro.new.mostrar
      
    

Definição de classe com Accessors

      
        require 'byebug'
        class Carro
          def initialize(nome = "Modelo Padrão") 
            @nome = nome
          end
          attr_accessor :nome, :pneu, :porta, :painel, :roda

          def mostrar(marca="Marca Padrão")
            puts "Marca: #{marca} - Modelo: #{self.nome}"
          end
        end
        
        c = Carro.new
        
        debugger

        Carro.new.mostrar
      
    

Como você pode ver os Accessors geram os getters e setters automaticamente para você.

Para fazer somente o set de :pneu

      
        require 'byebug'
        class Carro
          def initialize(nome = "Modelo Padrão") 
            @nome = nome
          end
          attr_accessor :nome, :porta, :painel, :roda

          attr_writer :pneu

          def mostrar(marca="Marca Padrão")
            puts "Marca: #{marca} - Modelo: #{self.nome}"
          end
        end
        
        c = Carro.new
        
        debugger

        Carro.new.mostrar
      
    

Para fazer somente o get de :pneu

      
        require 'byebug'
        class Carro
          def initialize(nome = "Modelo Padrão") 
            @nome = nome
          end
          attr_accessor :nome, :porta, :painel, :roda

          attr_reader :pneu

          def mostrar(marca="Marca Padrão")
            puts "Marca: #{marca} - Modelo: #{self.nome}"
          end
        end
        
        c = Carro.new
        
        debugger

        Carro.new.mostrar
      
    


Próximas Aulas


Orientação a Objetos - Herança

Nesta aula iremos aprender sobre herança, mais uma aula de orientação ...

Orientação a Objetos - public, private, protected

Nesta aula iremos aprender as marcações public, private, protected e v...

Orientação a objetos - Polimorfismo e Overload

Nesta aula iremos aprender como fazer polimorfismo no Ruby, também ire...

Orientação a Objetos - Interface, Abstração, Singleton

Nesta aula iremos aprender como implementar Interface, Abstração e cla...

Metaprogramming - RunTime

Nesta aula iremos aprender o inicio da metaprogramação, veremos como o...

Metaprogramming - Modulo

Nesta aula iremos aprender como programar orientado a objetos por comp...

Metaprogramming - Dinâmicos

Nesta aula iremos aprender como criar métodos de forma dinâmica, iremo...

Metaprogramming - Eval para Classes e instâncias

Nesta aula iremos aprender como abrir uma classe, com os comandos inst...



Danilo

Arquiteto de software, analista, programador, professor. Danilo criou o projeto torne-se um programador, para passar o seu conhecimento para a nova geração. Com o intuito de ser um bom pai, Danilo trabalha muito motivado para garantir o futuro de sua filha.

ELEVE SEUS GANHOS E POTENCIALIZE SUA PERFORMANCE

Receba nossa Ebook de LÓGICA DE PROGRAMAÇÃO

© Didox Business & Technology - CNPJ: 12.127.195/0001-14