10.07.2015 Views

[ebook]Programacion de videojuegos con SDL

[ebook]Programacion de videojuegos con SDL

[ebook]Programacion de videojuegos con SDL

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!