Material da aula 15.B! Veja mais informações sobre o curso e a lista completa das aulas em: http://cursoprogramacao.rafaelbiriba.com/
15.B. Classes e Objetos 1 - Correção dos exercícios
Nessa aula eu faço a correção comentada dos exercícios da aula de Classes e Objetos 1
Não deixe de tentar resolver os exercícios da aula e investir algum tempo estudando mais sobre o assunto.
Vídeo da aula
Exercícios
Correção dos exercícios
1.
class Pessoa
attr_writer :nome, :sobrenome
# nome, sobrenome não podem ser accessor, pois o exercício
# pede para que Pessoa.new.nome não seja exposto
attr_accessor :idade
def nome_completo
"#{@nome} #{@sobrenome}"
end
end
roberto = Pessoa.new
roberto.idade = 50
roberto.idade # 50
roberto.nome = "Roberto"
roberto.sobrenome = "da Silva"
roberto.nome #NoMethodError (undefined method `nome'
roberto.sobrenome #NoMethodError (undefined method `sobrenome'
roberto.nome_completo # "Roberto da Silva"
2.
class Produto
attr_reader :nome, :preco
def initialize(nome, preco)
@nome = nome
@preco = preco
end
end
class Carrinho
attr_accessor :produtos
def initialize
@produtos = []
end
def total
total = 0
produtos.each do |produto|
total += produto.preco
end
total
end
end
carrinho_compras = Carrinho.new
carrinho_compras.produtos << Produto.new("leite", 3)
carrinho_compras.produtos << Produto.new("nescau", 5)
carrinho_compras.produtos << Produto.new("pão", 6)
carrinho_compras.produtos << Produto.new("queijo", 8)
carrinho_compras.total # 22
3.
class Pessoa
attr_reader :nome, :telefone
def initialize(nome, telefone)
@nome = nome
@telefone = telefone
end
end
class Agenda
attr_accessor :lista
def initialize
@lista = []
end
def adicionar(pessoa)
@lista << pessoa
end
def buscar(nome)
lista.each do |pessoa|
return pessoa.telefone if pessoa.nome == nome
end
""
end
end
minha_agenda = Agenda.new
minha_agenda.adicionar(Pessoa.new("Rafael", 92345567))
minha_agenda.adicionar(Pessoa.new("Rodrigo", 99229822))
minha_agenda.adicionar(Pessoa.new("Sofia", 97213399))
minha_agenda.buscar("Rodrigo") # 99229822
minha_agenda.buscar("Alan") # ""
4. DESAFIO
class Pessoa
attr_accessor :best_friend
attr_reader :nome
def initialize(nome)
@nome = nome
end
end
mario = Pessoa.new("Mario")
ronaldo = Pessoa.new("Ronaldo")
pedro = Pessoa.new("Pedro")
romario = Pessoa.new("Romario")
mario.best_friend = ronaldo
ronaldo.best_friend = pedro
pedro.best_friend = romario
romario.best_friend = mario
mario.best_friend.nome # Ronaldo
mario.best_friend.best_friend.nome # Pedro
mario.best_friend.best_friend.best_friend.nome # Romario
mario.best_friend.best_friend.best_friend.best_friend.nome #Mario
mario.best_friend.best_friend.best_friend.best_friend.best_friend.nome #Ronaldo