Advertisement
Guest User

Untitled

a guest
Apr 27th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.87 KB | None | 0 0
  1. Interfaces: ElevatorSimulatorThread, Elevator, State
  2.  
  3. [ElevatorThread]
  4. -void start
  5.  
  6. -----------------------------------------------------------------
  7.  
  8. [Elevator]
  9. -int getMaxWeight
  10. -List<Passenger> getPassengers
  11. -void newPassenger
  12. -boolean canUse
  13. -Floor getCurrentFloor
  14. -Floor getNextFloor
  15. -boolean canStop
  16. -State getCurrentState
  17. -void blockEvelator
  18. -void causeAnomaly
  19. -void repairElevator
  20. -String getType
  21.  
  22. -----------------------------------------------------------------
  23.  
  24. [Passenger]
  25. -String getType
  26. -int getWeight
  27.  
  28. -----------------------------------------------------------------
  29.  
  30. [State]
  31. -String getDescription
  32. -float getDelay
  33.  
  34.  
  35. -----------------------------------------------------------------
  36. -----------------------------------------------------------------
  37. -----------------------------------------------------------------
  38.  
  39. Classes Abstratas: ElevatorAbstract, PassengerAbstract
  40.  
  41. [ElevatorAbstract]
  42. //Programa os valores default dos elevadores
  43. -Floor currentFloor
  44. -List<Floor> targetFloors
  45. -List<Passenger> passengers
  46. -State state
  47.  
  48. -boolean canUse //retorna true caso soma dos weights dos passageiros < getMaxWeight
  49. -void newPassenger //adquire novo passageiro
  50. -Floor getCurrentFloor
  51. -Floor getNextFloor
  52. -void blockEvelator
  53. -void causeAnomaly
  54. -void repairElevator
  55.  
  56. -----------------------------------------------------------------
  57.  
  58. [PassengerAbstract]
  59. -int weight
  60.  
  61. -----------------------------------------------------------------
  62. -----------------------------------------------------------------
  63. -----------------------------------------------------------------
  64.  
  65. Classes:
  66.  
  67. [NormalElevator]
  68. -int getMaxWeight //retorna 4
  69. -String getType //retorna normal
  70.  
  71. -----------------------------------------------------------------
  72.  
  73. [LargeElevator]
  74. -int getMaxWeight //retorna 10
  75. -String getType //retorna large
  76.  
  77. -----------------------------------------------------------------
  78.  
  79. [CargoElevator]
  80. -int getMaxWeight //retorna 20
  81. -boolean canUse //retorna true caso passenger.type == cargo
  82. -canStop //true caso currentFloor.number == -2, -1, totalFloors
  83. -String getType //retorna cargo
  84.  
  85. -----------------------------------------------------------------
  86.  
  87. [ExpressElevator]
  88. -int getMaxWeight //retorna 10
  89. -canStop //true caso currentFloor.number%10 == 0
  90. -String getType //retorna express
  91.  
  92. -----------------------------------------------------------------
  93.  
  94. [RestrictedElevator]
  95. -int getMaxWeight //retorna 4
  96. -boolean canUse //retorna true caso passenger.privileged == true
  97. -String getType //retorna restricted
  98.  
  99. -----------------------------------------------------------------
  100.  
  101. [Person]
  102. -int getWeight //retorna 1
  103. -String getType //retorna Person
  104.  
  105. -----------------------------------------------------------------
  106.  
  107. [Cargo]
  108. -int getWeight //retorna weight
  109. -String getType //retorna Cargo
  110.  
  111. -----------------------------------------------------------------
  112.  
  113. [Floor]
  114. -List<Passenger> passengers
  115.  
  116. -List<Passengers> getPassengers
  117. -List<Passengers> removePassenger
  118.  
  119. -----------------------------------------------------------------
  120.  
  121. [MovingState]
  122. -Elevator elevator
  123.  
  124. -String getDescription //retornar moving
  125. -float getDelay //retornar tempo de movimento normal ou tempo*2 caso elevator.type == cargo
  126.  
  127. -----------------------------------------------------------------
  128.  
  129. [OpeningDoorsState]
  130. -String getDescription //retornar opening doors
  131. -float getDelay //retornar tempo de abrir portas
  132.  
  133. -----------------------------------------------------------------
  134.  
  135. [OpenDoorsState]
  136. -String getDescription //retornar open doors
  137. -float getDelay //retornar tempo de espera com portas abertas
  138.  
  139. -----------------------------------------------------------------
  140.  
  141. [ClosingDoorsState]
  142. -String getDescription //retornar closing doors
  143. -float getDelay //retornar tempo de fechar portas
  144.  
  145. -----------------------------------------------------------------
  146.  
  147. [ElevatorCallThread]
  148. -Elevator elevator
  149. -List<Floor> floors
  150.  
  151. -void callElevator //chama elevador para um floor aleatório, que tenha pessoas
  152. -void start //de X em X segundos executa callElevator
  153.  
  154. -----------------------------------------------------------------
  155.  
  156. [ElevatorBoardingThread]
  157. -Elevator elevator
  158. -List<Floor> floors
  159.  
  160. -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
  161. -void start //caso o elevador esteja parado, de X em X segundos executa populateElevator, caso contrário faz sleep
  162.  
  163. -----------------------------------------------------------------
  164.  
  165. [ElevatorMonitorThread]
  166. -Elevator elevator
  167.  
  168. -void nextState //com base no estado atual, calcula o próximo estado (moving->opening doors->doors open->closing->moving)
  169. -void start //executa o nextState e faz sleep durante state.delay
  170.  
  171. -----------------------------------------------------------------
  172.  
  173. [ElevatorSimulator]
  174. -List<Floor> floors
  175. -List<Elevators> elevators
  176.  
  177. -void generateSimulation //gera aleatóriamente toda a simulação
  178.  
  179.  
  180. -----------------------------------------------------------------
  181. -----------------------------------------------------------------
  182. -----------------------------------------------------------------
  183.  
  184. Na main cria um ElevatorSimulator object, e executa o generateSimulation para gerar a simulação.
  185. Vais gerar:
  186. -Para cada piso, um número aleatório de pessoas.
  187. -Para cada elevador, um piso currente aleatório
  188.  
  189. Para cada elevador, precisas de 3 threads:
  190. -ElevatorCallThread - Gera chamadas aleatórias do elevador, para um dos pisos da simulação
  191. -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)
  192. -ElevatorMonitorThread - Trata da monitorização do elevador, mudar de andar, abrir portas, fechar portas, etc
  193. -ElevatorAccidentThread - Trata de causar anómalias no elevador
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement