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

septiembre 27, 2008 at 9:10 pm 10 comentarios

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!

Anuncios

Entry filed under: C#. Tags: , , , , , .

Duke Nukem 3D en LIVE Arcade Estructura de un proyecto XNA.

10 comentarios Add your own

  • 1. franklin carmona  |  diciembre 30, 2008 en 8:42 pm

    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

    Responder
  • 2. kennyhp  |  enero 2, 2009 en 1:56 pm

    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 🙂

    Responder
  • 3. vale  |  febrero 27, 2009 en 8:16 pm

    Hola disculpa me puedes enviar el tutorial completo q quiero aprender

    Responder
  • 4. kennyhp  |  marzo 2, 2009 en 9:03 am

    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.

    Responder
  • 5. kamilo  |  marzo 2, 2009 en 7:48 pm

    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..

    Responder
  • 6. Password  |  abril 19, 2009 en 11:14 am

    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.

    Responder
    • 7. xuturk  |  marzo 29, 2010 en 8:49 pm

      Hola, he entrado por casualidad buscando informacion de XNA, Kamilo, la solucion a tu problema es, que como estas creando un objeto de la clase nave, si te fijas en el constructor que le has dado:

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

      ese es el constructor, por lo que en la instruccion de creaccion del objeto tienes que escribir:

      Nave naveProtagonista = new Nave(5);

      he puesto 5 por poner un ejemplo, pero puedes poner el numero que quieras que tenga de velocidad, o bien sobrecargar el constructor y añadir en la clase nave:

      public Nave(int velocidad)
      {
      }

      almenos asi seria en java jeje y por lo que he visto son casi iguales, estoy empezando tambien en C# y espero estar haciendo juegos pronto.

      un saludo!

      Responder
      • 8. xuturk  |  marzo 29, 2010 en 8:51 pm

        perdon no era para camilo jeje me confundi de usuario, era Password

  • 9. fabian  |  octubre 17, 2009 en 12:38 pm

    Hola señor si es tan amable de por favor decirme como seria el mismo ejercico de las naves pero con coordenadas ordenadas en vectores,, es que soy amateur y quiero aprender mucho. para que por favor me diga comoseria, ah ademas si es tan bondadoso de darme la formula de los numeros aleatorios en c#….gracias por su ayuda…………
    fabian 3007847098-meescribe alcorreo o llama si,,??
    graciiiiiiiiiiiiiiiaaaaaaaaaaaaaaaaaaaaaassssssssssssssssssss por tu ayuda………

    Responder
  • 10. Lucas  |  diciembre 8, 2013 en 8:02 pm

    gracias por el tutorial, pero podrias mejorar la calidad de los videos? no se puede leer nada del código. En caso de que sea demasiado trabajo, por favor adjunta el codigo a la descripcion del video, seria de mucha ayuda, gracias

    Responder

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Trackback this post  |  Subscribe to the comments via RSS Feed


Entradas recientes

Categorías

septiembre 2008
L M X J V S D
    Oct »
1234567
891011121314
15161718192021
22232425262728
2930  

Feeds

Visitas totales:

  • 92,546 visitas
wordpress stats

A %d blogueros les gusta esto: