Ayuda con OOP, duda para determinar las clases de un programa

Saito_25

Personal vaguer
Registrado
15 Mar 2015
Mensajes
897
Puntos
43
Quería pediros consejo para programar un pequeño juego. Estoy empezando a hacer el diagrama de clases primero, pero tengo una duda. Os pongo un poco de contexto y luego planteo la duda. Gracias por la ayuda.

El juego sería hundir la flota, pero algo más avanzado. Habría diferntes tipos de vehículos y diferentes dimensiones: aire, mar, etc.

Cada dimensión la trato como un tablero de 5x5 casillas



Y cada vehículo ocupa un determinado número de casillas. Además, se mueven de diferentes formas. Por ejemplo, el helicóptero se mueve una casilla a cualquier dirección. Y el submarino puede incluso cambiar de dimensióin/tablero



Mi mayor problema es que no sé distinguir muy bien que es un objeto y que una propiedad del mismo. Y la mayor duda que tengo acausa de ello es si las casilla deberían ser una clase que componga al tablero o si por el contrario no es más que un array o hash atributo de la clase tablero



Gracias a todos.
 

kakadeluxe

Master Chapuzas
Registrado
9 Mar 2018
Mensajes
2.519
Puntos
113
Edad
56
¿Qué lenguaje de programación usas?.
 

Saito_25

Personal vaguer
Registrado
15 Mar 2015
Mensajes
897
Puntos
43
Java.

Algo que se me ha olvidado comentar o que quizás no he explicado del todo bien, es que realmente lo que quiero hacer es el diagrama de clases UML y una vez lo tenga bien hecho, lo quiero programar. Estoy aprendiendo sobre los diagramas de clases y me parecen una buena forma para asentar las bases del futuro programa. Por eso la duda de cómo plasmar el UML las casillas, si como una clase o como un atributo de la clase tablero.
 

Megaman

Master Chapuzas
Registrado
19 Sep 2019
Mensajes
786
Puntos
43
Primero tendrías que entender qué es la OOP.

Para entender lo que es un objeto deberías entender en primer lugar qué es una clase. Una clase viene a ser una "plantilla" para los objetos con una serie de atributos, métodos, etc que van a tener todos los objetos de esa clase. Cuando creas en memoria un objeto, se dice que has "instanciado una clase".

Por ejemplo, tendríamos una clase vehículo con unos atributos que podrían ser: tipo, potencia, número de ruedas, color, etc. Luego instanciaríamos dicha clase creando un objeto tipo moto, otro tipo coche, otro tipo avión, etc.

Posteriormente, hay conceptos más avanzados (aunque básicos dentro de OOP), como herencia, polimorfismo, etc.

La pregunta es demasiado amplia para contestarla por un foro. Te recomiendo cogerte un buen libro sobre OOP y empaparte de los principios básicos antes de lanzarte a programar nada.
 

josejfernandez

Software Architect
Registrado
1 Ago 2012
Mensajes
435
Puntos
43
Mi consejo es que evites diagramar ahora mismo y aprendas los conceptos de orientación a objetos. No te hace falta saber todo al dedillo ni estar meses estudiando, pero aprende lo básico que te permita pensar en términos OOP.

Los diagramas se utilizan para plasmar diseños y arquitecturas, y en este momento no estás en situación de fiarte de tus diseños ni de tus arquitecturas por tu falta de experiencia. Para eso te faltan años de práctica, que se adquieren haciéndolo mal muchas veces y aprendiendo de los errores.

Cuando sepas lo básico en la orientación a objetos, intenta hacer una implementación básica de tu proyecto. No seas excesivamente purista ni perfeccionista, lo que importa es que lo pongas en marcha y que vayas viendo tú mismo el camino. A base de diseñar e implementar cosas mejorarás tu capacidad de análisis. Leer está bien, pero no puedes aprender a analizar sin analizar.
 
Arriba