Está en la página 1de 4

Programación Orientada a Objetos

PEC4 Cuarta Prueba de Evaluación Continua

Apellidos: Escribe aquí tus apellidos


Nombre: Escribe aquí tu nombre

Indicaciones:

Razonar y justificar todas las respuestas.

Para dudas y aclaraciones sobre el enunciado, dirigíos al consultor responsable de


vuestra aula de teoría. Para dudas sobre codificación, dirigíos al consultor responsable
de vuestra aula de laboratorio.

Entrega:

1. Se debe enviar la solución en un archivo denominado


ApellidosNombre_POO_PEC4 dirigido al buzón “Envío de actividades” del aula de
teoría.

2. Si la entrega incluye múltiples documentos (por ejemplo, archivos fuente), se


enviarán todos comprimidos en un único archivo ZIP.

3. La solución debe estar en un archivo compatible Word (.doc), PDF (.pdf) o RTF
(.rtf). En caso de incluir diagramas o figuras (por ejemplo, UML), incrustarlos en el
propio documento, no los enviéis en archivos separados.

4. En caso de incluir archivos de código fuente (Java ), incluirlos en un directorio de


nombre /src dentro del ZIP.

5. Fecha límite para enviar la solución: miércoles, 6 de Mayo de 2009 (a las 23:59
horas).

Es imprescindible respetar el formato y la fecha de entrega. La no adecuación a


estas especificaciones puede suponer la no evaluación de la PEC.

Ejercicio 1:Diseño UML [100%]

Objetivos: Generar un modelo estático de cierta complejidad y trabajar algunos de


los conceptos importantes de la programación orientada a objetos. El ejercicio
consiste en diseñar la solución de un problema complejo.

1 de 4
Nota: El modelo correspondiente a esta PEC será el punto de partida para la
práctica 2. Así, la realización de esta PEC es especialmente importante para
familiarizarse con el contexto de trabajo de la última práctica de la asignatura.

Materiales: Durante la realización del ejercicio se recomienda especialmente tener


presentes los módulos comprendidos entre el 2 y el 5, así como el bloque II del módulo
7.

Tarea:

La empresa ultima.fm quiere desarrollar una aplicación que gestione un catálogo


de clips musicales. Un clip musical (audio clip) es un fichero de audio del que se
conoce el título de la obra, los autor(es) (compositor/es y/o intérprete/s) y la duración
en segundos. Para una misma obra musical puede haber varios audioclips que son
interpretaciones de la misma (por distintos intérpretes), aunque no se guarda en el
catálogo audioclips de la misma obra interpretada por los mismos intérpretes (aunque
sea en diferentes fechas). El título de un audioclip, será, obviamente, el título de la
obra que se interpreta en el audioclip. No hay audioclips que contengan más de una
interpretación.

Un audioclip puede tener más de un artista intérprete, y una obra puede tener más de
un compositor. También es posible que una misma persona sea compositor e
intérprete a la vez. Por ejemplo, Bruce Springsteen es compositor e intérprete de
muchas canciones, pero también es intérprete de canciones compuestas por otros.
Cada audioclip contiene la interpretación de una sola obra. Algunos audioclips
requieren un pago previo para ser escuchados. De estos audioclips se debe guardar el
precio que tienen actualmente, y la lista de los usuarios que tienen acceso a ellos (el
pago se hace fuera del sistema, por lo que solo hay que saber en esta aplicación quién
puede y quién no puede acceder).

Un ejemplo de elemento en el catálogo sería el siguiente: el compositor de la obra


“Berceuse in Db Major Opus 57” es “Frederic Chopin”, pero puede que un audioclip
contenga la interpretación de esa obra por “Murray Perahia” y otro por “Zubin Metha y
Murray Perahia”. Serían dos audioclips diferentes que recogen dos interpretaciones de
diferentes combinaciones de intérpretes dela misma obra, que la interpretan de forma
diferente. Otro ejemplo sería el de dos audioclips de la canción “My Way” (cuyo
compositor es Frank Sinatra), uno de ellos interpretado por el propio Frank Sinatra y el
otro interpretado por SexPistols.

Los artistas pueden ser personas o grupos. De todos los artistas (compositores o
intérpretes) se guarda su nombre. En el caso de los artistas individuales, se guarda su
año de nacimiento y de defunción (esta última si es aplicable). En el caso de los
grupos se guarda el año en que se constituyeron (no se guardan los individuos que
pertenecen al grupo).

Los audioclips deben estar clasificados en categorías como “Clásica”, “Pop”, “Jazz”,
etc. Puede que un mismo audioclip esté en más de una categoría, por ejemplo cuando
es una música que fusiona varios estilos. Las categorías están pre-fijadas en el
sistema, aunque quizá en el futuro se reorganicen y se aumente el número de las
mismas. La clasificación se hace mediante las obras, de modo que todos los
audioclips de una obra siempre tendrán la misma clasificación. Las categorías pueden
dividirse en sub-categorías, y estas en otras, formando un árbol de clasificación con
varios niveles. Por ejemplo, la caregoría “Clásica”, se puede descomponer en

2 de 4
“Barroca”, “Romántica”, etc, y a su vez “Barroca” puede tener como subcategorías
“Barroco temprano” y “Barroco tardío”, por ejemplo.

Los usuarios del sistema pueden utilizar el catálogo y cuando escuchan un audioclip
pueden valorarlo si lo desean en una escala de 0 a 10, indicando en qué medida les
ha gustado. Además, los usuarios pueden guardar en su biblioteca personal enlaces a
los audioclips que quieran de los que hayan escuchado. También pueden guardar
enlaces a los artistas (individuos o grupos) que consideren sus favoritos.

Funcionalidades del sistema:

En una primera fase se contemplará una parte de las funcionalidades para


implementar. Las funcionalidades a implementar para esa primera fase en el aplicativo
son:

1. Añadir una nueva obra al catálogo


2. Añadir un nuevo audioclip al catálogo.
3. Añadir un nuevo autor artista al catálogo.
4. Asociar una obra a una categoría.
5. Listar para una categoría las obras musicales de dicha categoría, ordenadas de
mayor a menor según su valoración media.
6. Añadir un audioclip a la colección personal de un usuario.
7. Valorar un audioclip (con la escala de 1 a 10 que se mencionó más arriba).
8. Añadir un artista como favorito de un usuario

Descripción breve de cada funcionalidad:

1. Añadir una nueva obra al catálogo


Permite añadir una nueva obra al catálogo, habiendo previamente añadido sus
compositores.

2. Añadir un nuevo audioclip al catálogo


Permite añadir un nuevo audioclip al catálogo, habiendo previamente añadido sus
intérpretes y la obra de la que el audioclip contiene una interpretación. Todos los
datos del audioclip son obligatorios.

3. Añadir un nuevo autor artista al catálogo


Permite añadir un nuevo artista al catálogo, sea compositor, intérprete o ambos.
También debe contemplar que el artista sea un individuo o un grupo.

4. Asociar una obra a una categoría.


Asocia una obra a una categoría (o subcategoría dentro de otra categoría).

5. Listar para una categoría las obras musicales de dicha categoría,


ordenadas de mayor a menor según su valoración media.
Lista las obras según su valoración media por parte de los usuarios, utilizando para
ellos las valoraciones de los audioclips. Las obras en esa lista han de haber sido
valoradas por un número mínimo N de usuarios (siendo N una constante
predefinida en el sistema).

6. Añadir un audioclip a la colección personal de un usuario.


Añade un audioclip a la biblioteca personal de un usuario.

3 de 4
7. Valorar un audioclip.
Dado un audioclip determinado, el usuario introduce su valoración personal del
mismo en una escala de 1 a 10 (siendo 10 la mejor puntuación). Estas
puntuaciones se utilizarán en el futuro para más cosas, incluyendo la
recomendación de audioclips a los usuarios basadas en la similaridad entre
usuarios basada en las valoraciones, por lo que es necesario guardar la historia
completa de valoraciones de cada usuario.

8. Añadir un artista como favorito de un usuario


El usuario añade un artista en su colección de favoritos.

Evaluación:

En esta PEC se pide:

• Identificar todas las clases necesarias para realizar la aplicación descrita.

• Identificar todas las relaciones (herencia, asociación, agregación y uso)


entre las clases anteriores.

• Realizar el diagrama estático de datos UML, con las clases y las relaciones,
especificando cardinalidad y navegabilidad de las mismas. Especificar también
los atributos necesarios en todo el modelo, y también los métodos necesarios
para cubrir la funcionalidad (5) (excepto para los métodos accesores,
getters/setters, que no es preciso mencionarlos).

• Justificar brevemente y de manera concisa las decisiones de diseño que


habéis tomado, especialmente en aquellos casos en lo que veáis posibles
alternativas de diseño. Ante posibles alternativas de diseño que podáis pensar,
un factor de decisión sería proponer un diseño flexible que facilite la
reutilización de código ante posibles modificaciones y/o ampliaciones de
funcionalidad de la aplicación descrita en el enunciado, siguiendo siempre los
principios de orientación a objetos. También se valorará que no haya
duplicación innecesaria de la información entre las diversas clases, excepto si
es por motivos de eficiencia del código, en cuyo caso se deberán justificar.

Nota: Para realizar el diagrama UML podéis utilizar cualquier herramienta de


diseño/dibujo, a vuestra elección. Desde la asignatura os recomendamos ArgoUML.
Posteriormente tenéis que enganchar una imagen del diagrama en el archivo
(documento) solución que entreguéis. No entreguéis el archivo ArgoUML, sino sólo la
imagen del diagrama incrustada en el documento solución.

4 de 4

También podría gustarte