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.
Acessors manipulam os métodos de uma classe, gerando os getters e setters através da metaprogramação do Ruby, provendo agilidade no desenvolvimento.
Gera get e set
Gera somente get
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")
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
Nesta aula iremos aprender sobre herança, mais uma aula de orientação ...
Nesta aula iremos aprender as marcações public, private, protected e v...
Nesta aula iremos aprender como fazer polimorfismo no Ruby, também ire...
Nesta aula iremos aprender como implementar Interface, Abstração e cla...
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.