Ora bem, agora que estou do outro lado da barricada, sou eu a fazer os enunciados. Como me lembro bem do que era, faço sempre uma implementação do projecto. Numa das cadeiras deste semestre que lecciono (Programação Avançada), lembrei-me que fazer um Simulador do funcionamento de elevadores num prédio podia ser giro. Escusado será dizer que eles já se começaram a passar... :)
Mas já tenho uma implementação proof-of-concept a bombar (ver imagem, ainda em modo de texto. Depois actualizo com a versão final). Aparte da modelação do problema que já é complexa de si (têm de ser orientada a objectos, utilizar tipos abstractos de dados [Filas, Filas com prioridade, Pilhas, Deques, etc.] e utilizar padrões Singleton, Factory, Strategy e ainda segundo o modelo Model-View-Controller), a lógica requerida para controlar elevadores é mais complexa do que aparenta, particularmente no que toca a responder a chamadas quando existem múltiplos elevadores por onde escolher. Deve-se escolher o que está mais perto? Provavelmente não, se se estiver a movimentar no sentido aposto ao piso de chamada. E se um elevador parado está a um piso de distância, mas existe um elevador, a dois pisos de distância, a se movimentar na direcção do piso de chamada?
Fig. - Sim, não se parece com nada ainda, mas a maior parte de vocês também não percebe nada disto :)
Com isto já descobri mais uma coisita para me entreter e até expandir e utilizar um motor de inferência para a "inteligência" do gestor de elevadores - JESS, por ex. Agora resta-me não me distrair que tenho a defesa de mestrado a bater à porta!
Sem comentários:
Enviar um comentário