Programación Gráfica 8. Clases y objetos. Clases.

21
Programación Gráfica 8. Clases y objetos

Transcript of Programación Gráfica 8. Clases y objetos. Clases.

Page 1: Programación Gráfica 8. Clases y objetos. Clases.

Programación Gráfica

8. Clases y objetos

Page 2: Programación Gráfica 8. Clases y objetos. Clases.

Clases

Page 3: Programación Gráfica 8. Clases y objetos. Clases.

Clases

• En Programación orientada a objetos, cada objeto del mundo real puede ser presentado como una clase en el programa.

• Se pueden instanciar múltiples objetos de esa clase, cada una con diferentes atributos.

Page 4: Programación Gráfica 8. Clases y objetos. Clases.

Declaración

class <identificador de clase>

{

<lista de miembros>

};

Page 5: Programación Gráfica 8. Clases y objetos. Clases.

Especificadores de acceso

class <identificador de clase> {

public: <lista de miembros>

private: <lista de miembros>

protected: <lista de miembros>

};

Page 6: Programación Gráfica 8. Clases y objetos. Clases.

Especificadores de accesoclass Jugador{

private: MovType mov_type;Sprite* sp;float velocity;

public: Jugador(SceneManager* sm);void Move(MovType type);void Stop(MoveType type);void LoopJugador();

};

Page 7: Programación Gráfica 8. Clases y objetos. Clases.

Especificadores de acceso• Acceso privado, private:

– Los miembros privados de una clase sólo son accesibles por los propios miembros de la clase, pero no desde funciones externas o desde funciones de clases derivadas.

• Acceso publico, public:– Cualquier miembro público de una clase es accesible

desde cualquier parte donde sea accesible el propio objeto.

Page 8: Programación Gráfica 8. Clases y objetos. Clases.

Especificadores de acceso

• Acceso protegido, protected:– Con respecto a las funciones externas, es

equivalente al acceso privado, pero con respecto a las clases derivadas se comporta como público

Page 9: Programación Gráfica 8. Clases y objetos. Clases.

Constructores• Son funciones especiales que nos permiten inicializar el

objeto asociado a la clase, y así mismo inicializar todos sus valores.

• Tienen el mismo nombre que la clase, no retornan ningún valor y por lo general son public.

Page 10: Programación Gráfica 8. Clases y objetos. Clases.

Constructores

Jugador::Jugador(SceneManager* sm)

{

this->sp = sm->CreateSprite("naveJugador","nave.bmp",0.0f,0.0f);

this->velocity = 2.0f;

this->mov_type = MovType::MOV_NONE;

}

Page 11: Programación Gráfica 8. Clases y objetos. Clases.

Sobrecarga de constructores• Al igual que las funciones, éstas se pueden sobrecargar

de igual manera.

Jugador(SceneManager* sm);

Jugador(SceneManager* sm, int x, int y);

Jugador(SceneManager* sm, int x, int y, char name[50]);

Page 12: Programación Gráfica 8. Clases y objetos. Clases.

Creación de objetos• Para crear un objetos se debe asignar espacio en

memoria para dicho objeto y sus componentes.

• Para ir al espacio de memoria asignado se ocupan PUNTEROS.

• Un objeto no es más que una instancia de una clase, y por lo tanto se pueden crear tantas instancias como memoria se tenga.

Page 13: Programación Gráfica 8. Clases y objetos. Clases.

Objetos• Para crear objetos se utiliza el operador * y la palabra

reservada new.

• Jugador* jugador1 = new Jugador(sm)

• Jugador* jugador2 = new Jugador(sm, 0, 100);

• Jugador* jugador3 = new Jugador(sm, 0, 100, “Terminator”);

Page 14: Programación Gráfica 8. Clases y objetos. Clases.

Funciones• Cada clase puede tener funciones que representarán las

acciones que puede realizar un objeto en el mundo real -> POO.

• Ejemplo:– Un Soldado puede: Disparar, Correr, Cargar su arma, etc.– Un Auto puede: Aplicar Turbo, Avanzar, Girar, etc.

Page 15: Programación Gráfica 8. Clases y objetos. Clases.

Funciones - Ejemplo

• Se tiene una enumeración que indique los movimientos que puede hacer un jugador.

enum MovType

{

MOV_NONE,

MOV_UP,

MOV_RIGHT,

MOV_LEFT,

MOV_DOWN

};

Page 16: Programación Gráfica 8. Clases y objetos. Clases.

Funciones - Ejemplovoid Jugador::Move(MoveType mov_Type){

switch(mov_type){

case MOV_UP:sp->SetPosition(sp->getPositionX(), sp->getPositionY() - velocity);break;

case MOV_LEFT:sp->SetPosition(sp->getPositionX() - velocity, sp->getPositionY());break;

case MOV_RIGHT:sp->SetPosition(sp->getPositionX() + velocity, sp->getPositionY());break;

case MOV_DOWN:sp->SetPosition(sp->getPositionX(), sp->getPositionY() + velocity);break;

default:break;

}}

Page 17: Programación Gráfica 8. Clases y objetos. Clases.

Funciones• Para llamar a las funciones de un objeto se ocupa el operador ->

jugador1->Move(MoveType::MOV_DOWN);

jugador2->Move(MoveType::MOV_UP);

Page 18: Programación Gráfica 8. Clases y objetos. Clases.

Destructores• Sirven para eliminar un objeto de una clase

determinada, liberando memoria utilizada por el objeto.

~WorldManager()

{

delete background;

delete jugador;

delete sm;

}

Page 19: Programación Gráfica 8. Clases y objetos. Clases.

C++ .NET• En C++ .NET las clases son administradas, esto quiere

decir que el entorno provee servicios automáticos al código que se ejecuta.

• Para declarar una clase se utiliza la palabra reservada “ref”.

ref class Jugador

{

<cuerpo>

};

Page 20: Programación Gráfica 8. Clases y objetos. Clases.

C++ .NET• Para asignar memoria y crear objetos se utiliza el

operador ^ y la palabra reservada gcnew.

Jugador^ jugador = gcnew Jugador(sm);

• Para llamar a funciones del objeto, es lo mismo que en c++ standar.

jugador->Mover(MoveType::MOV_UP);

Page 21: Programación Gráfica 8. Clases y objetos. Clases.