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.

Volvamos al ejemplo <strong>de</strong>l coche. Vamos a <strong>de</strong>finir otra clase <strong>de</strong> objeto, la clase “Coche”. Laclase coche <strong>de</strong>fine a “algo” que está compuesto por objetos (instancias) <strong>de</strong> la clase rueda, laclase carrocería, la clase volante, etc... Ahora vamos a crear un objeto <strong>de</strong> la clase coche, alque llamaremos coche_rojo. En este caso hemos instanciado un objeto <strong>de</strong> la clase coche yhemos <strong>de</strong>finido uno <strong>de</strong> sus atributos, el color, al que hemos dado el valor <strong>de</strong> rojo. Vemos puesque un objeto pue<strong>de</strong> poseer atributos. Sobre el objeto coche po<strong>de</strong>mos <strong>de</strong>finir tambiénacciones u operaciones posibles. Por ejemplo, el objeto coche, entre otras cosas, pue<strong>de</strong>realizar las operaciones <strong>de</strong> acelerar, frenar, girar a la izquierda, etc... Estas operaciones quepue<strong>de</strong>n ser ejecutadas sobre un objeto se llaman métodos <strong>de</strong>l objeto.Po<strong>de</strong>mos hacer ya una primera <strong>de</strong>finición <strong>de</strong> lo que es un objeto. Es la instancia <strong>de</strong> unaclase <strong>de</strong> objeto <strong>con</strong>creta, que está compuesta por atributos y métodos. Esta <strong>de</strong>finición nosmuestra ya una <strong>de</strong> las tres principales características que <strong>de</strong>finen a la POO. Me refiero alEncapsulamiento, que no es, ni más ni menos, que la capacidad que tiene un objeto <strong>de</strong><strong>con</strong>tener datos (atributos) y código (métodos).Clases y objetosVeamos en la práctica como se <strong>de</strong>clara una clase y se instancia un objeto en C++.Podríamos afirmar que, en C++, una clase es algo muy similar a una estructura <strong>de</strong> C en la quea<strong>de</strong>más <strong>de</strong> almacenar datos, po<strong>de</strong>mos añadir las funciones (métodos) que harán uso <strong>de</strong>estos datos. Siguiendo <strong>con</strong> el ejemplo anterior, vamos a <strong>de</strong>clarar la clase “coche”.// Declaración <strong>de</strong> la clase cocheclass Coche {// Atributos <strong>de</strong> la clase cocheint velocidad;// Métodos <strong>de</strong> la clase cochevoid acelerar(int velocidad);void frenar();};En este ejemplo hemos <strong>de</strong>clarado la clase coche. Lo primero que pue<strong>de</strong> chocar alprogramador <strong>de</strong> C es la forma <strong>de</strong> incluir comentarios en el código. C++ permite seguir usandocomentarios al estilo <strong>de</strong> C, pero también aña<strong>de</strong> una nueva forma <strong>de</strong> hacerlo mediante las dosbarras //. C++ interpreta que lo que sigue a las dos barras y hasta el final <strong>de</strong> la línea es uncomentario.La <strong>de</strong>claración <strong>de</strong> la clase coche muestra claramente dos partes diferenciadas. Por unlado, tenemos la <strong>de</strong>claración <strong>de</strong> los atributos <strong>de</strong> la clase (también llamados datos miembro <strong>de</strong>la clase), que en este caso <strong>de</strong>scribe la velocidad <strong>de</strong>l coche. Po<strong>de</strong>mos <strong>de</strong>cir que las variablesmiembro <strong>de</strong> una clase <strong>de</strong>finen el estado <strong>de</strong>l objeto (en este caso el estado <strong>de</strong>l coche estáformado exclusivamente por su velocidad). Ni que <strong>de</strong>cir tiene que esto es un ejemplo muysimplificado y que una clase que tratara <strong>de</strong> <strong>de</strong>scribir el comportamiento <strong>de</strong> un coche seríamucho más compleja. La segunda parte <strong>de</strong> la <strong>de</strong>claración <strong>con</strong>tiene los métodos (funciones)que nos van a permitir realizar operaciones o acciones sobre el objeto. En el caso <strong>de</strong> la clasecoche hemos <strong>de</strong>finido un método acelerar() que nos va a permitir acelerar el coche hastauna <strong>de</strong>terminada velocidad. El método frenar() va a hacer que la velocidad sea 0, es <strong>de</strong>cir,que el coche se pare. Esta es la forma en que se implementa un método en C++. Lassiguientes líneas implementan el método frenar() y acelerar().void Coche::frenar() {// Ponemos a 0 el valor <strong>de</strong>l atributo velocidadvelocidad = 0;}144

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

Saved successfully!

Ooh no, something went wrong!