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

Texto de la práctica

  1. 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.
  2. 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.
  3. 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.
  4. 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.

  1. Breve explicación de la puesta en marcha y uso del ejercicio elegido (¡sólo uno!).
  2. Código fuente.
  3. Diagrama de clases de UML.
  4. Diagrama de secuencia de UML.