Está en la página 1de 16

Ejercicio del Elevador

Descripcin

Se quiere desarrollar una aplicacin 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 botn 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 algn mensaje, que las puertas se estn 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 automticamente cierra las puertas, iniciando por la del elevador, y despus 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 despus solicitar el piso al que se quiere ir. Se deber validar que el nmero de piso indicado no sobrepase los lmites, es decir, que no sea menor a 0, el cual indicar la planta baja, ni mayor al total del nmero de pisos del edificio.

Identificacin de objetos o clases potenciales

Se quiere desarrollar una aplicacin 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 botn 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 algn mensaje, que las puertas se estn 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 automticamente cierra las puertas, iniciando por la del elevador, y despus 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 despus solicitar el piso al que se quiere ir. Se deber validar que el nmero de piso indicado no sobrepase los lmites, es decir, que no sea menor a 0, el cual indicar la planta baja, ni mayor al total del nmero de pisos del edificio.

Identificacin de objetos o clases potenciales


Elevador Edificio de n pisos Conducto del elevador Mecanismos de piso

Botn Luz Puerta

Puerta del elevador

Identificacin de objetos o clases potenciales


Edificio
pisos : Piso

parte de

ConductoElevador

parte de Piso parte de MecanismoPiso parte de PuertaPiso Panel de control controlado por Elevador parte de PuertaElevador

parte de

parte de

parte de LuzPiso

BotonPiso

Puerta

Identificacin de operaciones

Se quiere desarrollar una aplicacin 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 botn 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 algn mensaje, que las puertas se estn 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 automticamente cierra las puertas, iniciando por la del elevador, y despus 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 despus solicitar el piso al que se quiere ir. Se deber validar que el nmero de piso indicado no sobrepase los lmites, es decir, que no sea menor a 0, el cual indicar la planta baja, ni mayor al total del nmero de pisos del edificio.

Identificando operaciones
Puerta
abierta : Boolean nombre : String abrir() cerrar() estaAbierta() : Boolean estaCerrada() : Boolean setNombre(nombre : String) getNombre() : String

Pasando del diseo al cdigo


/** * @(#)Puerta.java * Clase que simula una puerta en la simulacin del elevador El nombre del archivo y * el de programa: Inicio del la case * @author Oscar M. Rodrguez deben de descripcin * @version 1.00 2007/2/19 Comentariosser iguales Declaracin de la clase */ Puerta public class Puerta { protected final boolean ABIERTA = true; protected final boolean CERRADA = false; Inicio del programa: protected String nombre = ""; Comentarios de descripcin protected boolean abierta; protected final int espera = 200;

Se debe buscar que los atributos de una clase, slo sean accesibles dentro de la clase. (Ocultamiento de la informacin)

public Puerta() { abierta = CERRADA; }

Pasando del diseo al cdigo

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

public void setNombre(String nombre){ this.nombre = nombre; }

Pasando del diseo al cdigo


Operaciones de acceso a las propiedades o atributos de una clase

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 para acceder al estado de la puerta

Operacin para generar un retardo para simular el tiempo que tarda la puerta en abrir o cerrar.

Pasando del diseo al cdigo


public void abrir(){ System.out.println("Abriendo puerta "+nombre); int j = 10; while (j > 0) { String cad = ""; for (int i = 0; i < j; i++){ Simula la apertura de la cad += "*"; puerta } System.out.println(cad); esperar(espera); --j; } abierta = ABIERTA; System.out.println("Puerta "+nombre+" abierta"); }

Pasando del diseo al cdigo


public void cerrar(){ System.out.println("Cerrando puerta "+nombre); int j = 0; while (j < 10) { String cad = ""; for (int i = j; i > 0; i--){ Simula el cerrado de la cad += "*"; puerta } System.out.println(cad); esperar(espera); ++j; } abierta = CERRADA; System.out.println("Puerta "+nombre+" abierta"); } }

Prueba de la puerta
/** * @(#)PruebaPuerta.java * Programa para probar el funcionamiento de la puerta. * * @author * @version 1.00 2007/2/19 */ Programa que ejemplifica el import java.io.*; uso de la clase Puerta. public class PruebaPuerta { static Puerta puerta; /** * Creates a new instance of <code>PruebaPuerta</code>. */ public PruebaPuerta() { puerta = new Puerta(); puerta.setNombre("Puerta del elevador"); }

Prueba 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(); }

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

Prueba de la puerta

Tarea
Modelar todas las clases del ejercicio en

un programa de modelado en UML, incluyendo atributos y mtodos. Las clases debern ser definidas con el mayor nivel de detalle posible

También podría gustarte