5ª
Práctica: Ejercicios prácticos
Presentación de problemas complejos para ser resueltos
utilizando programación orientada a objetos.
Bibliografía
y links de la práctica
Conceptos
necesarios para entender la
práctica
- Comprensión de los conceptos de herencia,
encapsulación y polimorfismo
- Programación orientada a objetos en C++ o Java.
Texto de la
práctica
- Una compañía de autobuses tiene tres
tipos de autocares: el "larga distancia", el "intercity" y el
"metropolitano". A la vez, tiene cinco tipos de recorridos: urbanos,
interurbanos, provinciales, nacionales e internacionales. Realizar un
programa que lea por
teclado una serie de datos en la forma: inicio, destino, kms totales;
almacene estos datos asignándoles un código, y
decida el tipo de recorrido y autobús y finalmente produzca
un
listado de los recorridos introducidos. Debe haber una
jerarquía de clases para los autobuses
y para los recorridos. Las funciones de impresión deben ser
abstractas y estar declaradas en
la clase base.
- Escribir un programa que acepte entradas como cadenas de
texto. El programa debe reconocer los enteros positivos, los enteros
negativos, los flotantes positivos, los flotantes
negativos, y debe hacer una salida ordenada de cada grupo de
números. Se sugiere hacer una clase
base 'número', para enteros y flotantes, y siendo los nodos
terminales de la jerarquía
flotante positivo y flotante negativo. Al menos debe haber un
método abstracto en 'número', que
sirva para imprimir cada tipo de número por pantalla. Se
sugiere también utilizar el contenedor
vector de la STL.
- Escribir un programa que acepte las medidas del lado de un
rectángulo. Habrá tres
clases en el sistema: rectbase, rectángulo y cuadrado. El
programa deberá llamar al método
estático
en rectbase que se encargará, al pasarle las medidas, de
instanciar un objeto adecuado. Una vez
que la entrada termina, el programa debe listar los lados de cada
instancia, y su área, cuyo
método debe estar definido en rectbase.
- Crear un editor de párrafos. Existen clases que
representan palabras al principio
de un párrafo, palabras, líneas y
párrafos.
Cada palabra debe poder ser puesta en cursiva, subrayado o negrita.
Así, la entrada se realizará por
un menú que permitirá borrar un
párrafo, insertar un párrafo y volcar a HTML. Se
podrá insertar un
párrafo entre dos que ya existen o cuando no hay ninguno.
Antes de insertar un párrafo, al igual que
antes de borrar, se listarán todos los párrafos,
cada uno precedido de su número de orden, para poder
referirse a él. En la clase base, de la cual derivan
palabra, línea y párrafo, se definirá
du forma de
escribirse en pantalla, y su forma de volcarse a HTML. A la hora de
hacer el vuelco, el programa escribirá
, y en el medio pedirá a cada párrafo que vuelque
su contenido en HTML.
La suma de las letras de las palabras en una línea debe ser
menor que 80. Sólo los objetos palabra
contienen texto, el resto son contenedores. Existe una tipo de palabra
especial, al comienzo de un
párrafo, que inserta un tabulador a la izquierda de la
palabra. Se puede indicar cursiva y negrita
en la entrada como se desee, pero en el volcado HTML cada palabra
estará rodeada de B/B,U/U o
I/I, cuando sea conveniente.
A entregar
Debe elegirse un ejercicio a entregar, y se aconseja que desde el
principio se planee la aplicación con ArgoUML
(u otro
diseñador similar), y se genere el código.
- Breve explicación de la puesta en marcha y uso
del ejercicio elegido (¡sólo uno!).
- Código fuente.
- Diagrama de clases de UML.
- Diagrama de secuencia de UML.