2. Descripció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.
3. Identificació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.
4. Identificación de objetos o clases
potenciales
Elevador
Edificio de n pisos
Conducto del elevador
Mecanismos de piso
Botón
Luz
Puerta
Puerta del elevador
5. Identificación de objetos o clases
potenciales
Edificio parte de ConductoElevador
pisos : Piso
parte de
Piso controlado por
Elevador
parte de parte de
MecanismoPiso Panel de control
parte de
PuertaElevador
parte de parte de parte de
PuertaPiso BotonPiso LuzPiso
Puerta
6. Identificació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.
8. Pasando del diseño al código
/**
* @(#)Puerta.java
* Clase que simula una puerta en la simulación del elevador
El nombre del archivo y
*
* @author Oscar M. Rodríguez
el de la case
Inicio del programa:
* @version 1.00 2007/2/19 Comentariosser iguales
deben de descripción
*/ Declaración de la clase
public class Puerta { Puerta
protected final boolean ABIERTA = true;
protected final boolean CERRADA = false; Inicio del programa:
protected String nombre = "";
Comentarios de descripción
protected boolean abierta;
protected final int espera = 200;
Se debe buscar que los atributos de una clase,
sólo sean accesibles dentro de la clase.
(Ocultamiento de la información)
9. Pasando del diseño al código
public Puerta() {
abierta = CERRADA;
}
public Puerta(boolean opcion){
if (opcion == ABIERTA){
abierta = ABIERTA;
} else abierta = CERRADA;
}
Constructores
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);
}
10. Pasando del diseño al código
public void setNombre(String nombre){
this.nombre = nombre;
} Operaciones de acceso a las
propiedades o atributos de una clase
public String getNombre(){
return nombre;
}
public boolean estaAbierta(){
return (abierta);
} Operaciones para acceder al estado
de la puerta
public boolean estaCerrada(){
return (!abierta);
}
public void esperar(int espera){
try{ Operación para generar un retardo
Thread.sleep(espera); para simular el tiempo que tarda la
} catch (Exception ex){ puerta en abrir o cerrar.
ex.printStackTrace();
}
}
11. Pasando 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++){
Simula la apertura de la
cad += "*";
} puerta
System.out.println(cad);
esperar(espera);
--j;
}
abierta = ABIERTA;
System.out.println("Puerta "+nombre+" abierta");
}
12. Pasando 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--){
Simula el cerrado de la
cad += "*";
} puerta
System.out.println(cad);
esperar(espera);
++j;
}
abierta = CERRADA;
System.out.println("Puerta "+nombre+" abierta");
}
}
13. 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");
}
14. 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();
}
15. /** Prueba 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();
}
}
}
16. Tarea
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