Nesta aula iremos aprender sobre herança, mais uma aula de orientação a objetos em Ruby, com a herança é possível aproveitar códigos de classes similares.
Herança é um princípio da programação orientada a objetos (POO) que permite criar uma nova classe a partir de uma já existente, útil para reaproveitamento de código, uma classe pode "herdar" de outra vários métodos e implementar novos métodos e atributos, você vai ouvir palavras como: classe Pai, Mãe, superclasse, subclasse, classe filha etc.
Exemplo de herança, definida classe Pai carro e classe filha Fiesta que herda os métodos do Pai.
class Carro
attr_accessor :nome, :portas
end
Usamos o sinal <
, para representar o conceito de herança em Ruby
class Fiesta < Carro
# Aqui a classe Fiesta tem os mesmos attr_accessor :nome, :portas
end
Como de praxe copie o arquivo padrão das aulas anteriores para seguir conforme o padrão.
Para essa aula criaremos alguns arquivos de classe separados do código principal
Para o arquivo fiesta.rb
faça:
class Fiesta
attr_accessor :cor
end
No arquivo carro.rb
faça:
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
Para o arquivo aula.rb deve-se fazer o require_relative
dos outros arquivos.
require 'byebug'
require_relative 'carro'
require_relative 'fiesta'
debugger
fiesta = Fiesta.new
carro = Carro.new
Carro.new.mostrar
Incluindo a herança no fiesta.rb
class Fiesta < Carro
attr_accessor :cor
end
Incluindo a herança no golf.rb
class Golf < Carro
end
Para o arquivo aula.rb atualize com o golf.rb
.
require 'byebug'
require_relative 'carro'
require_relative 'fiesta'
require_relative 'golf'
debugger
fiesta = Fiesta.new
golf = Golf.new
carro = Carro.new
Carro.new.mostrar
Como vimos a classe Golf
pode ser vazia, assim utilizando apenas os métodos herdados de
Carro
, atente-se para o require_relative
de carro
ser feito antes das
classes que herdam ele.
Incluindo a herança golf.rb
, assim ele herdará todos métodos das classes Carro e Fiesta
class Golf < Fiesta
# Golf está herdando tudo de Carro e Fiesta.
end
Observações:
Sempre preste atenção na ordem de importação, observe a semântica quando for herdar métodos e sempre que você
fizer AlgumaClasse.new
, estará criando uma nova instância, um novo objeto, tendo um diferente
endereço na memória inclusive.
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...
Nesta aula iremos aprender como criar métodos de forma dinâmica, iremo...
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.