Orientação a Objetos - Accessors

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.

assinaturaAssine nossa Comunidade

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
  • attr_accessor
  • Gera get e set

  • attr_reader
  • Gera somente get

  • attr_writer
  • Gera somente set


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
      
    

Orientação a Objetos - Accessors

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.

Próximas Aulas:
assinaturaAssine nossa Comunidade

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
  • attr_accessor
  • Gera get e set

  • attr_reader
  • Gera somente get

  • attr_writer
  • Gera somente set


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