sábado, 27 de septiembre de 2008

C#.Capitulo 1: Programación orientada a objetos.

Una de las cosas que más me costó comprender y asimilar cuando empecé en esto de programar fue la orientación a objetos, tal vez por que aprendí con C, que es un lenguaje secuencial no orientado a objetos, tal vez porque no me lo explicaron bien o tal vez porque no doy para más, no lo sé, la cuestión es que me costó lo suyo.

Para explicar la orientación a objetos siempre se pone el ejemplo del coche, que tiene ruedas y un color y bla bla bla…, nunca me ha parecido un buen ejemplo, aunque conceptualmente no es malo, no me ayuda a comprender de que va el tema, por eso voy a intentar explicártelo tal y como a mí me hubiese gustado que me lo explicasen, aunque si no lo entiendes no dudes en preguntar en los comentarios.


Un programa informático, no es más que una serie de instrucciones que le damos a la máquina para que se comporte como nosotros queremos, y como todos sabemos, las máquinas son tontas, por lo tanto tenemos que decirles cómo han de hacer las cosas y para eso tenemos los lenguajes de programación como C#, que es un lenguaje orientado a objetos.


Los objetos son construcciones de programación que se componen de datos, comportamiento e identidad. Los datos del objeto se encuentran en los campos, propiedades y eventos del objeto; los métodos e interfaces del objeto definen los comportamientos del objeto.



Además un objeto esta conformado por una serie de “propiedades” que nos permitirá trabajar con él:


· Métodos: Un objeto se puede componer de varios métodos, en realidad estos métodos serán los que den funcionalidad al objeto, por ejemplo podríamos tener un método que mueva la nave de nuestro juego cuando pulsamos una tecla y otro método que haga que la nave dispare, el objeto contendrá todos estos métodos para poder ser usados cuando sea necesario.


· Eventos: Un evento no es más que una acción que ocurre en un momento determinado, por ejemplo cuando el jugador pulsa el botón. Un evento también podría ser cuando un sprite (un gráfico en 2D) se “pinta” en la pantalla.


· Propiedades: Es con lo que el objeto guarda los datos que necesita durante su ejecución, podemos modificar o acceder a estos datos cuando lo necesitemos, por ejemplo para saber el número de vidas que nos quedan.


Todos estos métodos, eventos y propiedades se encapsulan en una clase, lo que hemos de hacer para usar un objeto es instanciar su clase.


En nuestro juego podríamos tener un objeto nave que cuando pulsamos en botón de flecha hacia arriba captura el evento de pulsación de botón y esté evento llama al método para acelerar la nave, cuando esta choca contra un asteroide se llama al método que hemos creado para que reste uno a la propiedad vida. Muy pronto podremos ver esto en un juego.


Observa el siguiente ejemplo:



using System;
using System.Collections.Generic;
using System.Text;




namespace ConsoleApplication1
{
class Nave
{
private int _velocidad;
public int Velocidad
{
get { return _velocidad; }
set { _velocidad = value; }
}


public Nave(int velocidad)
{
_velocidad = velocidad;
}


public void Acelerar()
{
_velocidad++;
}

public void Frenar()
{
_velocidad--;
}
}




}

En este ejemplo tenemos una clase Nave que tiene la propiedad velocidad y los métodos acelerar y frenar que modifican la propiedad velocidad.

Para usar nuestra nave tenemos que instanciar la clase para crear el objeto.

Observa:

Nave naveProtagonista = new Nave();

Acabamos de instanciar un objeto del tipo nave al que hemos llamado naveProtagonista, ahora podríamos acceder a sus métodos y propiedades:

naveProtagonista.Acelerar();

Lógicamente el tema es mucho más complicado, pero ya iremos viendo poco a poco todas las posibilidades que nos dan los objetos.



En el siguiente video podemos ver todo lo explicado en acción:









Espero que os haya servido, ¡cualquier duda que tengáis preguntar en los comentarios!

6 comentarios:

  1. que tal amigo saludos oye necesito hacerte una pregunta está bien que aprenda tanto el lenguaje de programación python y este que nos estas enseñando cual de los dos es mejor para aprender a programar gracias espero pronto tu respuesta

    ResponderEliminar
  2. Pues la verdad es que no conozco Python, así que no puedo compararlos, lo que si se es que C# es un lenguaje orientado a objetos y que no solo sirve para trabajar con XNA, sirve para programación Web y Windows, y tiene a Microsoft detrás con la seguridad y estabilidad que eso da. Si te gusta programar aprende los dos :)

    ResponderEliminar
  3. Hola disculpa me puedes enviar el tutorial completo q quiero aprender

    ResponderEliminar
  4. Pues voy públicando a medida que lo escribo, así que no tengo más de lo que aquí ves. Si tienes ganas de aprender visita la MSDN, la dirección está en la sección de Links.
    Saludos.

    ResponderEliminar
  5. venga amigo lo que pasa es que tengo que hacer un proyecto, y es un juego en c#, en mi grupo estamos trabajando en uno de naves y necesito saber como seria este para que la nave disparara..gracias
    espero pronta respuesta..

    ResponderEliminar
  6. Hola he intentado seguir el tutorial y... 2 cosas
    1.- Hay cosas que haces en el video pero no pones en el codigo.
    2.- he echo lo que pones de codigo y me sale este error:

    consoleaplicattion.Nave no contien un constructor que tome argumentos '0'

    por lo demas muy bien.

    ResponderEliminar