• Compra una licencia de Windows 10/11 (10€) u Office (18€) al mejor precio u Office al mejor precio. Entra en este post con las ofertas
  • ¡Bienvenid@! Recuerda que para comentar en el foro de El Chapuzas Informático necesitas registrar tu cuenta, tardarás menos de 2 minutos y te dará valiosa información además de ayudarte en lo que necesites o pasar un rato agradable con nosotros.

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

Saito_25

Friki informático
Registrado
15 Mar 2015
Mensajes
1.154
Puntos
83
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.
 
¿Qué lenguaje de programación usas?.
 
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.
 
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.
 
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