SlideShare una empresa de Scribd logo
1 de 6
Descargar para leer sin conexión
Programación II. I.T.I. de Gestión
                             Ejercicios de Programación Orientada a Objetos
                                                                                                                   Curso 2009/10



Ejercicio 1
   Completar la clase PUNTO implementando las operaciones que faltan y utilizar esa clase en una apli-
cación simple que explote todas las características de PUNTO. Añadir métodos to_string_cartesianas y
to_string_polares que devuelvan las coordenadas en cartesianas y polares respectivamente representa-
das en una cadena de caracteres, entre paréntesis y separadas por una coma.
   Nota: Las funciones seno, coseno, etc. son aplicables a variables de clase DOUBLE. Aplicar short a
double.e nos permite conocer cómo se manejan.


Ejercicio 2
     Programar un conjunto de clases que representen figuras geométricas sencillas como triángulo, rectángu-
lo, polígono en general, basándose en la clase PUNTO y si es necesario en clases predefinidas como arrays o
listas. Debe ser posible desplazar la figura, imprimir sus vértices, calcular el perímetro, etc. ARRAY y LINK_LIST
se encuentran en la biblioteca standard de SmallEiffel.


Ejercicio 3
   Elaborar una clase RACIONAL que modele los números racionales implementando al menos las operacio-
nes de suma, resta, opuesto e inverso de un número racional a imitación de la suma o resta de los números
reales o enteros.


Ejercicio 4
   Elaborar una clase COMPLEJO que modele los números complejos implementando al menos las operacio-
nes de suma, resta y módulo de un número complejo a imitación de la suma o resta de los números reales o
enteros.


Ejercicio 5
  Elaborar una clase POLINOMIO que modele los polinomios de grado dos implementando al menos las
operaciones de suma (de un polinomio con Current para obtener un tercer polinomio) y producto por un
número y el cálculo de las raíces reales del polinomio, si es que existen.


Ejercicio 6
   Escribir una clase RELOJ que simule el comportamiento de un cronómetro digital (con las característi-
cas puesta_a_cero, incremento, etc.). Cuando el contador llegue a 23:59:59 y reciba el mensaje de
incremento deberá pasar a 00:00:00.

       Universidad de Valladolid. Dpto. de Informática. Edificio de Tecnologías de la Información y las Telecomunicaciones,
       Campus Miguel Delibes. 47011 Valladolid. Tfno. 983.423000 ext.5617/Fax 983.423671.
       www.infor.uva.es/˜felix e-mail:felix@infor.uva.es
Ejercicio 7
   Elaborar una clase Eiffel que modele una fecha. La clase deberá disponer de características que de-
vuelvan el día, el mes y el año, además de métodos que que devuelvan un STRING con la fecha en forma
abreviada (16/02/2000) y extendida (16 de febrero de 2000) y de una función incremento, con un parámetro
entero, que fabrique una nueva fecha, resultado de incrementar la original en ese número de días.
   Nota 1: Son años bisiestos los múltiplos de cuatro que no lo son de cien, salvo que lo sean de cuatrocientos,
en cuyo caso si son bisiestos.
   Nota 2: Para la solución de este problema puede ser útil definir un método incrementa_un_dia.
   Nota 3: El ejercicio es mucho más divertido si no se utiliza la clase TIME de la biblioteca estandar de
SmallEiffel


Ejercicio 8
  Elaborar una clase Eiffel que implemente de forma sencilla una pila genérica, utilizando para el almace-
namiento un ARRAY. Elaborar una segunda implementación del mismo estilo, pero utilizando para el almace-
namiento una LINKED_LIST.


Ejercicio 9
   Dentro de una biblioteca Eiffel en funcionamiento disponemos de una clase empleado definida del si-
guiente modo:
class EMPLEADO
creation {ANY}
  make
feature {ANY}
  nombre: STRING;
  edad: INTEGER;
  nif: STRING;
  make(elnombre: STRING; laedad: INTEGER; elnif: STRING) is
    do
       nombre := clone(elnombre);
       edad := laedad;
       nif := clone(elnif);
    end; −− make
  muestra is
    do
       io.put_string("Nombre: ");io.put_string(nombre);io.put_string(" %N");
       io.put_string("edad: ");io.put_integer(edad);io.put_string(" %N");
       io.put_string("NIF: ");io.put_string(nif);io.put_string(" %N");
    end; −− muestra
end −− class EMPLEADO
  Al añadir nuevas capacidades a la biblioteca descubrimos que necesitamos modelar nuevos tipos de
empleados:

     Empleado temporal, del que nos interesa saber la fecha de alta y de baja en la empresa.

     Empleado por horas. Nos interesa el precio de la hora trabajada, y el número de horas que ha trabajado
     este mes. El primero es un dato fijo, mientras el segundo varía todos los meses.
     Empleado fijo. Debemos añadir a la información que almacenamos sobre él el año de alta en la em-
     presa.

       Universidad de Valladolid. Dpto. de Informática. Edificio de Tecnologías de la Información y las Telecomunicaciones,
       Campus Miguel Delibes. 47011 Valladolid. Tfno. 983.423000 ext.5617/Fax 983.423671.
       www.infor.uva.es/˜felix e-mail:felix@infor.uva.es
Además debemos añadir a todos los empleados la funcionalidad de cálculo del sueldo con las siguientes
consideraciones:
     En los empleados temporales el sueldo mensual es fijo.
     En los empleados fijos el sueldo es el resultado de sumarle a la base un complemento anual fijo multipli-
     cado por el número de años en la empresa.
     En los empleados por horas el sueldo se calcula multiplicando su sueldo por hora por el número de horas
     de este mes.
  Diseñe (y escriba en Eiffel) las clases necesarias y sus relaciones para solucionar las nuevas necesidades
detectadas.


Ejercicio 10
   En un puerto se alquilan amarres para barcos de distinto tipo. Para cada ALQUILER se guarda el nombre
y DNI del cliente, las fechas inicial y final de alquiler, la posición del amarre y el barco que lo ocupará. Un
BARCO se caracteriza por su matrícula, su eslora en metros y año de fabricación.
   Un alquiler se calcula multiplicando el número de días de ocupación (incluyendo los días inicial y final) por
un módulo función de cada barco (obtenido simplemente multiplicando por 10 los metros de eslora) y por
un valor fijo (1.200 pesetas en la actualidad).
   Sin embargo ahora se pretende diferenciar la información de algunos tipos de barcos:
     número de mástiles para veleros
     potencia en CV para embarcaciones deportivas a motor
     potencia en CV y número de camarotes para yates de lujo.
   El módulo de los barcos de un tipo especial se obtiene como el mólulo normal mas:
     el número de mástiles para veleros
     la potencia en CV para embarcaciones deportivas a motor
     la potencia en CV más el número de camarotes para yates de lujo.
    Utilizando la herencia de forma apropiada, diseñe el diagrama de clases y sus relaciones, con detalle de
atributos y métodos necesarios. Programe en Eiffel los métodos que permitan calcular el alquiler de cualquier
tipo de barco.


Ejercicio 11
   Dado n ∈ N podemos definir Z/nZ como el conjunto {0, 1, . . . , n − 1} dotado de la operación suma definida
por la fórmula a+b = (a + b) mod n, en el que cada número tiene un opuesto tal que la suma de los dos es
cero y con una resta a−b, definida como la suma de a con el opuesto de b.
   Elaborar una clase Eiffel que modele los números de Z/187Z proporcionando al menos suma, resta, opues-
to y elemento «cero» como servicios.
   Nota: Ejercicio de examen del curso 2005/2006


Ejercicio 12
   Elaborar una clase que modele ángulos medidos en grados. La clase debe incorporar al menos la suma
de ángulos, su resta, el opuesto de un ángulo y el ángulo «cero», quedando bien entendido que el ángulo 00
y el ángulo 3600 son el mismo.
   Nota: Ejercicio de examen del curso 2005/2006

       Universidad de Valladolid. Dpto. de Informática. Edificio de Tecnologías de la Información y las Telecomunicaciones,
       Campus Miguel Delibes. 47011 Valladolid. Tfno. 983.423000 ext.5617/Fax 983.423671.
       www.infor.uva.es/˜felix e-mail:felix@infor.uva.es
Ejercicio 13
    Un sistema informático dispone de una clase eiffel TRABAJO en cuya forma corta hemos visto una carac-
terística usuario:STRING.
    Elaborar una clase COLA_DE_TRABAJOS encargada de almacenar trabajos. Entre sus características deben
aparecer obligatoriamente:
     «mete» que almacena un trabajo en la cola
     «primero» que devuelve el trabajo que más tiempo lleva en la cola
     «saca» que elimina de la cola el trabajo que más tiempo lleva en ella
     «trabajos» que devuelve el número de trabajos almacenados en la cola
     «trabajos_de» que devuelve un array con los trabajos almacenados en la cola asociados a un determi-
     nado usuario
Nota: Ejercicio de examen del curso 2006/2007


Ejercicio 14
   Elaborar una clase que modele ángulos medidos en grados. La clase debe incorporar al menos la suma
de ángulos, su resta, el opuesto de un ángulo y el ángulo «cero», quedando bien entendido que el ángulo 00
y el ángulo 3600 son el mismo.
   Nota: Ejercicio de examen del curso 2006/2007


Ejercicio 15
   Para cierta implementación que no viene al caso, el departamento de diseño ha detectado la necesidad
de implementar un nuevo tipo de números a los que ha denominado «números curiosos». Un número curioso
se caracteriza por tres coordenadas reales (a, b, c) que verifican a2 + b2 + c2 = 1, salvo en el caso del número
«cero» cuyas coordenadas son (0, 0, 0). Sobre los números curiosos interesa realizar las siguientes operaciones:

     suma(otro:CURIOSO):CURIOSO definida mediante la fórmula:
                                                                                         a1 + a2
                              (a1 , b1 , c1 ) + (a2 , b2 , c2 )   =   (                                             ,
                                                                           (a1 + a2 )2 + (b1 + b2 )2 + (c1 + c2 )2
                                                                                        b1 + b2
                                                                                                                  ,
                                                                          (a1 + a2 )2 + (b + b )2 + (c + c )2
                                                                                          1    2        1    2
                                                                                        c1 + c2
                                                                                                                  )
                                                                          (a1 + a2 )2 + (b1 + b2 )2 + (c1 + c2 )2

     cuando (a1 + a2 )2 + (b1 + b2 )2 + (c1 + c2 )2 = 0 y (0, 0, 0) en caso contrario.
     resta(otro:CURIOSO):CURIOSO definida mediante la siguiente fórmula:
                                                                                           a1 − a2
                              (a1 , b1 , c1 ) − (a2 , b2 , c2 )   =   (                                           ,
                                                                           (a1 − a2   )2
                                                                                      + (b1 − b2 )2 + (c1 − c2 )2
                                                                                        b1 − b2
                                                                                                                ,
                                                                          (a1 − a2 )2 + (b − b )2 + (c − c )2
                                                                                          1    2       1    2
                                                                                        c1 − c2
                                                                                                                )
                                                                          (a1 − a2 )2 + (b − b )2 + (c − c )2
                                                                                          1    2       1    2

     cuando (a1 − a2 )2 + (b1 − b2 )2 + (c1 − c2 )2 = 0 y (0, 0, 0) en caso contrario.

       Universidad de Valladolid. Dpto. de Informática. Edificio de Tecnologías de la Información y las Telecomunicaciones,
       Campus Miguel Delibes. 47011 Valladolid. Tfno. 983.423000 ext.5617/Fax 983.423671.
       www.infor.uva.es/˜felix e-mail:felix@infor.uva.es
opuesto:CURIOSO Donde el opuesto del número (a, b, c) es el número (−a, −b, −c).
     giro:CURIOSO. El resultado de girar un número curioso (a, b, c) es el número (b, c, a).

   Elaborar una clase Eiffel que implemente los números curiosos.
   Nota: Ejercicio de examen del curso 2007/2008


Ejercicio 16
    Una cola se caracteriza porque el primer elemento en entrar será el primero en salir. Una implementación
típica de la cola tiene las siguientes características:

     primero:G Devuelve el primer elemento que saldrá de la cola, Void si la cola está vacía
     mete(e:G) Introduce un elemento en la cola

     saca Elimina de la cola el primer elemento, si es que en la cola hay elementos.

   Ahora deseamos implementar una «cola con supervisión» en la que la mayoría de los elementos entran
y salen de la forma tradicional, pero cada n elementos insertados, el siguiente se almacena de una forma
especial para ser inspeccionado. De éste modo además de primero disponemos de primero_supervisado
que es el primer elemento supervisado en la cola, y saca_supervisado que elimina el primer elemento
supervisado que aparece en la cola.
   Implementar esta clase en Eiffel considerando que la cola puede tener varios elementos supervisados en
espera, que estos elementos no deben ser extraídos por saca ni mostrados por primero, y que el valor n se
fija al crear la cola y no puede ser cambiado
   Nota: Ejercicio de examen del curso 2007/2008


Ejercicio 17
   Elaborar una clase Eiffel que permita almacenar elementos en un «orden mezclado». En este orden mez-
clado el primer elemento insertado se coloca el primero, el siguiente el último, y así alternativamente.
   Entre los servicios que la clase debe proporcionar deben aparecer al menos

     Inserción, que añade un elemento a la lista en el orden adecuado
     Elemento en la posición iésima, que devuelve el elemento que se encuentra en esta posición, si es que
     esta posición está ocupada
     Elementos que indica el número de posiciones ocupadas en este momento

     Poda, que elimina el primer elemento de la lista
   Nota: Ejercicio de examen del curso 2008/2009


Ejercicio 18
    Una cola se caracteriza porque el primer elemento en entrar será el primero en salir. Una implementación
típica de la cola tiene las siguientes características:

     primero:G Devuelve el primer elemento que saldrá de la cola, Void si la cola está vacía
     mete(e:G) Introduce un elemento en la cola

     saca Elimina de la cola el primer elemento, si es que en la cola hay elementos.

       Universidad de Valladolid. Dpto. de Informática. Edificio de Tecnologías de la Información y las Telecomunicaciones,
       Campus Miguel Delibes. 47011 Valladolid. Tfno. 983.423000 ext.5617/Fax 983.423671.
       www.infor.uva.es/˜felix e-mail:felix@infor.uva.es
Ahora deseamos un tipo especial de cola que permita, mediante un método mezcla reordenar sus ele-
mentos tal y como se hace en la baraja con la mezcla americana, esto es, se divide en dos mitades, y se
recolocan de tal modo que la última del primer montón pasa a ser la última, precedida por la última del
segundo montón, precedida por la penúltima del primer montón, precedida por la penúltima del segundo
montón,...
   Elaborar una clase Eiffel que modele el tipo de cola indicado.
   Nota: Ejercicio de examen del curso 2008/2009




       Universidad de Valladolid. Dpto. de Informática. Edificio de Tecnologías de la Información y las Telecomunicaciones,
       Campus Miguel Delibes. 47011 Valladolid. Tfno. 983.423000 ext.5617/Fax 983.423671.
       www.infor.uva.es/˜felix e-mail:felix@infor.uva.es

Más contenido relacionado

La actualidad más candente

La actualidad más candente (6)

Ejercicios con matrices
Ejercicios con matricesEjercicios con matrices
Ejercicios con matrices
 
Arreglos
ArreglosArreglos
Arreglos
 
Maximos y minimos
Maximos y minimosMaximos y minimos
Maximos y minimos
 
Guia de funciones_i
Guia de funciones_iGuia de funciones_i
Guia de funciones_i
 
Funciones
FuncionesFunciones
Funciones
 
Curso c i
Curso c iCurso c i
Curso c i
 

Destacado

JUPITER R APRENDIZAJE AUTONOMO Y APRENDIZAJE SIGNIFICATIVO
JUPITER R APRENDIZAJE AUTONOMO Y APRENDIZAJE SIGNIFICATIVOJUPITER R APRENDIZAJE AUTONOMO Y APRENDIZAJE SIGNIFICATIVO
JUPITER R APRENDIZAJE AUTONOMO Y APRENDIZAJE SIGNIFICATIVOJupiter Rodriguez
 
Sítios turísticos de morelia
Sítios turísticos de moreliaSítios turísticos de morelia
Sítios turísticos de moreliajuli96
 
Nouvelles de saint-viateur_abidjan_-_11.12
Nouvelles de saint-viateur_abidjan_-_11.12Nouvelles de saint-viateur_abidjan_-_11.12
Nouvelles de saint-viateur_abidjan_-_11.12SERSO San Viator
 
Viateurs mission-decembre-2012
Viateurs mission-decembre-2012Viateurs mission-decembre-2012
Viateurs mission-decembre-2012SERSO San Viator
 
Resumen Compilado Gestión de Conoi
Resumen Compilado Gestión de ConoiResumen Compilado Gestión de Conoi
Resumen Compilado Gestión de ConoiJenny Berrocal
 
Nouvelle T Vsa
Nouvelle T VsaNouvelle T Vsa
Nouvelle T Vsaguest5563e
 
Macrophotograhies
MacrophotograhiesMacrophotograhies
Macrophotograhiesmehrshad
 
19 10_acumulacion_pretensiones_derivadas_pluriofensividad_delito_denuncia_ca...
19  10_acumulacion_pretensiones_derivadas_pluriofensividad_delito_denuncia_ca...19  10_acumulacion_pretensiones_derivadas_pluriofensividad_delito_denuncia_ca...
19 10_acumulacion_pretensiones_derivadas_pluriofensividad_delito_denuncia_ca...Mercedes Paola Saenz Venero
 
Zusatzmaterial nanorama franz
Zusatzmaterial nanorama franzZusatzmaterial nanorama franz
Zusatzmaterial nanorama franzSwissNanoCube
 
Lector de huellas para control de asistencia al restaurante escolar de la I.E...
Lector de huellas para control de asistencia al restaurante escolar de la I.E...Lector de huellas para control de asistencia al restaurante escolar de la I.E...
Lector de huellas para control de asistencia al restaurante escolar de la I.E...Johan Zurdo Alvarez
 
ASLE - Asamblea 2012 presentación de FMD
ASLE - Asamblea 2012 presentación de FMDASLE - Asamblea 2012 presentación de FMD
ASLE - Asamblea 2012 presentación de FMDASLE
 
El baile de la vida vivi
El baile de la vida viviEl baile de la vida vivi
El baile de la vida viviMarta Cunha
 

Destacado (20)

JUPITER R APRENDIZAJE AUTONOMO Y APRENDIZAJE SIGNIFICATIVO
JUPITER R APRENDIZAJE AUTONOMO Y APRENDIZAJE SIGNIFICATIVOJUPITER R APRENDIZAJE AUTONOMO Y APRENDIZAJE SIGNIFICATIVO
JUPITER R APRENDIZAJE AUTONOMO Y APRENDIZAJE SIGNIFICATIVO
 
Sítios turísticos de morelia
Sítios turísticos de moreliaSítios turísticos de morelia
Sítios turísticos de morelia
 
Nouvelles de saint-viateur_abidjan_-_11.12
Nouvelles de saint-viateur_abidjan_-_11.12Nouvelles de saint-viateur_abidjan_-_11.12
Nouvelles de saint-viateur_abidjan_-_11.12
 
Viateurs mission-decembre-2012
Viateurs mission-decembre-2012Viateurs mission-decembre-2012
Viateurs mission-decembre-2012
 
Resumen Compilado Gestión de Conoi
Resumen Compilado Gestión de ConoiResumen Compilado Gestión de Conoi
Resumen Compilado Gestión de Conoi
 
Desarrollo sustentable
Desarrollo sustentableDesarrollo sustentable
Desarrollo sustentable
 
Tarea de taller
Tarea de tallerTarea de taller
Tarea de taller
 
Parcours création de site - Jour 1
Parcours création de site - Jour 1Parcours création de site - Jour 1
Parcours création de site - Jour 1
 
Nouvelle T Vsa
Nouvelle T VsaNouvelle T Vsa
Nouvelle T Vsa
 
Pedro Palomino Tecnalia
Pedro Palomino TecnaliaPedro Palomino Tecnalia
Pedro Palomino Tecnalia
 
Amitié1 b
Amitié1 bAmitié1 b
Amitié1 b
 
Macrophotograhies
MacrophotograhiesMacrophotograhies
Macrophotograhies
 
19 10_acumulacion_pretensiones_derivadas_pluriofensividad_delito_denuncia_ca...
19  10_acumulacion_pretensiones_derivadas_pluriofensividad_delito_denuncia_ca...19  10_acumulacion_pretensiones_derivadas_pluriofensividad_delito_denuncia_ca...
19 10_acumulacion_pretensiones_derivadas_pluriofensividad_delito_denuncia_ca...
 
0go arbres d'axel_erlandson
0go arbres d'axel_erlandson0go arbres d'axel_erlandson
0go arbres d'axel_erlandson
 
Zusatzmaterial nanorama franz
Zusatzmaterial nanorama franzZusatzmaterial nanorama franz
Zusatzmaterial nanorama franz
 
Prise en main de Joomla
Prise en main de JoomlaPrise en main de Joomla
Prise en main de Joomla
 
100 ans d._
100 ans d._100 ans d._
100 ans d._
 
Lector de huellas para control de asistencia al restaurante escolar de la I.E...
Lector de huellas para control de asistencia al restaurante escolar de la I.E...Lector de huellas para control de asistencia al restaurante escolar de la I.E...
Lector de huellas para control de asistencia al restaurante escolar de la I.E...
 
ASLE - Asamblea 2012 presentación de FMD
ASLE - Asamblea 2012 presentación de FMDASLE - Asamblea 2012 presentación de FMD
ASLE - Asamblea 2012 presentación de FMD
 
El baile de la vida vivi
El baile de la vida viviEl baile de la vida vivi
El baile de la vida vivi
 

Similar a Ejercicios oo (20)

clases y objetos
clases y objetosclases y objetos
clases y objetos
 
20 problemas
20 problemas20 problemas
20 problemas
 
Primeros Ejemplos Usando Operadores en Visual C# (C Sharp)
Primeros Ejemplos Usando Operadores en Visual C# (C Sharp)Primeros Ejemplos Usando Operadores en Visual C# (C Sharp)
Primeros Ejemplos Usando Operadores en Visual C# (C Sharp)
 
DATA AUTOMATION.pdf
DATA AUTOMATION.pdfDATA AUTOMATION.pdf
DATA AUTOMATION.pdf
 
Compu
CompuCompu
Compu
 
Guia7 programación
Guia7 programación Guia7 programación
Guia7 programación
 
FUNCIONES DE STELLA
FUNCIONES DE STELLAFUNCIONES DE STELLA
FUNCIONES DE STELLA
 
Ecxel manual
Ecxel manualEcxel manual
Ecxel manual
 
Excel Intermedio - Unidad Didactica I
Excel Intermedio - Unidad Didactica IExcel Intermedio - Unidad Didactica I
Excel Intermedio - Unidad Didactica I
 
HOJAS DE CALCULO
HOJAS DE CALCULOHOJAS DE CALCULO
HOJAS DE CALCULO
 
HOJAS DE CALCLUO
HOJAS DE CALCLUOHOJAS DE CALCLUO
HOJAS DE CALCLUO
 
Excel presentación
Excel presentaciónExcel presentación
Excel presentación
 
Unidad 7 Arreglos.pdf
Unidad 7 Arreglos.pdfUnidad 7 Arreglos.pdf
Unidad 7 Arreglos.pdf
 
arreglos y matrices
arreglos  y matricesarreglos  y matrices
arreglos y matrices
 
Guzman carlos tarea_2_2do_c(informe_7)
Guzman carlos tarea_2_2do_c(informe_7)Guzman carlos tarea_2_2do_c(informe_7)
Guzman carlos tarea_2_2do_c(informe_7)
 
apuntes-openscad-1.pdf
apuntes-openscad-1.pdfapuntes-openscad-1.pdf
apuntes-openscad-1.pdf
 
Guia ejercicios part ii
Guia ejercicios part iiGuia ejercicios part ii
Guia ejercicios part ii
 
Gráficas en Matlab
Gráficas en MatlabGráficas en Matlab
Gráficas en Matlab
 
Bucles for next step do while loop loop while visual basic ejemplo
Bucles for next step do while loop loop while visual basic ejemploBucles for next step do while loop loop while visual basic ejemplo
Bucles for next step do while loop loop while visual basic ejemplo
 
Formulas excel
Formulas excelFormulas excel
Formulas excel
 

Ejercicios oo

  • 1. Programación II. I.T.I. de Gestión Ejercicios de Programación Orientada a Objetos Curso 2009/10 Ejercicio 1 Completar la clase PUNTO implementando las operaciones que faltan y utilizar esa clase en una apli- cación simple que explote todas las características de PUNTO. Añadir métodos to_string_cartesianas y to_string_polares que devuelvan las coordenadas en cartesianas y polares respectivamente representa- das en una cadena de caracteres, entre paréntesis y separadas por una coma. Nota: Las funciones seno, coseno, etc. son aplicables a variables de clase DOUBLE. Aplicar short a double.e nos permite conocer cómo se manejan. Ejercicio 2 Programar un conjunto de clases que representen figuras geométricas sencillas como triángulo, rectángu- lo, polígono en general, basándose en la clase PUNTO y si es necesario en clases predefinidas como arrays o listas. Debe ser posible desplazar la figura, imprimir sus vértices, calcular el perímetro, etc. ARRAY y LINK_LIST se encuentran en la biblioteca standard de SmallEiffel. Ejercicio 3 Elaborar una clase RACIONAL que modele los números racionales implementando al menos las operacio- nes de suma, resta, opuesto e inverso de un número racional a imitación de la suma o resta de los números reales o enteros. Ejercicio 4 Elaborar una clase COMPLEJO que modele los números complejos implementando al menos las operacio- nes de suma, resta y módulo de un número complejo a imitación de la suma o resta de los números reales o enteros. Ejercicio 5 Elaborar una clase POLINOMIO que modele los polinomios de grado dos implementando al menos las operaciones de suma (de un polinomio con Current para obtener un tercer polinomio) y producto por un número y el cálculo de las raíces reales del polinomio, si es que existen. Ejercicio 6 Escribir una clase RELOJ que simule el comportamiento de un cronómetro digital (con las característi- cas puesta_a_cero, incremento, etc.). Cuando el contador llegue a 23:59:59 y reciba el mensaje de incremento deberá pasar a 00:00:00. Universidad de Valladolid. Dpto. de Informática. Edificio de Tecnologías de la Información y las Telecomunicaciones, Campus Miguel Delibes. 47011 Valladolid. Tfno. 983.423000 ext.5617/Fax 983.423671. www.infor.uva.es/˜felix e-mail:felix@infor.uva.es
  • 2. Ejercicio 7 Elaborar una clase Eiffel que modele una fecha. La clase deberá disponer de características que de- vuelvan el día, el mes y el año, además de métodos que que devuelvan un STRING con la fecha en forma abreviada (16/02/2000) y extendida (16 de febrero de 2000) y de una función incremento, con un parámetro entero, que fabrique una nueva fecha, resultado de incrementar la original en ese número de días. Nota 1: Son años bisiestos los múltiplos de cuatro que no lo son de cien, salvo que lo sean de cuatrocientos, en cuyo caso si son bisiestos. Nota 2: Para la solución de este problema puede ser útil definir un método incrementa_un_dia. Nota 3: El ejercicio es mucho más divertido si no se utiliza la clase TIME de la biblioteca estandar de SmallEiffel Ejercicio 8 Elaborar una clase Eiffel que implemente de forma sencilla una pila genérica, utilizando para el almace- namiento un ARRAY. Elaborar una segunda implementación del mismo estilo, pero utilizando para el almace- namiento una LINKED_LIST. Ejercicio 9 Dentro de una biblioteca Eiffel en funcionamiento disponemos de una clase empleado definida del si- guiente modo: class EMPLEADO creation {ANY} make feature {ANY} nombre: STRING; edad: INTEGER; nif: STRING; make(elnombre: STRING; laedad: INTEGER; elnif: STRING) is do nombre := clone(elnombre); edad := laedad; nif := clone(elnif); end; −− make muestra is do io.put_string("Nombre: ");io.put_string(nombre);io.put_string(" %N"); io.put_string("edad: ");io.put_integer(edad);io.put_string(" %N"); io.put_string("NIF: ");io.put_string(nif);io.put_string(" %N"); end; −− muestra end −− class EMPLEADO Al añadir nuevas capacidades a la biblioteca descubrimos que necesitamos modelar nuevos tipos de empleados: Empleado temporal, del que nos interesa saber la fecha de alta y de baja en la empresa. Empleado por horas. Nos interesa el precio de la hora trabajada, y el número de horas que ha trabajado este mes. El primero es un dato fijo, mientras el segundo varía todos los meses. Empleado fijo. Debemos añadir a la información que almacenamos sobre él el año de alta en la em- presa. Universidad de Valladolid. Dpto. de Informática. Edificio de Tecnologías de la Información y las Telecomunicaciones, Campus Miguel Delibes. 47011 Valladolid. Tfno. 983.423000 ext.5617/Fax 983.423671. www.infor.uva.es/˜felix e-mail:felix@infor.uva.es
  • 3. Además debemos añadir a todos los empleados la funcionalidad de cálculo del sueldo con las siguientes consideraciones: En los empleados temporales el sueldo mensual es fijo. En los empleados fijos el sueldo es el resultado de sumarle a la base un complemento anual fijo multipli- cado por el número de años en la empresa. En los empleados por horas el sueldo se calcula multiplicando su sueldo por hora por el número de horas de este mes. Diseñe (y escriba en Eiffel) las clases necesarias y sus relaciones para solucionar las nuevas necesidades detectadas. Ejercicio 10 En un puerto se alquilan amarres para barcos de distinto tipo. Para cada ALQUILER se guarda el nombre y DNI del cliente, las fechas inicial y final de alquiler, la posición del amarre y el barco que lo ocupará. Un BARCO se caracteriza por su matrícula, su eslora en metros y año de fabricación. Un alquiler se calcula multiplicando el número de días de ocupación (incluyendo los días inicial y final) por un módulo función de cada barco (obtenido simplemente multiplicando por 10 los metros de eslora) y por un valor fijo (1.200 pesetas en la actualidad). Sin embargo ahora se pretende diferenciar la información de algunos tipos de barcos: número de mástiles para veleros potencia en CV para embarcaciones deportivas a motor potencia en CV y número de camarotes para yates de lujo. El módulo de los barcos de un tipo especial se obtiene como el mólulo normal mas: el número de mástiles para veleros la potencia en CV para embarcaciones deportivas a motor la potencia en CV más el número de camarotes para yates de lujo. Utilizando la herencia de forma apropiada, diseñe el diagrama de clases y sus relaciones, con detalle de atributos y métodos necesarios. Programe en Eiffel los métodos que permitan calcular el alquiler de cualquier tipo de barco. Ejercicio 11 Dado n ∈ N podemos definir Z/nZ como el conjunto {0, 1, . . . , n − 1} dotado de la operación suma definida por la fórmula a+b = (a + b) mod n, en el que cada número tiene un opuesto tal que la suma de los dos es cero y con una resta a−b, definida como la suma de a con el opuesto de b. Elaborar una clase Eiffel que modele los números de Z/187Z proporcionando al menos suma, resta, opues- to y elemento «cero» como servicios. Nota: Ejercicio de examen del curso 2005/2006 Ejercicio 12 Elaborar una clase que modele ángulos medidos en grados. La clase debe incorporar al menos la suma de ángulos, su resta, el opuesto de un ángulo y el ángulo «cero», quedando bien entendido que el ángulo 00 y el ángulo 3600 son el mismo. Nota: Ejercicio de examen del curso 2005/2006 Universidad de Valladolid. Dpto. de Informática. Edificio de Tecnologías de la Información y las Telecomunicaciones, Campus Miguel Delibes. 47011 Valladolid. Tfno. 983.423000 ext.5617/Fax 983.423671. www.infor.uva.es/˜felix e-mail:felix@infor.uva.es
  • 4. Ejercicio 13 Un sistema informático dispone de una clase eiffel TRABAJO en cuya forma corta hemos visto una carac- terística usuario:STRING. Elaborar una clase COLA_DE_TRABAJOS encargada de almacenar trabajos. Entre sus características deben aparecer obligatoriamente: «mete» que almacena un trabajo en la cola «primero» que devuelve el trabajo que más tiempo lleva en la cola «saca» que elimina de la cola el trabajo que más tiempo lleva en ella «trabajos» que devuelve el número de trabajos almacenados en la cola «trabajos_de» que devuelve un array con los trabajos almacenados en la cola asociados a un determi- nado usuario Nota: Ejercicio de examen del curso 2006/2007 Ejercicio 14 Elaborar una clase que modele ángulos medidos en grados. La clase debe incorporar al menos la suma de ángulos, su resta, el opuesto de un ángulo y el ángulo «cero», quedando bien entendido que el ángulo 00 y el ángulo 3600 son el mismo. Nota: Ejercicio de examen del curso 2006/2007 Ejercicio 15 Para cierta implementación que no viene al caso, el departamento de diseño ha detectado la necesidad de implementar un nuevo tipo de números a los que ha denominado «números curiosos». Un número curioso se caracteriza por tres coordenadas reales (a, b, c) que verifican a2 + b2 + c2 = 1, salvo en el caso del número «cero» cuyas coordenadas son (0, 0, 0). Sobre los números curiosos interesa realizar las siguientes operaciones: suma(otro:CURIOSO):CURIOSO definida mediante la fórmula: a1 + a2 (a1 , b1 , c1 ) + (a2 , b2 , c2 ) = ( , (a1 + a2 )2 + (b1 + b2 )2 + (c1 + c2 )2 b1 + b2 , (a1 + a2 )2 + (b + b )2 + (c + c )2 1 2 1 2 c1 + c2 ) (a1 + a2 )2 + (b1 + b2 )2 + (c1 + c2 )2 cuando (a1 + a2 )2 + (b1 + b2 )2 + (c1 + c2 )2 = 0 y (0, 0, 0) en caso contrario. resta(otro:CURIOSO):CURIOSO definida mediante la siguiente fórmula: a1 − a2 (a1 , b1 , c1 ) − (a2 , b2 , c2 ) = ( , (a1 − a2 )2 + (b1 − b2 )2 + (c1 − c2 )2 b1 − b2 , (a1 − a2 )2 + (b − b )2 + (c − c )2 1 2 1 2 c1 − c2 ) (a1 − a2 )2 + (b − b )2 + (c − c )2 1 2 1 2 cuando (a1 − a2 )2 + (b1 − b2 )2 + (c1 − c2 )2 = 0 y (0, 0, 0) en caso contrario. Universidad de Valladolid. Dpto. de Informática. Edificio de Tecnologías de la Información y las Telecomunicaciones, Campus Miguel Delibes. 47011 Valladolid. Tfno. 983.423000 ext.5617/Fax 983.423671. www.infor.uva.es/˜felix e-mail:felix@infor.uva.es
  • 5. opuesto:CURIOSO Donde el opuesto del número (a, b, c) es el número (−a, −b, −c). giro:CURIOSO. El resultado de girar un número curioso (a, b, c) es el número (b, c, a). Elaborar una clase Eiffel que implemente los números curiosos. Nota: Ejercicio de examen del curso 2007/2008 Ejercicio 16 Una cola se caracteriza porque el primer elemento en entrar será el primero en salir. Una implementación típica de la cola tiene las siguientes características: primero:G Devuelve el primer elemento que saldrá de la cola, Void si la cola está vacía mete(e:G) Introduce un elemento en la cola saca Elimina de la cola el primer elemento, si es que en la cola hay elementos. Ahora deseamos implementar una «cola con supervisión» en la que la mayoría de los elementos entran y salen de la forma tradicional, pero cada n elementos insertados, el siguiente se almacena de una forma especial para ser inspeccionado. De éste modo además de primero disponemos de primero_supervisado que es el primer elemento supervisado en la cola, y saca_supervisado que elimina el primer elemento supervisado que aparece en la cola. Implementar esta clase en Eiffel considerando que la cola puede tener varios elementos supervisados en espera, que estos elementos no deben ser extraídos por saca ni mostrados por primero, y que el valor n se fija al crear la cola y no puede ser cambiado Nota: Ejercicio de examen del curso 2007/2008 Ejercicio 17 Elaborar una clase Eiffel que permita almacenar elementos en un «orden mezclado». En este orden mez- clado el primer elemento insertado se coloca el primero, el siguiente el último, y así alternativamente. Entre los servicios que la clase debe proporcionar deben aparecer al menos Inserción, que añade un elemento a la lista en el orden adecuado Elemento en la posición iésima, que devuelve el elemento que se encuentra en esta posición, si es que esta posición está ocupada Elementos que indica el número de posiciones ocupadas en este momento Poda, que elimina el primer elemento de la lista Nota: Ejercicio de examen del curso 2008/2009 Ejercicio 18 Una cola se caracteriza porque el primer elemento en entrar será el primero en salir. Una implementación típica de la cola tiene las siguientes características: primero:G Devuelve el primer elemento que saldrá de la cola, Void si la cola está vacía mete(e:G) Introduce un elemento en la cola saca Elimina de la cola el primer elemento, si es que en la cola hay elementos. Universidad de Valladolid. Dpto. de Informática. Edificio de Tecnologías de la Información y las Telecomunicaciones, Campus Miguel Delibes. 47011 Valladolid. Tfno. 983.423000 ext.5617/Fax 983.423671. www.infor.uva.es/˜felix e-mail:felix@infor.uva.es
  • 6. Ahora deseamos un tipo especial de cola que permita, mediante un método mezcla reordenar sus ele- mentos tal y como se hace en la baraja con la mezcla americana, esto es, se divide en dos mitades, y se recolocan de tal modo que la última del primer montón pasa a ser la última, precedida por la última del segundo montón, precedida por la penúltima del primer montón, precedida por la penúltima del segundo montón,... Elaborar una clase Eiffel que modele el tipo de cola indicado. Nota: Ejercicio de examen del curso 2008/2009 Universidad de Valladolid. Dpto. de Informática. Edificio de Tecnologías de la Información y las Telecomunicaciones, Campus Miguel Delibes. 47011 Valladolid. Tfno. 983.423000 ext.5617/Fax 983.423671. www.infor.uva.es/˜felix e-mail:felix@infor.uva.es