Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Interfaces: ElevatorSimulatorThread, Elevator, State
- [ElevatorThread]
- -void start
- -----------------------------------------------------------------
- [Elevator]
- -int getMaxWeight
- -List<Passenger> getPassengers
- -void newPassenger
- -boolean canUse
- -Floor getCurrentFloor
- -Floor getNextFloor
- -boolean canStop
- -State getCurrentState
- -void blockEvelator
- -void causeAnomaly
- -void repairElevator
- -String getType
- -----------------------------------------------------------------
- [Passenger]
- -String getType
- -int getWeight
- -----------------------------------------------------------------
- [State]
- -String getDescription
- -float getDelay
- -----------------------------------------------------------------
- -----------------------------------------------------------------
- -----------------------------------------------------------------
- Classes Abstratas: ElevatorAbstract, PassengerAbstract
- [ElevatorAbstract]
- //Programa os valores default dos elevadores
- -Floor currentFloor
- -List<Floor> targetFloors
- -List<Passenger> passengers
- -State state
- -boolean canUse //retorna true caso soma dos weights dos passageiros < getMaxWeight
- -void newPassenger //adquire novo passageiro
- -Floor getCurrentFloor
- -Floor getNextFloor
- -void blockEvelator
- -void causeAnomaly
- -void repairElevator
- -----------------------------------------------------------------
- [PassengerAbstract]
- -int weight
- -----------------------------------------------------------------
- -----------------------------------------------------------------
- -----------------------------------------------------------------
- Classes:
- [NormalElevator]
- -int getMaxWeight //retorna 4
- -String getType //retorna normal
- -----------------------------------------------------------------
- [LargeElevator]
- -int getMaxWeight //retorna 10
- -String getType //retorna large
- -----------------------------------------------------------------
- [CargoElevator]
- -int getMaxWeight //retorna 20
- -boolean canUse //retorna true caso passenger.type == cargo
- -canStop //true caso currentFloor.number == -2, -1, totalFloors
- -String getType //retorna cargo
- -----------------------------------------------------------------
- [ExpressElevator]
- -int getMaxWeight //retorna 10
- -canStop //true caso currentFloor.number%10 == 0
- -String getType //retorna express
- -----------------------------------------------------------------
- [RestrictedElevator]
- -int getMaxWeight //retorna 4
- -boolean canUse //retorna true caso passenger.privileged == true
- -String getType //retorna restricted
- -----------------------------------------------------------------
- [Person]
- -int getWeight //retorna 1
- -String getType //retorna Person
- -----------------------------------------------------------------
- [Cargo]
- -int getWeight //retorna weight
- -String getType //retorna Cargo
- -----------------------------------------------------------------
- [Floor]
- -List<Passenger> passengers
- -List<Passengers> getPassengers
- -List<Passengers> removePassenger
- -----------------------------------------------------------------
- [MovingState]
- -Elevator elevator
- -String getDescription //retornar moving
- -float getDelay //retornar tempo de movimento normal ou tempo*2 caso elevator.type == cargo
- -----------------------------------------------------------------
- [OpeningDoorsState]
- -String getDescription //retornar opening doors
- -float getDelay //retornar tempo de abrir portas
- -----------------------------------------------------------------
- [OpenDoorsState]
- -String getDescription //retornar open doors
- -float getDelay //retornar tempo de espera com portas abertas
- -----------------------------------------------------------------
- [ClosingDoorsState]
- -String getDescription //retornar closing doors
- -float getDelay //retornar tempo de fechar portas
- -----------------------------------------------------------------
- [ElevatorCallThread]
- -Elevator elevator
- -List<Floor> floors
- -void callElevator //chama elevador para um floor aleatório, que tenha pessoas
- -void start //de X em X segundos executa callElevator
- -----------------------------------------------------------------
- [ElevatorBoardingThread]
- -Elevator elevator
- -List<Floor> floors
- -void populateElevator //pega num número aleatório de pessoas, de 0 ao número total de pessoas no piso, e insere dentro do elevador
- -void start //caso o elevador esteja parado, de X em X segundos executa populateElevator, caso contrário faz sleep
- -----------------------------------------------------------------
- [ElevatorMonitorThread]
- -Elevator elevator
- -void nextState //com base no estado atual, calcula o próximo estado (moving->opening doors->doors open->closing->moving)
- -void start //executa o nextState e faz sleep durante state.delay
- -----------------------------------------------------------------
- [ElevatorSimulator]
- -List<Floor> floors
- -List<Elevators> elevators
- -void generateSimulation //gera aleatóriamente toda a simulação
- -----------------------------------------------------------------
- -----------------------------------------------------------------
- -----------------------------------------------------------------
- Na main cria um ElevatorSimulator object, e executa o generateSimulation para gerar a simulação.
- Vais gerar:
- -Para cada piso, um número aleatório de pessoas.
- -Para cada elevador, um piso currente aleatório
- Para cada elevador, precisas de 3 threads:
- -ElevatorCallThread - Gera chamadas aleatórias do elevador, para um dos pisos da simulação
- -ElevatorBoardingThread - Trata da aleatóriedade na entrada do elevador (quantas pessoas entram, quantas pessoas pedem ao elevador para ir para um dos pisos que não esteja já marcado, etc)
- -ElevatorMonitorThread - Trata da monitorização do elevador, mudar de andar, abrir portas, fechar portas, etc
- -ElevatorAccidentThread - Trata de causar anómalias no elevador
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement