Programación

1º DAM/DAW - Curso 2023-2024

User Tools

Site Tools


apuntes:como-objetos

This is an old revision of the document!


Cómo diseñar un problema con POO

Definir las clases para nuestro problema

  1. Para cada elemento que aparezca en el problema que queremos solucionar, diseñaremos una clase con tantos atributos como característica tenga (no confundir con los posibles valores de esas características) y tantos métodos como operaciones o tareas puedan realizarse sobre ese elemento.
  2. Por lo general (y por ahora) declararemos todas las clases como públicas y cada una se escribirá en un fichero con el mismo nombre que la clase (y la extensión .java)
  3. Por lo general (y sino se demuestra lo contrario) todos los atributos de la clase serán privados (encapsulamiento)
  4. Diseñar al menos un constructor o bien algunos con las combinaciones de atributos más habituales a la hora de inicializar los objetos de la clase

Siempre será más conveniente un método que haga cambios sobre un atributo de la clase que modificar directamente dicho atributo

Encapsular la funcionalidad

En la medida de lo posible, una clase debe encapsular la funcionalidad de sus objetos lo máximo posible.

Siempre será mejor hacer un método que modifique una serie de atributos que tenerla que hacer en la clase principal o invocando a varios de los setters de la misma clase

public class Vehiculo { 
  . . .
  public void reparar() { 
    averiado = false;
    estado = Estado.LISTO; 
  }
 
  public void setAveriado( . . .) {
    . . .
  }
 
  public void setEstado( . . . } {
    . . .
  }
 
  . . .
}
. . .
Vehiculo coche = new Vehiculo(. . .)
. . .
coche.reparar();
. . .
coche.setAveriado(false);
. . .
coche.setEstado(Estado.LISTO);
. . .

Relaciones entre clases

Si queremos establecer una relación entre dos clases, haremos que cada una de ellas tenga un atributo de la otra:

  • Las clases pueden hacerse referencia unas a otras. Es decir, en una clase pueden aparecer atributos cuyo tipo es a su vez otra clase
  • En una clase también pueden aparecer atributos cuya clase sea la propia clase
public class Vehiculo {
  private String matricula;
  . . .
  private Propietario propietario;
}
public class Propietarrio {
  private String dni;
  . . . 
  private Vehiculo vehiculo;
}

Ejercicios

  1. Formas parte del equipo de desarrollo de un videojuego de plataformas y eres el encargado de diseñar las clases del proyecto, que será programado en Java. También tienes que escribir el código de esas clases. El videojuego es un plataformas donde hay un personaje principal y una serie de enemigos que se distribuyen a lo largo de un número determinado de pantallas.
    1. Del personaje se debe almacenar el nombre (hay varios para elegir), la vida, los puntos que lleva y también el inventario de todos los objetos que lleva conseguidos. También habrá que saber siempre en que pantalla está el personaje.
    2. Cada tipo de enemigo tiene un nombre diferente, y además hay que almacenar su vida y la pantalla y momento en el que aparecen. Además, cada uno tiene una habilidad (para matarte) diferente
    3. Hay muchas pantallas y cada una tiene un nombre y una serie de objetos escondidos en ella (que pueden o no aparecer, dependiendo de cómo juegue el jugador)
    4. Como se ha comentado, el personaje va recopilando una serie de objetos a lo largo de la partida. De vez en cuando, utilizando esos objetos o combinándolos con ellos, puede conseguir puntos o vidas extra. Es interesante almacenar, para cada objeto, su imagen, el nombre y el efecto que producen en el personaje cuando se usan. Como algunos de ellos deben combinarse entre si para usarse, habrá que guardar esa información también.

© 2023 Santiago Faci

apuntes/como-objetos.1685899521.txt.gz · Last modified: 2023/06/04 17:25 by Santiago Faci