MIT OpenCourseWare


1.00 Introducción a la informática y a la resolución de problemas de ingeniería. Primavera 2002

Página principal
¿Qué es OCW?
Ayuda
Feedback
Preguntas frecuentes
Glosario
 
 
Página principal del curso
Programa
Calendario
  Material de clase
  Clases de repaso
Trabajos
  Exámenes
  Avisos
  Lecturas obligatorias
  Otras fuentes

   MIT

   
 

Boletín de problemas 2

Fecha de entrega: viernes 22 de febrero de 2002

En este boletín describirá el funcionamiento de un ascensor en varias situaciones.

Problema 1. Un solo ascensor [35%]

Escriba la clase Ascensor de acuerdo con los siguientes métodos:

  1. El constructor toma 3 argumentos:
    1. Servicio en el último piso (por lo general el primer piso)
    2. Servicio en el piso más alto
    3. Piso actual del ascensor
  2. El constructor toma 2 argumentos:
    1. Servicio en el último piso
    2. Servicio en el piso más alto
    3. Asumir que el piso actual es el piso más bajo en el inicio
  3. El constructor toma 1 argumento:
    1. Servicio en el piso más alto
    2. Asumir que el piso más bajo = 1, y el piso actual = el piso más bajo desde el inicio
  4. Petición, que toma 1 argumento, el piso solicitado, y no devuelve nada:
    1. Si el piso solicitado es mayor que el piso más alto, menor que el piso más bajo, o igual al piso actual, no hacer nada
    2. O si el piso solicitado está por encima del piso actual, llevar el ascensor al piso solicitado. Imprima una línea que indique el piso actual, a continuación líneas (posiblemente multiples) que indiquen que el ascensor sube por cada piso intermedio, y por último una línea que indique que el ascensor paró en el piso solicitado.
    3. O si el piso solicitado está por debajo del piso actual, proporcione un resultado similar que muestre el avance del ascensor.

  Escriba un método main() en la clase AscensorTest:

  1. Utilizando un JOptionPane, solicite al usuario que introduzca el piso más alto al que da servicio el ascensor.
  2. Utilizando el constructor de un argumento, cree un objeto Ascensor.
  3. En un bucle, utilizando un JOptionPane, solicite al usuario que introduzca los pisos que llaman al ascensor. Avise al usuario que introduzca –1 para finalizar el programa.
  4. Invoque el método de llamada para desplazar el ascensor y producir un resultado.

Problema 1A. Ascensores múltiples, sin control coordinado [0%]

(Este problema es opcional; no hay que entregarlo, pero merece la pena hacerlo para asegurarse de que está preparado para continuar con el problema 2) 

Escriba un método main() revisado para crear una plataforma de dos o tres ascensores, utilizando la clase Ascensor que escribió más arriba. Haga que cada ascensor funcione por separado, respondiendo sólo a las llamadas dirigidas a él. (No hay coordinación entre los ascensores).  Cerciórese de que entiende cómo se crean, se denominan y se accede a múltiples objetos de una clase.

Problema 2. Ascensores múltiples con control integrado [65%]

Tiene que crear y poner en práctica un programa que permita a un usuario llamar a un ascensor desde un piso. Desde una plataforma de ascensores, uno de ellos, el que esté más cerca, responderá a la llamada. En este problema, el número de ascensores de la plataforma es 3 y todos ellos dan servicio a los mismos pisos. Todavía no hemos visto las matrices (arrays), por tanto, tendrá que hacer un seguimiento individual de los ascensores. La clase "controlador integrado" sólo necesita trabajar con tres ascensores; no necesita ser más general.

Este problema es un poco menos estructurado que los vistos hasta ahora. Debe diseñar una nueva clase (Controller), con sus métodos y miembros variables, éstas últimas han de ser privadas. La clase debe tener un constructor y unos métodos. Escribirá también la clase AscensorTest2 que sólo tiene un método main(), con un tratamiento de los datos a través de JOptionPanes, creando objetos e invocando métodos sobre ellos, pero sin implementar una lógica de programa detallada. También ampliará la clase Ascensor existente para que sea compatible con el controlador. Puede copiar el programa del problema 1 en un nuevo archivo fuente Java™ como punto de partida de este problema. 

Las peticiones se introducen, como antes, a través del JOptionPane. Cuando se realiza una petición:

  1. Mostrar la ubicación actual de los tres ascensores
  2. Mostrar el ascensor elegido para satisfacer la petición
  3. Haga que el ascensor muestre su movimiento como en el problema 1

Utilice el constructor Ascensor de "2-argumentos" en su método main(). Probablemente tendrá que añadir un argumento a los 3 constructores con un nombre para cada ascensor, de modo que pueda mostrar qué ascensor atiende la llamada, etc. Así, su constructor de "2-argumentos" se convertirá en uno de 3-argumentos, etc.

La clase Controller modela el control integrado de los tres ascensores. Tendrá un método clave que obtenga el piso actual de cada ascensor (necesitará añadir un método accesorio a Ascensor), calcule el ascensor más cercano e invoque el método request() del ascensor elegido para satisfacer la petición del usuario. 

Al al final del programa, muestre el número total de peticiones, el número de peticiones satisfechas por cada ascensor, el número total de pisos que se ha desplazado cada ascensor y el promedio de pisos por petición que se ha desplazado cada ascensor. Modifique la clase Ascensor que escribió en el problema 1 para que cada ascensor registre la cantidad de peticiones recibidas y el número de pisos que se ha desplazado, y pueda informar de los totales cuando se le solicite. Ignore las peticiones no válidas (peticiones de pisos demasiado altos o demasiado bajos, o el piso actual) en los totales.

Entrega del trabajo

Requisitos

  • Problema 1: solamente por correo electrónico. No es necesario entregarlo en papel.
  • Problemas 2 y 3: copia en papel y copia electrónica de TODOS los códigos fuente (todos los archivos con la extensión .java).
  • Incluya en TODOS los archivos que presente su nombre, el nombre de usuario, la sección, el nombre del profesor ayudante, el número de trabajo y una relación de las personas con las que haya comentado el boletín de problemas. 
  • NO entregue copias electrónicas o en papel de código compilado (archivos .class).

Sanciones

  • Por pérdida de copia en papel: -10% de la puntuación del boletín de problemas.
  • Por pérdida de copia electrónica: -30% de la puntuación del boletín de problemas.
  • Por entrega fuera del plazo: -20% de la puntuación del boletín de problemas si es un día de retraso. Por más de un día de retraso = NO SE PUNTUARÁ

Massachusetts Institute of Technology © 2003 MIT | Información Jurídica | Privacidad
Todo uso del sitio de MIT OpenCourseWare y sus materiales de curso queda sujeto a las condiciones y términos de uso detallados
en la sección sobre Información Jurídica
Copyright © 2003 Portal Universia S.A. Todos los derechos reservados
(Avda. de Cantabria s/n - Edif. Arrecife, planta 00.28660 Boadilla del Monte) - Madrid. España.
Contacta con nosotros: Usuarios | Empresas-Instituciones-Medios comunicación
Código Ético | Aviso Legal | Política de confidencialidad | Quiénes somos: Sala de Prensa