[ebook]Programacion de videojuegos con SDL
[ebook]Programacion de videojuegos con SDL
[ebook]Programacion de videojuegos con SDL
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
HerenciaNo sé <strong>de</strong> color tienes los ojos, pero puedo asegurar que <strong>de</strong>l mismo color que alguno<strong>de</strong> tus ascendientes. Este mecanismo biológico fue <strong>de</strong>scrito por Men<strong>de</strong>l (armado <strong>con</strong> unabuena dosis <strong>de</strong> paciencia y una gran cantidad <strong>de</strong> guisantes) y se llama herencia. Laherencia se transmite <strong>de</strong> padres a hijos, nunca al revés. En POO, la herencia funcionaigual, es <strong>de</strong>cir, en un sólo sentido. Mediante la herencia, una clase hija (llamadasubclase) hereda los atributos y los métodos <strong>de</strong> su clase padre. Vamos a verlo mejor <strong>con</strong>un ejemplo. Imaginemos que queremos crear una clase llamada CochePolicia, quea<strong>de</strong>más <strong>de</strong> acelerar y frenar pueda activar y <strong>de</strong>sactivar una sirena. Podríamos crear unaclase nueva llamada CochePolicia <strong>con</strong> los atributos y clases necesarios tanto para frenary acelerar como para activar y <strong>de</strong>sactivar la sirena. En lugar <strong>de</strong> eso, vamos a aprovecharque ya tenemos una clase llamada Coche y que ya <strong>con</strong>tiene algunas <strong>de</strong> lasfuncionalida<strong>de</strong>s que queremos incluir en CochePolicia. Veámoslo sobre un ejemplo.Class CochePolicia:public Coche {private:int sirena;}public:sirenaOn() { sirena=1; }sirenaOff() { sirena=0; }Observa cómo hemos implementado los métodos sirenaOn() y sirenaOff()<strong>de</strong>ntro <strong>de</strong> la misma clase. Esto es completamente válido, y se suele utilizar cuando elcódigo <strong>de</strong>l método es pequeño, como en este caso. Lo primero que nos llama la atención<strong>de</strong> la <strong>de</strong>claración <strong>de</strong> la clase es su primera línea. Tras el nombre <strong>de</strong> la clase, hemosañadido dos puntos seguidos <strong>de</strong> la clase padre, es <strong>de</strong>cir, <strong>de</strong> la que heredamos losmétodos y atributos. El modificador public hace que los métodos y atributos heredadosmantengan sus modificadores <strong>de</strong> acceso originales. Si queremos que se here<strong>de</strong>n comoprotegidos, utilizaremos el modificador protected. Ahora la clase CochePoliciaposee dos atributos, velocidad, que ha sido heredado y sirena, que ha sido <strong>de</strong>clarado<strong>de</strong>ntro <strong>de</strong> la clase CochePolicia. Con los métodos suce<strong>de</strong> exactamente igual. La clasehija ha heredado acelerar() y frenar(), y a<strong>de</strong>más le hemos añadido los métodossirenaOn() y sirenaOff(). Un objeto instancia <strong>de</strong> CochePolicia pu<strong>de</strong> utilizar sinningún problema los métodos acelerar() y frenar() tal y como hacíamos <strong>con</strong> losobjetos instanciados <strong>de</strong> la clase Coche.Es posible heredar <strong>de</strong> dos o más clases a la vez. Esto se llama herencia múltiple.Para heredar <strong>de</strong> más <strong>de</strong> una clase, las enumeramos separadas por comas <strong>de</strong>trás <strong>de</strong> losdos puntos. Sinceramente, a no ser que te guste el riesgo, la herencia múltiple, si no setiene cuidado, te traerá más dolores <strong>de</strong> cabeza que otra cosa.PolimorfismoEl polimorfismo es otra <strong>de</strong> las gran<strong>de</strong>s característica <strong>de</strong> la POO. La palabrapolimorfismo <strong>de</strong>riva <strong>de</strong> poli (multiples) y <strong>de</strong>l término griego morfos (forma). Es <strong>de</strong>cir,múltiples formas.147