Ruby

  • Categorias

  • Arquivos

Polimorfismo

Uma característica das linguagens de programação orietadas a objeto é o polimorfismo. O polimorfismo permite “programar no geral” em vez de “programar no específico”. Em particular, o polimorfismo permite escrever programas que processam objetos que compartilham a mesma superclasse em um hierarquia de classes como se todas fossem objetos da superclasse.

Com o polimorfismo, podemos projetar e implementar sistemas que são facilmente extensíveis – novas classes podem ser adicionadas a partes gerais do programa com pouca ou nenhuma modificação, contanto que as novas classes façam parte da hierarquia de herança que o programa processa genericamente. As únicas partes de um programa que devem ser alteradas para acomodar as novas classes são aquelas que exigem conhecimento direto das novas classes que o programador adiciona à hierarquia.

Em muitos casos, o projeto  de uma hierarquia de heranças resulta em uma ou em mais classes que estão tão altas na hierarquia que uma instanciação delas não faz sentido. Ou seja, se temos um método implementado em todas as classes-filhas de uma determinada classe-pai, o protocolo (mas não o corpo) desse método é incluído na classe-pai.

Esse método abstrato, muitas vezes, é chamado de método virtual. Além disso, qualquer classe que inclua pelo menos um método virtual é chamada de classe virtual. Esta última não pode ser instanciada, porque nem todos os seus métodos têm corpos. Qualquer subclasse de uma classe virtual que deva ser instanciada deverá oferecer implementações de todos os métodos virtuais herdados.

Com relação ao polimorfismo, podemos tirar as seguintes conclusões em ruby:

1) Sobrecarga:

Não existe em Ruby:

Exemplo:

def bah (a)

puts “apenas um parametro”

end

def bah (a,b)

puts “2 parametros”

end

bah 2,3 # Imprime “2 parametros”

bah “Olá” # Erro! Falta um argumento

2) Coerção

Ruby possui coerção:

a = 57

puts a.class #Imprime FixNum

a = a + 300000000000000

puts a.class #Imprime BigNum

a = a + 1.3

puts a.class #Imprime Float

3) Herança

Em ruby só tem herança simples, isto é, não tem herança múltipla

Exemplo:

Class Animal

@num_de_patas

end

class Cachorro < Animal

@latidos_por_minuto

end

Deixe um comentário