Vous êtes sur la page 1sur 3

Introducción a la Programación 1

PROBLEMAS TIPO PARA EL PRIMER CONTROL

A continuación describimos una serie de tipos de datos. Para cada uno indicamos sus
propiedades, los tipos de las mismas, sus valores por defecto cuando lo tengan y si son
consultables y modificables o sólo consultables.

1. Fecha:
a. Dia, entero entre 1 y 31 inclusive, sólo consultable.
b. Mes, entero entre 1 y 12 inclusive, sólo consultable.
c. Año, entero mayor que 1900, sólo consultable.
Orden natural: El usual entre fechas.
Criterio de Igualdad: Si tienen el mismo día, mes y año.
Representación como cadena: Dia, Mes y Año separados por comas y entre
corchetes.

2. Compañía:
a. Codigo, entero mayor que cero, sólo consultable.
b. Nombre, String, sólo consultable.
Orden natural: Por Nombre.
Criterio de Igualdad: Si tienen el mismo Nombre.
Representación como cadena: Codigo y Nombre separados por comas y
entre paréntesis.

3. Vuelo:
a. Destino, String, sólo consultable.
b. Precio, double, sólo consultable.
c. NumeroDePlazas, entero mayor que cero, sólo consultable.
d. NumeroDePasajeros, entero mayor o igual que cero y menor que
NumeroDePlazas, consultable y modificable.
e. Codigo, entero mayor que cero, sólo consultable.
f. Fecha, Fecha, posterior a 1/1/2000, sólo consultable.
Orden natural: Por Destino y si dos destinos son iguales por código.
Criterio de Igualdad: Si tienen el mismo Destino y Código.
Representación como cadena: Codigo, Destino, Precio separados por comas
y entre paréntesis.

4. Intervalo:
a. Principio, de un tipo T que tenga orden natural, sólo consultable.
b. Fin, del mismo tipo que Principio, sólo consultable.
Nota: Fin debe ser mayor que principio.
Orden natural: No tiene.
Criterio de Igualdad: Si tienen el mismo principio y fin.
Representación como cadena: Principio y Fin separados por comas y
entre < >.

5. Persona:
a. Nombre, String, sólo consultable.
b. Apellidos, String, sólo consultable.
c. Edad, entero mayor que cero, consultable y modificable.
Orden natural: Por Apellidos y si los tiene iguales por nombre.
Criterio de Igualdad: Si tienen los mismos apellidos y nombre.
Representación como cadena: Apellidos y Nombre separados por comas y
entre espacios en blanco.

6. Empleado, es una extensión de Persona con las nuevas propiedades:


a. Puesto, String, consultable y modificable.
b. FechaIngreso, Fecha, posterior a 1/1/2000, sólo consultable.
c. Sueldo, real mayor que cero, consultable y modificable.
Orden natural: El mismo que el de Persona.
Criterio de Igualdad: El mismo que el de Persona.
Representación como cadena: Igual que el de Persona.

Se pide:

1.- Para cada tipo anterior diseñe una interface con los métodos de consulta y
modificación adecuados.

2.- Para cada tipo implemente una clase con los siguientes requisitos:
• Cada clase deberá tener tantos atributos privados como propiedades tenga y del
mismo tipo que las mismas.
• Cada clase implementará la interfaz correspondiente. Tenga en cuenta las
restricciones en los constructores y lance las excepciones correspondientes.
• Cada clase debe implementar el orden natural tal como se ha definido para cada
tipo.
• Los objetos de las clases deben poderse clonar.
• Cada clase debe redefinir los métodos de Object, toString() y equals(), según las
características de cada tipo.

3.- Implemente los siguientes comparadores (clases que implementan la interfaz


genérica Comparator):
• Un comparador ComparadorVueloPorPasajeros, que sirve para comparar objetos
de tipo Vuelo, por número de pasajeros del vuelo.
• Un comparador ComparadorVueloPorPlazasLibres, que sirve para comparar
objetos de tipo Vuelo, por número de plazas libres (PlazasLibres =
NumeroDePlazas-NumeroDeViajeros).
• Un comparador ComparadorEmpeladoPorNombre, que sirve para comparar
objetos de tipo Empleado, por nombre.
• Un comparador ComparadorEmpleadoPorFechaSueldo, que sirve para comparar
objetos de tipo Empleado, por fecha de ingreso (en caso de igualdad, por
sueldo).
• Un comparador ComparadorVueloPorFecha, que sirve para comparar objetos de
tipo Vuelo, por fecha del vuelo.
• Un comparador ComparadorOpuesto, que dado un comparador implemente el
orden inverso al expresado por el comparador recibido.

4.- Implemente los siguientes criterios (clases que implementan la interfaz genérica
Criterio):
• Dado un intervalo de fechas, decidir si una fecha dada está dentro del intervalo.
• Dado un intervalo de enteros, decidir si un entero está fuera del intervalo.
• Dada una fecha, decidir si un Empleado ingresó antes de dicha fecha.
• Dada una cadena, decidir si un vuelo tiene el destino contenido en dicha cadena.
• Decidir si un vuelo está completo.
• Un criterio que siempre devuelve true.
• Dado un criterio, construya el criterio contrario.

5.- Implemente las siguientes expresiones (clases que implementan la interfaz ExpReal
o la interfaz Expresion):
• Numero de plazas libres en un vuelo.
• Años para la jubilación de un empleado dada la edad de jubilación.
• Anchura de un Intervalo de enteros.
• Precio de un vuelo.
• Valor total de todos los pasajes vendidos de un vuelo.

6.- Implemente las siguientes acciones (clases que implementan la interfaz Accion):
• Aumentar la edad de una persona en un año.
• Aumentar el sueldo de un empleado en un 20%.