Elevador (1)

16
  Ejercicio del Elevador Ejercicio del Elevador 

Transcript of Elevador (1)

Page 1: Elevador (1)

5/10/2018 Elevador (1) - slidepdf.com

http://slidepdf.com/reader/full/elevador-1 1/16

 

 

Ejercicio del Elevador Ejercicio del Elevador 

Page 2: Elevador (1)

5/10/2018 Elevador (1) - slidepdf.com

http://slidepdf.com/reader/full/elevador-1 2/16

 

 

DescripciónDescripción

Se quiere desarrollar una aplicación para modelar el funcionamiento de un elevador.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 controlaEl elevador puede estar en un edificio de n pisos, dentro de un conducto que controlalos mecanismos de cada piso. Estos mecanismos consisten en un botón paralos mecanismos de cada piso. Estos mecanismos consisten en un botón parasolicitar al elevador que vaya al piso, y una luz que se prende para indicar si elsolicitar al elevador que vaya al piso, y una luz que se prende para indicar si elelevador sube o baja, así como una puerta que se cierra para evitar que los usuarioselevador sube o baja, así como una puerta que se cierra para evitar que los usuariosentren al conducto del elevador si el elevador no se encuentra en ese piso.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 programaCuando 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 eldeberá indicar si el elevador va bajando o subiendo (simulando la luz), y mostrar elpiso por el que el elevador va pasando. Una vez llegado al piso deseado, el elevador 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á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 puertaindicar por medio de algún mensaje, que las puertas se están abriendo. Cada puertatarda 5 segundos en abrirse, y se abre primero la del piso, y luego la del elevador. Eltarda 5 segundos en abrirse, y se abre primero la del piso, y luego la del elevador. Elelevador espera 10 segundos y automáticamente cierra las puertas, iniciando por laelevador espera 10 segundos y automáticamente cierra las puertas, iniciando por ladel elevador, y después la del piso. Una vez cerradas las puertas, el sistemadel elevador, y después la del piso. Una vez cerradas las puertas, el sistemapreguntará al usuario a qué piso desea ir, y el programa deberá indicar elpreguntará al usuario a qué piso desea ir, y el programa deberá indicar el

movimiento del elevador tal cual se indicó anteriormente.movimiento del elevador tal cual se indicó anteriormente.

 Al llegar al piso especificado, el elevador abrirá las puertas, y se quedará esperando Al llegar al piso especificado, el elevador abrirá las puertas, y se quedará esperandoa que se le solicite ir a otro piso, indicando por medio de un mensaje que se presionea que se le solicite ir a otro piso, indicando por medio de un mensaje que se presioneel piso al que se quiere que el elevador vaya. Si el piso solicitado es el mismo en elel piso al que se quiere que el elevador vaya. Si el piso solicitado es el mismo en elque se encuentra el elevador, este esperará 10 segundos, y cerrará la puerta paraque se encuentra el elevador, este esperará 10 segundos, y cerrará la puerta paradespués solicitar el piso al que se quiere ir.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,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 deque no sea menor a 0, el cual indicará la planta baja, ni mayor al total del número de

pisos del edificio.pisos del edificio.

Page 3: Elevador (1)

5/10/2018 Elevador (1) - slidepdf.com

http://slidepdf.com/reader/full/elevador-1 3/16

 

 

Identificación de objetos o clasesIdentificación de objetos o clases

potencialespotenciales

Se quiere desarrollar una aplicación para modelar el funcionamiento de unSe quiere desarrollar una aplicación para modelar el funcionamiento de un elevador elevador ..El elevador puede estar en unEl elevador puede estar en un edificio de n pisosedificio de n pisos, dentro de un, dentro de un conductoconducto quequecontrola loscontrola los mecanismos de cada pisomecanismos de cada piso. Estos mecanismos consisten en un. Estos mecanismos consisten en un botónbotón para solicitar al elevador que vaya al piso, y unapara solicitar al elevador que vaya al piso, y una luzluz que se prende para indicar si elque se prende para indicar si elelevador sube o baja, así como unaelevador sube o baja, así como una puertapuerta que se cierra para evitar que los usuariosque se cierra para evitar que los usuariosentren al conducto del elevador si el elevador no se encuentra en ese piso.entren al conducto del elevador si el elevador no se encuentra en ese piso.

Cuando elCuando el usuariousuario solicite que el elevador vaya a un determinado piso, el programasolicite que el elevador vaya a un determinado piso, el programadeberá indicar si el elevador va bajando o subiendo (simulando la luz), y mostrar eldeberá 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 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á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 puertaindicar por medio de algún mensaje, que las puertas se están abriendo. Cada puertatarda 5 segundos en abrirse, y se abre primero la del piso, y luego la del elevador. Eltarda 5 segundos en abrirse, y se abre primero la del piso, y luego la del elevador. Elelevador espera 10 segundos y automáticamente cierra las puertas, iniciando por laelevador espera 10 segundos y automáticamente cierra las puertas, iniciando por ladel elevador, y después la del piso. Una vez cerradas las puertas, el sistemadel elevador, y después la del piso. Una vez cerradas las puertas, el sistemapreguntará al usuario a qué piso desea ir, y el programa deberá indicar elpreguntará al usuario a qué piso desea ir, y el programa deberá indicar elmovimiento del elevador tal cual se indicó anteriormente.movimiento del elevador tal cual se indicó anteriormente.

 Al llegar al piso especificado, el elevador abrirá las puertas, y se quedará esperando Al llegar al piso especificado, el elevador abrirá las puertas, y se quedará esperandoa que se le solicite ir a otro piso, indicando por medio de un mensaje que se presionea que se le solicite ir a otro piso, indicando por medio de un mensaje que se presioneel piso al que se quiere que el elevador vaya. Si el piso solicitado es el mismo en elel piso al que se quiere que el elevador vaya. Si el piso solicitado es el mismo en elque se encuentra el elevador, este esperará 10 segundos, y cerrará la puerta paraque se encuentra el elevador, este esperará 10 segundos, y cerrará la puerta paradespués solicitar el piso al que se quiere ir.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,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 deque no sea menor a 0, el cual indicará la planta baja, ni mayor al total del número depisos del edificio.pisos del edificio. 

Page 4: Elevador (1)

5/10/2018 Elevador (1) - slidepdf.com

http://slidepdf.com/reader/full/elevador-1 4/16

 

 

Identificación de objetos o clasesIdentificación de objetos o clases

potencialespotenciales

Elevador Elevador 

Edificio de n pisosEdificio de n pisos

Conducto del elevador Conducto del elevador Mecanismos de pisoMecanismos de piso

BotónBotón

LuzLuz PuertaPuerta

Puerta del elevador Puerta del elevador 

Page 5: Elevador (1)

5/10/2018 Elevador (1) - slidepdf.com

http://slidepdf.com/reader/full/elevador-1 5/16

 

 

Identificación de objetos o clasesIdentificación de objetos o clases

potencialespotenciales

PuertaPiso BotonPiso LuzPiso

MecanismoPiso

 parte de  parte de  parte de

Piso

 parte de

Edificiopisos : Piso

 parte de

PuertaElevador 

Puerta

ConductoElevador  parte de

controlado por 

Panel de control

Elevador 

 parte de

 parte de

Page 6: Elevador (1)

5/10/2018 Elevador (1) - slidepdf.com

http://slidepdf.com/reader/full/elevador-1 6/16

 

 

Identificación de operacionesIdentificación de operaciones

Se quiere desarrollar una aplicación para modelar el funcionamiento de unSe quiere desarrollar una aplicación para modelar el funcionamiento de un elevador elevador ..El elevador puede estar en unEl elevador puede estar en un edificio de n pisosedificio de n pisos, dentro de un, dentro de un conductoconducto quequecontrola loscontrola los mecanismos de cada pisomecanismos de cada piso. Estos mecanismos consisten en un. Estos mecanismos consisten en un botónbotón parapara solicitar al elevador que vaya al pisosolicitar al elevador que vaya al piso, y una, y una luzluz queque se prende para indicar se prende para indicar si el elevador sube o bajasi el elevador sube o baja, así como una, así como una puertapuerta queque se cierrase cierra para evitar que lospara evitar que losusuarios entren al conducto del elevador si el elevador no se encuentra en ese piso.usuarios entren al conducto del elevador si el elevador no se encuentra en ese piso.

Cuando elCuando el usuariousuario solicite que elsolicite que el elevador vaya a un determinado pisoelevador vaya a un determinado piso, el, elprograma deberáprograma deberá indicar si el elevador va bajando o subiendoindicar si el elevador va bajando o subiendo (simulando la luz),(simulando la luz),

yy mostrar el piso por el que el elevador va pasandomostrar el piso por el que el elevador va pasando. Una vez llegado al piso. Una vez llegado al pisodeseado, el elevador deberádeseado, el elevador deberá abrir la puerta, tanto la del elevador como la delabrir la puerta, tanto la del elevador como la delpisopiso. El programa deberá indicar por medio de algún mensaje, que las puertas se. El programa deberá indicar por medio de algún mensaje, que las puertas seestán abriendo.están abriendo. Cada puerta tarda 5 segundos en abrirseCada puerta tarda 5 segundos en abrirse, y, y se abre primero lase abre primero ladel piso, y luego la del elevador del piso, y luego la del elevador . El. El elevador espera 10 segundos yelevador espera 10 segundos yautomáticamente cierra las puertasautomáticamente cierra las puertas,, iniciando por la del elevador, y después lainiciando por la del elevador, y después ladel pisodel piso. Una vez cerradas las puertas,. Una vez cerradas las puertas, el sistema preguntará al usuario a quéel sistema preguntará al usuario a quépiso desea ir piso desea ir , y el programa deberá, y el programa deberá indicar el movimiento del elevador indicar el movimiento del elevador tal cual setal cual se

indicó anteriormente.indicó anteriormente.  Al Al llegar al piso especificadollegar al piso especificado, el elevador abrirá las puertas, y, el elevador abrirá las puertas, y se quedaráse quedaráesperando a que se le solicite ir a otro pisoesperando a que se le solicite ir a otro piso, indicando por medio de un mensaje, indicando por medio de un mensajeque se presione el piso al que se quiere que el elevador vaya.que se presione el piso al que se quiere que el elevador vaya. Si el piso solicitadoSi el piso solicitadoes el mismo en el que se encuentra el elevador, este esperará 10 segundos, yes el mismo en el que se encuentra el elevador, este esperará 10 segundos, ycerrará la puertacerrará la puerta para después solicitar el piso al que se quiere ir.para después solicitar el piso al que se quiere ir.

Se deberáSe deberá validar que el número de piso indicado no sobrepase los límitesvalidar que el número de piso indicado no sobrepase los límites, es, esdecir, que no sea menor a 0, el cual indicará la planta baja, ni mayor al total deldecir, que no sea menor a 0, el cual indicará la planta baja, ni mayor al total del

número de pisos del edificio.número de pisos del edificio. 

Page 7: Elevador (1)

5/10/2018 Elevador (1) - slidepdf.com

http://slidepdf.com/reader/full/elevador-1 7/16 

Identificando operacionesIdentificando operaciones

Puerta

abierta : Boolean

nombre : String

abrir()

cerrar()

estaAbierta() : Boolean

estaCerrada() : Boolean

setNombre(nombre : String)

getNombre() : String

   

Page 8: Elevador (1)

5/10/2018 Elevador (1) - slidepdf.com

http://slidepdf.com/reader/full/elevador-1 8/16 

Pasando del diseño al códigoPasando del diseño al código

/*** @(#)Puerta.java

* Clase que simula una puerta en la simulación del elevador 

*

* @author Oscar M. Rodríguez

* @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;

Inicio del programa:

Comentarios de descripciónDeclaración de la clase

Puerta

Inicio del programa:

Comentarios de descripción

El nombre del archivo y

el de la case

deben ser iguales

Se debe buscar que los atributos de una clase,

sólo sean accesibles dentro de la clase.

(Ocultamiento de la información)

 

Page 9: Elevador (1)

5/10/2018 Elevador (1) - slidepdf.com

http://slidepdf.com/reader/full/elevador-1 9/16 

Pasando del diseño al códigoPasando del diseño al códigopublic 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

  

Page 10: Elevador (1)

5/10/2018 Elevador (1) - slidepdf.com

http://slidepdf.com/reader/full/elevador-1 10/16 

Pasando del diseño al códigoPasando del diseño al códigopublic 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.

  

Page 11: Elevador (1)

5/10/2018 Elevador (1) - slidepdf.com

http://slidepdf.com/reader/full/elevador-1 11/16 

Pasando del diseño al códigoPasando del diseño al código

public void abrir(){System.out.println("Abriendo puerta "+nombre);

int j = 10;

while (j > 0) {

String cad = "";

for (int i = 0; i < j; i++){

cad += "*";

}System.out.println(cad);

esperar(espera);

--j;

}

abierta = ABIERTA;

System.out.println("Puerta "+nombre+" abierta");

}

Simula la apertura de la

puerta

  

Page 12: Elevador (1)

5/10/2018 Elevador (1) - slidepdf.com

http://slidepdf.com/reader/full/elevador-1 12/16 

Pasando del diseño al códigoPasando del diseño al código

public void cerrar(){System.out.println("Cerrando puerta "+nombre);

int j = 0;

while (j < 10) {

String cad = "";

for (int i = j; i > 0; i--){

cad += "*";

}System.out.println(cad);

esperar(espera);

++j;

}

abierta = CERRADA;

System.out.println("Puerta "+nombre+" abierta");

}

}

Simula el cerrado de la

puerta

 

Page 13: Elevador (1)

5/10/2018 Elevador (1) - slidepdf.com

http://slidepdf.com/reader/full/elevador-1 13/16

 

Prueba de la puertaPrueba de la puerta/**

* @(#)PruebaPuerta.java

* Programa para probar el funcionamiento de la puerta.

*

* @author 

* @version 1.00 2007/2/19

*/import java.io.*;

public class PruebaPuerta {

static Puerta puerta;

/**

* Creates a new instance of <code>PruebaPuerta</code>.*/

public PruebaPuerta() {

puerta = new Puerta();

puerta.setNombre("Puerta del elevador");

}

Programa que ejemplifica eluso de la clase Puerta.

 

Page 14: Elevador (1)

5/10/2018 Elevador (1) - slidepdf.com

http://slidepdf.com/reader/full/elevador-1 14/16

 

Prueba de la puertaPrueba de la puerta

public static void abrir(){

if (puerta.estaAbierta())

System.out.println("La 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();

}

 

Page 15: Elevador (1)

5/10/2018 Elevador (1) - slidepdf.com

http://slidepdf.com/reader/full/elevador-1 15/16

 

Prueba de la puertaPrueba de la puerta/**

* @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();

}

}}

 

Page 16: Elevador (1)

5/10/2018 Elevador (1) - slidepdf.com

http://slidepdf.com/reader/full/elevador-1 16/16

 

TareaTarea

Modelar todas las clases del ejercicio enModelar todas las clases del ejercicio en

un programa de modelado en UML,un programa de modelado en UML,

incluyendo atributos y métodos.incluyendo atributos y métodos.

Las clases deberán ser definidas con elLas clases deberán ser definidas con el

mayor nivel de detalle posiblemayor nivel de detalle posible