Title: Ejercicio del Elevador
1Ejercicio del Elevador
2Descripción
- Se quiere desarrollar una aplicación para modelar
el funcionamiento de un elevador. El elevador
puede estar en un edificio de n pisos, dentro de
un conducto que controla los mecanismos de cada
piso. Estos mecanismos consisten en un botón para
solicitar al elevador que vaya al piso, y una luz
que se prende para indicar si el elevador sube o
baja, así como una puerta que se cierra para
evitar que los usuarios entren al conducto del
elevador si el elevador no se encuentra en ese
piso. - Cuando el usuario solicite que el elevador vaya a
un determinado piso, el programa deberá indicar
si el elevador va bajando o subiendo (simulando
la luz), y mostrar el piso por el que el elevador
va pasando. Una vez llegado al piso deseado, el
elevador deberá abrir la puerta, tanto la del
elevador como la del piso. El programa deberá
indicar por medio de algún mensaje, que las
puertas se están abriendo. Cada puerta tarda 5
segundos en abrirse, y se abre primero la del
piso, y luego la del elevador. El elevador espera
10 segundos y automáticamente cierra las puertas,
iniciando por la del elevador, y después la del
piso. Una vez cerradas las puertas, el sistema
preguntará al usuario a qué piso desea ir, y el
programa deberá indicar el movimiento del
elevador tal cual se indicó anteriormente. - Al llegar al piso especificado, el elevador
abrirá las puertas, y se quedará esperando a que
se le solicite ir a otro piso, indicando por
medio de un mensaje que se presione el piso al
que se quiere que el elevador vaya. Si el piso
solicitado es el mismo en el que se encuentra el
elevador, este esperará 10 segundos, y cerrará la
puerta para después solicitar el piso al que se
quiere ir. - Se deberá validar que el número de piso indicado
no sobrepase los límites, es decir, que no sea
menor a 0, el cual indicará la planta baja, ni
mayor al total del número de pisos del edificio.
3Identificación de objetos o clases potenciales
- Se quiere desarrollar una aplicación para modelar
el funcionamiento de un elevador. El elevador
puede estar en un edificio de n pisos, dentro de
un conducto que controla los mecanismos de cada
piso. Estos mecanismos consisten en un botón para
solicitar al elevador que vaya al piso, y una luz
que se prende para indicar si el elevador sube o
baja, así como una puerta que se cierra para
evitar que los usuarios entren al conducto del
elevador si el elevador no se encuentra en ese
piso. - Cuando el usuario solicite que el elevador vaya a
un determinado piso, el programa deberá indicar
si el elevador va bajando o subiendo (simulando
la luz), y mostrar el piso por el que el elevador
va pasando. Una vez llegado al piso deseado, el
elevador deberá abrir la puerta, tanto la del
elevador como la del piso. El programa deberá
indicar por medio de algún mensaje, que las
puertas se están abriendo. Cada puerta tarda 5
segundos en abrirse, y se abre primero la del
piso, y luego la del elevador. El elevador espera
10 segundos y automáticamente cierra las puertas,
iniciando por la del elevador, y después la del
piso. Una vez cerradas las puertas, el sistema
preguntará al usuario a qué piso desea ir, y el
programa deberá indicar el movimiento del
elevador tal cual se indicó anteriormente. - Al llegar al piso especificado, el elevador
abrirá las puertas, y se quedará esperando a que
se le solicite ir a otro piso, indicando por
medio de un mensaje que se presione el piso al
que se quiere que el elevador vaya. Si el piso
solicitado es el mismo en el que se encuentra el
elevador, este esperará 10 segundos, y cerrará la
puerta para después solicitar el piso al que se
quiere ir. - Se deberá validar que el número de piso indicado
no sobrepase los límites, es decir, que no sea
menor a 0, el cual indicará la planta baja, ni
mayor al total del número de pisos del edificio.
4Identificación de objetos o clases potenciales
- Elevador
- Edificio de n pisos
- Conducto del elevador
- Mecanismos de piso
- Botón
- Luz
- Puerta
- Puerta del elevador
5Identificación de objetos o clases potenciales
6Identificación de operaciones
- Se quiere desarrollar una aplicación para modelar
el funcionamiento de un elevador. El elevador
puede estar en un edificio de n pisos, dentro de
un conducto que controla los mecanismos de cada
piso. Estos mecanismos consisten en un botón para
solicitar al elevador que vaya al piso, y una luz
que se prende para indicar si el elevador sube o
baja, así como una puerta que se cierra para
evitar que los usuarios entren al conducto del
elevador si el elevador no se encuentra en ese
piso. - Cuando el usuario solicite que el elevador vaya a
un determinado piso, el programa deberá indicar
si el elevador va bajando o subiendo (simulando
la luz), y mostrar el piso por el que el elevador
va pasando. Una vez llegado al piso deseado, el
elevador deberá abrir la puerta, tanto la del
elevador como la del piso. El programa deberá
indicar por medio de algún mensaje, que las
puertas se están abriendo. Cada puerta tarda 5
segundos en abrirse, y se abre primero la del
piso, y luego la del elevador. El elevador espera
10 segundos y automáticamente cierra las puertas,
iniciando por la del elevador, y después la del
piso. Una vez cerradas las puertas, el sistema
preguntará al usuario a qué piso desea ir, y el
programa deberá indicar el movimiento del
elevador tal cual se indicó anteriormente. - Al llegar al piso especificado, el elevador
abrirá las puertas, y se quedará esperando a que
se le solicite ir a otro piso, indicando por
medio de un mensaje que se presione el piso al
que se quiere que el elevador vaya. Si el piso
solicitado es el mismo en el que se encuentra el
elevador, este esperará 10 segundos, y cerrará la
puerta para después solicitar el piso al que se
quiere ir. - Se deberá validar que el número de piso indicado
no sobrepase los límites, es decir, que no sea
menor a 0, el cual indicará la planta baja, ni
mayor al total del número de pisos del edificio.
7Identificando operaciones
8Pasando del diseño al código
/ _at_()Puerta.java Clase que simula una
puerta en la simulación del elevador
_at_author Oscar M. Rodríguez _at_version 1.00
2007/2/19 / public class Puerta protected
final boolean ABIERTA true protected final
boolean CERRADA false protected String
nombre "" protected boolean abierta
protected final int espera 200
El nombre del archivo y el de la case deben ser
iguales
Inicio del programa Comentarios de descripción
Declaración de la clase Puerta
Inicio del programa Comentarios de descripción
Se debe buscar que los atributos de una
clase, sólo sean accesibles dentro de la
clase. (Ocultamiento de la información)
9Pasando del diseño al código
public Puerta() abierta CERRADA
public Puerta(boolean opcion) if
(opcion ABIERTA) abierta ABIERTA
else abierta CERRADA public
Puerta(String nombre) this()
setNombre(nombre) public Puerta(String
nombre, boolean opcion) this(opcion)
setNombre(nombre) public
Puerta(boolean opcion, String nombre)
this(nombre, opcion)
Constructores
10Pasando del diseño al código
public void setNombre(String nombre)
this.nombre nombre public String
getNombre() return nombre
public boolean estaAbierta() return
(abierta) public boolean
estaCerrada() return (!abierta)
public void esperar(int espera) try
Thread.sleep(espera) catch (Exception
ex) ex.printStackTrace()
Operaciones de acceso a las propiedades o
atributos de una clase
Operaciones para acceder al estado de la puerta
Operación para generar un retardo para simular el
tiempo que tarda la puerta en abrir o cerrar.
11Pasando del diseño al código
public void abrir() System.out.println("Abri
endo puerta "nombre) int j 10
while (j gt 0) String cad ""
for (int i 0 i lt j i) cad
""
System.out.println(cad)
esperar(espera) --j
abierta ABIERTA System.out.println("Puert
a "nombre" abierta")
Simula la apertura de la puerta
12Pasando del diseño al código
public void cerrar() System.out.println("Cer
rando puerta "nombre) int j 0
while (j lt 10) String cad ""
for (int i j i gt 0 i--) cad
"" System.out.println(cad)
esperar(espera) j
abierta CERRADA System.out.println("Puer
ta "nombre" abierta")
Simula el cerrado de la puerta
13Prueba de la puerta
/ _at_()PruebaPuerta.java Programa para
probar el funcionamiento de la puerta.
_at_author _at_version 1.00 2007/2/19 / import
java.io. public class PruebaPuerta
static Puerta puerta / Creates a
new instance of ltcodegtPruebaPuertalt/codegt.
/ public PruebaPuerta() puerta new
Puerta() puerta.setNombre("Puerta del
elevador")
Programa que ejemplifica el uso de la clase
Puerta.
14Prueba de la puerta
public static void abrir() if
(puerta.estaAbierta()) System.out.println("L
a puerta ya está abierta") else
puerta.abrir() public static void
cerrar() if (puerta.estaCerrada())
System.out.println("La puerta ya está
cerrada") else puerta.cerrar()
15Prueba de la puerta
/ _at_param args the command line
arguments / public static void
main(String args) // TODO code
application logic here PruebaPuerta
prueba new PruebaPuerta() char op '
' while (op ! 's')
System.out.print("Oprima \na para abrir puerta,
\nc para cerrar, o
\ns para salir del programa ")
try op ((new
BufferedReader(
new InputStreamReader(System.in)
)).readLine()).charAt(
0) catch (Exception ex)
ex.printStackTrace() if
(op 'a') abrir() else if (op 'c')
cerrar()
16Tarea
- Modelar todas las clases del ejercicio en un
programa de modelado en UML, incluyendo atributos
y métodos. - Las clases deberán ser definidas con el mayor
nivel de detalle posible