Herança
A herança é uma das principais características da orientação a objetos. Ela permite o reaproveitamento de métodos e atributos diminuindo o tempo de desenvolvimento, ainda reduzindo as linhas de código e facilitando manutenções futuras do mesmo.
Em Ruby, a herança é feita assim:
class PessoaFisica < Pessoa
attr_accessor :cpf
@cpf
end
class PessoaJuridica < Pessoa
attr_accessor :cnpj
@cnpj
end
# classe.rb
outro_aluno = PessoaFisica.new("Carlos", "SQS 108")
outro_aluno.cpf = "32.833.782-31"
cjr = PessoaJuridica.new("Empresa Júnior de Computação - CJR", "UnB, CiC/EST, AT 12/11")
cjr.cnpj = "03.632.310.000-117"
puts outro_aluno.nome
puts outro_aluno.cpf
puts cjr.nome
puts cjr.cnpj
$ ruby classe.rb
Carlos
32.833.782-31
Empresa Júnior de Computação - CJR
03.632.310.000-117
Observe que o atributo nome não está definido nas classes PessoaFisica e PessoaJuridica. O que acontece é que elas herdaram da classe Pessoa esse atributo. A herança também permite que métodos sejam herados.