miércoles, 21 de noviembre de 2007

Tema 7: Herencia

La herencia es uno de los mecanismos de la programación orientada a objetos, por medio del cual una clase se deriva de otra de manera que extiende su funcionalidad.

La herencia en Ruby se simboliza mediante el operador < .

#La clase "Luchador" contiene los datos que debe tener todo luchador, por ejemplo vida, fuerza,... De igual forma define acciones comunes a todos los luchadores, es decir, los metodos golpear, recibir_golpe,...


class Luchador

def initialize v, f, d, p, n
@vida = v
@fuerza_ataque = f
@defensa = d
@prob_ataque = p
@nombre = n
end

def golpear
(...)
end

def recibir_golpe x
(...)
end

def vivo?
(...)
end
end


#Todo boxeador es un luchador, por lo tanto tiene todas las características de un luchador, y a parte, características específicas de un boxeador. La herencia se denota con el operador "<", de modo que la clase "Boxeador" hereda de "Luchador": class Boxeador <>
En este caso, un boxeador se comporta de un modo determinado al recibir un golpe, por ese motivo se redefine el método "recibir_golpe".

class Boxeador < Luchador

def initialize n
#super llama al constructor de la clase Luchador
super 90, 15, 2, 0.3, n
end

def recibir_golpe x
(...)
end
end

#Todo karateca es un luchador, igual que en el caso anterior, tiene todas las #características de un luchador, y a parte, características específicas de un karateka.
En el caso del karateka, el modo de golpear es diferente, por eso se redefine el método "golpear".

class Karateka < Luchador
def initialize n
super 100, 10, 4, 0.5, n
end

def golpear
(...)
end
end

No hay comentarios: