-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Visual inicial arreglado | Fotoboton cambiado | TEORICO.md realizado
- Loading branch information
1 parent
a399a8a
commit e0ceb97
Showing
9 changed files
with
61 additions
and
40 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
# Conceptos de Programación Orientada a Objetos | ||
|
||
## Clases y Objetos | ||
|
||
En el diseño del juego, las *clases* se utilizan tanto para representar tanto a los personajes como a los elementos interactivos. Por ejemplo, tenemos una clase base `Personaje`, que actúa como plantilla general para los personajes del juego, y clases específicas como `FireBoy` y `WaterGirl` que heredan de `Personaje`. De manera similar, la clase `Diamante` representa a los distintos tipos de diamantes en el juego, con subclases específicas como `DiamanteRojo` y `DiamanteAzul`, que definen características particulares. | ||
|
||
El uso de *clases* permite organizar el código en estructuras que reflejan los elementos del juego, haciendo que cada objeto (instancia de una clase) tenga sus propias propiedades y comportamientos, como la posición en el mapa o la manera que reacciona a colisiones. | ||
|
||
Además, gracias a las *clases*, es sencillo crear múltiples instancias de objetos iguales en diferentes lugares del juego. Por ejemplo, en un nivel podemos necesitar varios diamantes dispersos o varios botones de plataforma que el jugador debe activar. Utilizando la misma clase para todos estos elementos, podemos generarlos de manera uniforme y gestionar sus comportamientos de forma centralizada y evitando repetición de lógica. | ||
|
||
## Herencia | ||
|
||
La *herencia* es utilizada para crear relaciones jerárquicas entre las clases. En nuestro juego, `FireBoy` y `WaterGirl` heredan de la clase base Personaje, compartiendo atributos y métodos comunes, como `moveUp()` y `jump()`. Sin embargo, cada uno puede sobrescribir o extender estos comportamientos para adaptarse a situaciones específicas; por ejemplo, `FireBoy` podría pasar ileso a través de obstáculos de fuego, mientras que `WaterGirl` lo haría con obstáculos de agua. Esto sucede porque las subclases sobrescriben el método `tipo()`. Asimismo, las teclas empleadas para mover los personajes son diferentes, por ende debemos especificar dicho comportamiento en cada subclase particular. | ||
|
||
Esta estructura facilita la reutilización de código, ya que los comportamientos comunes se definen en la clase base, y las subclases solo necesitan implementar las diferencias específicas. Esto hace que el sistema sea fácilmente extensible, permitiendo agregar nuevos personajes o tipos de diamantes sin necesidad de cambios drásticos en el código base. | ||
|
||
## Polimorfismo | ||
|
||
En el código y el contexto del juego, el *polimorfismo* se utiliza para manejar de manera uniforme objetos que comparten una estructura básica, pero responden de forma diferente a ciertos eventos del juego. Un claro ejemplo es la gestión de colisiones: en lugar de diferenciar entre diamantes, plataformas u otros personajes, se utiliza una interfaz común llamada `colision()`. Cada objeto colisionable implementa este método de manera específica, adaptándose a su comportamiento particular. Por ejemplo, mientras que `Caja` se desplaza a la par que el personaje con el que colisionó, un `Diamante` es recolectado por personajes de su mismo tipo. | ||
|
||
Además, utilizamos referencias comunes para varios objetos, como `esAtravesable`, `esColisionable` y el método `tipo()`. Estas características compartidas permiten tratar distintos elementos del juego de manera consistente. | ||
|
||
El *polimorfismo* también se aplica a los objetos del juego, como los diamantes. Al utilizar una clase base llamada `Diamante` y subclases específicas como `DiamanteRojo` y `DiamanteAzul`, se pueden manejar los diamantes de manera genérica en el código. Sin embargo, las diferencias en su comportamiento, como su imagen o tipo, se implementan en cada subclase. Esto facilita la incorporación de nuevos tipos de diamantes sin necesidad de modificar el código central del juego. Ocurre lo mismo con `Personaje`, `Fireboy` y `Watergirl`. | ||
|
||
A partir de esto, apreciamos que el polimorfismo otorga flexibilidad y facilita la reutilización de código, además de tornarlo más extensible y fácil de mantener. | ||
|
||
# Diagrama de Clases | ||
|
||
![alt text](Diagrama.png) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters