1
Aprender a programar desde cero / Re:Java cómo obtener atributo de objeto que está dentro de un arrayList y éste tb?
« en: 18 de Mayo 2016, 23:16 »
En esta primera etapa realizaremos el modelado inicial de alguno de los componentes principales del sistema. Como ya hemos explicado, uno de estos elementos son los alumnos a los que se imparten las clases, y que como hemos comentado ser´an modelados como objetos. As´ı pues, necesitaremos definir una clase denominada Alumno que nos permita crear las
distintas instancias.
Como punto de partida, en el sistema que queremos implementar cada alumno se caracteriza por los siguientes atributos:
1. Cada alumno se identifica por su nombre y apellidos.
2. Tambi´en habr´a que considerar su fecha de nacimiento y tel´efono de contacto, as´ı como su direcci´on.
3. El sistema deber´a tener constancia de si el alumno pertenece a una familia numerosa y si est´a empadronado en el municipio.
Adem´as, un objeto de esta clase Alumno nos debe permitir consultar y modificar todos estos campos a trav´es de una serie de m´etodos creados a tal efecto: por cada atributo debe haber dos m´etodos, uno para consultar su valor y otro para modificarlo.
Por ejemplo, para el campo nombre tendremos los m´etodos getNombre() y setNombre() para consultar su valor y modificarlo, respectivamente.
Asimismo, deber´a existir un m´etodo, llamado mostrarInfoAlumno(), que escriba por pantalla la informaci´on de un alumno concreto, con un formato legible
clase llamada Lanzador, donde implementaremos el m´etodo main(). Esta clase por tanto ser´a la encargada de crear el gestor de la academia, alumnos, aulas, etc. y de realizar simulaciones de operaciones
En primer lugar, necesitaremos para esta fase una clase Aula. Esta clase representar´a el espacio f´ısico donde se imparte
cada una de las materias. ´ Esta debe tener las cubrir las siguientes restricciones o funcionalidades:
1. El nombre de cada aula puede ser cualquier cadena de caracteres alfanum´ericos. Podr´ıa llamarse, por ejemplo, ”Sala
123” o ”Sala Roja”.
2. La academia en la que se quiere implantar el sistema es bastante grande. Conviene que el sistema tenga control sobre
el piso de cada aula para ofrecer esta informaci´on cuando sea necesario a los alumnos o profesores de la plantilla.
3. El aula deber´a contener otro atributo que represente el n´umero de alumnos a los que puede dar cabida dicha aula. Esta
informaci´on ser´a importante para gestionar la distribuci´on de alumnos y profesores.
4. Es importante tambi´en distinguir entre aulas que disponen de piano y aulas que no, dado que algunas de las materias
impartidas lo requieren (piano, solfeo, canto), mientras que en otras no es necesario (chelo, saxof´on).
5. Otro atributo indicar´a si el aula dispone de medios audiovisuales.
6. Por supuesto, la clase Aula deber´a disponer de los m´etodos necesarios para actualizar sus campos.
La segunda clase que debe incorporarse en el sistema es Materia, siguiendo las siguientes especificaciones:
1. Una materia tiene un nombre, por ejemplo “M´usica y movimiento II”
2. Una materia tiene una cuota. Es decir, con vistas al proceso de facturaci´on a los alumnos, debe conocerse el precio de
cada materia en t´erminos de cuota mensual.
3. El sistema debe de saber, para cada materia, si requiere medios audiovisuales y/o piano.
4. Para cada materia, deberemos poder conocer qu´e grupos tiene. Esto supone de nuevo un mecanismo de composi´on por
medio de estructuras tipo lista.
5. Debe de ser posible actualizar cada uno de sus campos, as´ı como a˜nadir o eliminar un grupo de su lista.
6. Adem´as, la clase Materia debe de disponer de los m´etodos que sean necesarios para efectuar las funcionalidades que
se especifican en el siguiente apartado.
En tercer lugar, tendremos que introducir tambi´en una clase Profesor, siguiendo las siguientes especificaciones:
1. Al igual que un alumno, un profesor tiene un nombre y dos apellidos.
2. Se almacenar´a el DNI, tel´efono de contacto y direcci´on del profesor.
3. Dispondr´a de m´etodos que permitan la actualizaci´on de los campos y mostrar la informaci´on del profesor.
introduciendo los campos necesarios para establecer las
relaciones de composici´on entre las clases creadas en esta fase. Estas relaciones se establecer´an siguiendo las siguientes
especificaciones:
1. Un grupo se imparte en un aula determinada.
2. En un grupo se imparte una ´unica cierta materia.
3. En un grupo imparte clase un profesor.
4. Deber´a modificarse el m´etodo destinado a mostrar en pantalla toda la informaci´on relativa al grupo. Se espera que
adem´as de mostrar la informaci´on de cada uno de los alumnos, muestre tambi´en el t´ıtulo de la materia impartida, el
identificador del aula donde se imparte y el nombre del profesor que la imparte.
Finalmente, tendremos que ampliar tambi´en la clase Alumno dado que ahora tendr´a asociado tambi´en los grupos en los que est´a matriculado. Deber´a por tanto tambi´en a˜nadirse un m´etodo que permita incluir o eliminar un grupo en la clase alumno
clase denominada Academia siguiendo las siguientes especificaciones:
1. Una academia tiene un nombre, y direcci´on.
2. Se debe poder imprimir en pantalla un listado de las materias que se ofertan, as´ı como la informaci´on de cada uno de
los grupos en donde se imparte: nombre de profesor, nombre de aula y horario.
3. Imprimir en pantalla, por cada materia y grupo, los nombres de los alumnos que asisten a cada grupo.
4. Dar de alta o de baja a un alumno en un grupo.
5. Dar de alta o de baja a un nuevo grupo en una materia.
nueva clase denominada Factura con las siguientes caracter´ısticas
y funcionalidad:
1. Cada factura lleva el nombre del alumno y la fecha correspondiente.
2. Una factura incluye la informaci´on del total de la cuota y un desglose por materias impartidas.
Una vez que hemos a˜nadido el concepto de factura a nuestro programa, debemos a˜nadir la funcionalidad que nos permita
emitir las facturas mensualmente de todos los alumnos y almacenarlas en un hist´orico de facturaci´on.
dos nuevos tipos de factura dependiendo
de las caracter´ısticas del alumno. Cuando el alumno sea de familia numerosa, tendr´a un descuento del 10%. Cuando el
alumno est´e empadronado, ya no tendr´a efecto el que sea de familia numerosa, pero tendr´a un descuento del 20% en todas
las materias.
Teniendo en cuenta esto, debe crear dos nuevas clases Factura empadronamiento y Factura familia numerosa que
agreguen los costes de cada materia recibida dependiendo de las caracter´ısticas del alumno. Por lo tanto, con el fin de evitar
en la mayor medida posible el acoplamiento, las clases hijas deben reimplementar ´unicamente el m´etodo encargado de sumar
las cantidades. Para ello, la clase padre debe de estar implementada de forma que su c´odigo se distribuya correctamente entre distintos m´etodos.
T´engase en cuenta que en el caso de que est´e empadronado, ya no tendr´a efecto el que sea de familia numerosa, por lo
que no ser´a necesario mantener el descuento anterior. A continuaci´on, realice el proceso de facturaci´on. En pantalla, deber´ıan
imprimirse las facturas con las modificaciones correspondientes
distintas instancias.
Como punto de partida, en el sistema que queremos implementar cada alumno se caracteriza por los siguientes atributos:
1. Cada alumno se identifica por su nombre y apellidos.
2. Tambi´en habr´a que considerar su fecha de nacimiento y tel´efono de contacto, as´ı como su direcci´on.
3. El sistema deber´a tener constancia de si el alumno pertenece a una familia numerosa y si est´a empadronado en el municipio.
Adem´as, un objeto de esta clase Alumno nos debe permitir consultar y modificar todos estos campos a trav´es de una serie de m´etodos creados a tal efecto: por cada atributo debe haber dos m´etodos, uno para consultar su valor y otro para modificarlo.
Por ejemplo, para el campo nombre tendremos los m´etodos getNombre() y setNombre() para consultar su valor y modificarlo, respectivamente.
Asimismo, deber´a existir un m´etodo, llamado mostrarInfoAlumno(), que escriba por pantalla la informaci´on de un alumno concreto, con un formato legible
clase llamada Lanzador, donde implementaremos el m´etodo main(). Esta clase por tanto ser´a la encargada de crear el gestor de la academia, alumnos, aulas, etc. y de realizar simulaciones de operaciones
En primer lugar, necesitaremos para esta fase una clase Aula. Esta clase representar´a el espacio f´ısico donde se imparte
cada una de las materias. ´ Esta debe tener las cubrir las siguientes restricciones o funcionalidades:
1. El nombre de cada aula puede ser cualquier cadena de caracteres alfanum´ericos. Podr´ıa llamarse, por ejemplo, ”Sala
123” o ”Sala Roja”.
2. La academia en la que se quiere implantar el sistema es bastante grande. Conviene que el sistema tenga control sobre
el piso de cada aula para ofrecer esta informaci´on cuando sea necesario a los alumnos o profesores de la plantilla.
3. El aula deber´a contener otro atributo que represente el n´umero de alumnos a los que puede dar cabida dicha aula. Esta
informaci´on ser´a importante para gestionar la distribuci´on de alumnos y profesores.
4. Es importante tambi´en distinguir entre aulas que disponen de piano y aulas que no, dado que algunas de las materias
impartidas lo requieren (piano, solfeo, canto), mientras que en otras no es necesario (chelo, saxof´on).
5. Otro atributo indicar´a si el aula dispone de medios audiovisuales.
6. Por supuesto, la clase Aula deber´a disponer de los m´etodos necesarios para actualizar sus campos.
La segunda clase que debe incorporarse en el sistema es Materia, siguiendo las siguientes especificaciones:
1. Una materia tiene un nombre, por ejemplo “M´usica y movimiento II”
2. Una materia tiene una cuota. Es decir, con vistas al proceso de facturaci´on a los alumnos, debe conocerse el precio de
cada materia en t´erminos de cuota mensual.
3. El sistema debe de saber, para cada materia, si requiere medios audiovisuales y/o piano.
4. Para cada materia, deberemos poder conocer qu´e grupos tiene. Esto supone de nuevo un mecanismo de composi´on por
medio de estructuras tipo lista.
5. Debe de ser posible actualizar cada uno de sus campos, as´ı como a˜nadir o eliminar un grupo de su lista.
6. Adem´as, la clase Materia debe de disponer de los m´etodos que sean necesarios para efectuar las funcionalidades que
se especifican en el siguiente apartado.
En tercer lugar, tendremos que introducir tambi´en una clase Profesor, siguiendo las siguientes especificaciones:
1. Al igual que un alumno, un profesor tiene un nombre y dos apellidos.
2. Se almacenar´a el DNI, tel´efono de contacto y direcci´on del profesor.
3. Dispondr´a de m´etodos que permitan la actualizaci´on de los campos y mostrar la informaci´on del profesor.
introduciendo los campos necesarios para establecer las
relaciones de composici´on entre las clases creadas en esta fase. Estas relaciones se establecer´an siguiendo las siguientes
especificaciones:
1. Un grupo se imparte en un aula determinada.
2. En un grupo se imparte una ´unica cierta materia.
3. En un grupo imparte clase un profesor.
4. Deber´a modificarse el m´etodo destinado a mostrar en pantalla toda la informaci´on relativa al grupo. Se espera que
adem´as de mostrar la informaci´on de cada uno de los alumnos, muestre tambi´en el t´ıtulo de la materia impartida, el
identificador del aula donde se imparte y el nombre del profesor que la imparte.
Finalmente, tendremos que ampliar tambi´en la clase Alumno dado que ahora tendr´a asociado tambi´en los grupos en los que est´a matriculado. Deber´a por tanto tambi´en a˜nadirse un m´etodo que permita incluir o eliminar un grupo en la clase alumno
clase denominada Academia siguiendo las siguientes especificaciones:
1. Una academia tiene un nombre, y direcci´on.
2. Se debe poder imprimir en pantalla un listado de las materias que se ofertan, as´ı como la informaci´on de cada uno de
los grupos en donde se imparte: nombre de profesor, nombre de aula y horario.
3. Imprimir en pantalla, por cada materia y grupo, los nombres de los alumnos que asisten a cada grupo.
4. Dar de alta o de baja a un alumno en un grupo.
5. Dar de alta o de baja a un nuevo grupo en una materia.
nueva clase denominada Factura con las siguientes caracter´ısticas
y funcionalidad:
1. Cada factura lleva el nombre del alumno y la fecha correspondiente.
2. Una factura incluye la informaci´on del total de la cuota y un desglose por materias impartidas.
Una vez que hemos a˜nadido el concepto de factura a nuestro programa, debemos a˜nadir la funcionalidad que nos permita
emitir las facturas mensualmente de todos los alumnos y almacenarlas en un hist´orico de facturaci´on.
dos nuevos tipos de factura dependiendo
de las caracter´ısticas del alumno. Cuando el alumno sea de familia numerosa, tendr´a un descuento del 10%. Cuando el
alumno est´e empadronado, ya no tendr´a efecto el que sea de familia numerosa, pero tendr´a un descuento del 20% en todas
las materias.
Teniendo en cuenta esto, debe crear dos nuevas clases Factura empadronamiento y Factura familia numerosa que
agreguen los costes de cada materia recibida dependiendo de las caracter´ısticas del alumno. Por lo tanto, con el fin de evitar
en la mayor medida posible el acoplamiento, las clases hijas deben reimplementar ´unicamente el m´etodo encargado de sumar
las cantidades. Para ello, la clase padre debe de estar implementada de forma que su c´odigo se distribuya correctamente entre distintos m´etodos.
T´engase en cuenta que en el caso de que est´e empadronado, ya no tendr´a efecto el que sea de familia numerosa, por lo
que no ser´a necesario mantener el descuento anterior. A continuaci´on, realice el proceso de facturaci´on. En pantalla, deber´ıan
imprimirse las facturas con las modificaciones correspondientes