Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: javaquery en 21 de Abril 2017, 23:09
-
Buenas
Tengo que hacer un ejercicio , un diagrama de clases pero me salen varias clases y no se si esta bien. el enunciado es el siguiente:
Se quiere desarrollar una aplicación informática que permita llevar a cabo la gestión de varios proyectos informáticos. Habrá que tener almacenada toda la información referente a cada proyecto que se quiera gestionar. Habrá dos tipos de personas que podrán estar involucradas en los proyectos, ya sea para su gestión o para la ejecución de las actividades. Estos dos tipos de personas son el jefe de proyecto y el programador. De cada persona se quiere almacenar su nombre y su DNI.
Un proyecto será liderado por un jefe de proyecto. Pero un jefe cabeza de proyecto sólo podrá gestionar tres proyectos. Un proyecto tiene actividades; cada proyecto podrá tener desde una a muchas (de forma indefinida) actividades, pero una actividad sólo podrá pertenecer a un proyecto.
Los programadores desarrollarán las actividades. Cada programador tendrá vinculada como mínimo una actividad, sin un máximo de actividad establecido. Igualmente, las actividades podrán ser desarrolladas por un mínimo de un programador, sin haber un máximo establecido.
Me sale una clase proyecto, otra actividad, lo que no entiendo donde irian los programadores si serian atributos o clase y los jefes de proyecto.
-
he avanzado un poco, pero no sé si estaria bien
-
Buenas javaquery, para responder a este ejercicio sería bueno que vieras los conceptos de programación orientada a objetos explicados en el curso de Java básico: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188
Comentar:
- Normalmente todos los nombres de clase empiezan por mayúscula siguiendo convención camelCase (lo has hecho bien) y todos los nombres de atributo o métodos comienzan por minúscula siguiendo también convención camelCase
En lugar de obtenernombre sería obtenerNombre
- Los métodos para obtener se suelen escribir como getNombreDelAtributo por ejemplo getNombre
- Te faltarían los métodos para establecer que se suelen escribir como setNombreDelAtributo por ejemplo setNombre
Según el enunciado del ejercicio cada persona podríamos hacer un diseño distinto. Una primera idea que se me ocurre sería algo como:
Clase Aplicacion, con el atributo listaDeProyectos (lista de objetos de tipo Proyecto)
Clase Proyecto con el atributo idProyecto (int identificador del proyecto), jefeDeProyecto (de tipo JefeDeProyecto), nombreDeProyecto (de tipo String), fechaDeComienzo (puede ponerse tipo String) , listaDeActividadesDelProyecto (de tipo Lista de Actividad)
Clase Persona, con los atributos nombre, DNI y puestoQueOcupa.
Clase JefeDeProyecto, que heredará de Persona. Además de los atributos de persona, tendrá como atributo ListaDeProyectosGestionada (esto será un array de capacidad 3 elementos correspondientes a los tres proyectos que puede gestionar un proyecto)
Clase Programador
Clase Actividad, con los atributos nombreActividad (String), listaDeProgramadoresAsignados (de tipo Lista de Programadores)
Hay un detalle de diseño problemático: si introduces como atributo de Proyecto un jefe de proyecto, y en la clase JefeDeProyecto un atributo ListaDeProyectosGestionada, tendrías información duplicada. Para evitarlo, habría que elegir el incluir esta información en una sola clase. Lo mismo ocurre con la asignación de actividades a programadores.
Para saber los proyectos gestionados por un jefe de proyecto, tendrías que recorrer la listaDeProyectos de la aplicación, y para cada proyecto comprobar quién es el jefe de proyecto.
Esto es una idea, habría que plantearlo con más calma y ver si serían necesarias mejoras o cambios
Salu2