Rafael Pereira Alonso
Computer Science student at the Federal University of São Carlos - Sorocaba and Ruby On Rails Teacher
Programação orientada a objetos
class Turma
# esse método sempre executará ao se criar uma nova instancia
# bom para definir as propriedades iniciais
def initialize(professor, alunos, materia)
# variáveis iniciadas com '@' dentro de uma classe são
# chamadas de variáveis de instância. Estas podem ser
# Acessadas em qualquer outro método da classe
@professor = professor
@alunos = alunos
@materia = materia
@concluida = false
@n_alunos = count_alunos
end
# esse método é uma das possíveis ações que podemos fazer com
# uma instancia dessa classe
def count_alunos
@alunos.length
end
end
# Podemos criar duas turmas diferentes, ou seja, com propriedades diferentes
turma_a = Turma.new('Rafael', ['Dadinho', 'Sofia', 'Slash', 'Bianca'], 'Ruby on Rails')
turma_b = Turma.new('Thiago', ['Pastor', 'Eleven', 'Mormaço'], 'Alg I')
# Podemos executar os mesmos métodos nas duas instâncias, mas dependendo de suas
# propriedades e/ou argumentos passados, os resultados são diferentes
turma_a.n_alunos #=> 4
turma_b.n_alunos #=> 3
turma_a.professor #=> ???
turma_b.materia #=> ???(jeito básico)
class Turma
# [...]
def get_professor
return @professor
end
def set_professor(professor)
@professor = professor
end
def get_turma
return @turma
end
# [...]
end(jeito bonito)
class Turma
# [...]
def professor
return @professor
end
def professor=(professor)
@professor = professor
end
def turma
return @turma
end
# [...]
end(jeito top)
class Turma
# todas as propriedades após "attr_reader" poderão ser vistas
attr_reader :professor, :materia, :concluida
# todas as propriedade após "attr_writer" poderão ser alteradas
attr_writer :professor
# "attr_accessor" é uma junção de "attr_reader" e "attr_writer"
attr_accessor :turma
[...]
end(dos três jeitos)
# jeito básico
puts turma_a.get_professor #=> 'Rafael'
turma_a.set_professor('Gandalf')
puts turma_a.get_professor #=> 'Gandalf'
# jeito bonito (e jeito top também!)
puts turma_b.professor #=> 'Thiago'
turma_b.professor = 'Thiaguin'
puts turma_b.professor #=> 'Thiaguin'
# jeito top (bônus)
puts turma_a.materia #=> 'Ruby on Rails'
turma_a.materia #=> erro!By Rafael Pereira Alonso
Terceira Aula da Atividade Complementar de Ruby On Rails, lecionada na Universidade Federal de São Carlos, campus Sorocaba, no primeiro semestre de 2019
Computer Science student at the Federal University of São Carlos - Sorocaba and Ruby On Rails Teacher