Ir para conteúdo
Fórum CódigoFonte.net

titular

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

  1. Mto Obrigado! Noitada ate as 6 da manha mas lah consegui
  2. Boas! Tenho um trabalho para a faculdade k é um veradeiro desafio a programadores por objectos. Problema: Pretende-se realizar a simulação de um elevador, utilizando técnicas de desenvolvimento de sistemas baseados em objectos. O elevador faz serviço entre dois pisos – piso 0 e piso 1. O simulador funciona da seguinte forma: − o elevador transporta apenas um passageiro de cada vez; − a chegada de uma pessoa a um piso é simulada por acção do clique no botão “Chegou pessoa ao piso”. A imagem da pessoa no piso indica a presença de pessoas (uma ou mais). O valor da caixa de texto com a legenda “Número de pessoas” indica o número de pessoas presentes no piso; − sempre que existe pelo menos uma pessoa num determinado piso, o elevador move-se para esse piso para realizar o serviço de transporte; − após chegar a um piso, o simulador realiza duas acções: o se o elevador tem um passageiro, este desembarca; o de seguida, verifica se existem passageiros para transportar; se existirem, a pessoa entra no elevador e este parte para o outro piso; caso contrário, mantém-se parado no piso actual até que seja necessário efectuar serviço num piso; Pretende-se que o aluno implemente o simulador do elevador usando uma abordagem baseada em objectos. O simulador é constituído por três objectos: elevator - do tipo Elevator, que representa o elevador - floor0 e floor1 – do tipo Floor, que representam os pisos. Descrição da interface do tipo Floor Construtor: Floor(number: Number, posY: Number, personImgId: String, numPersonId: String) Argumentos: number – número do elevador – 0 ou 1. posY – posição do elevador (eixo dos yy). personImgId – identificador do elemento <IMG> que representa a pessoa presente no piso. numPersonImgId – identificador do elemento <INPUT type="text"> que contém o número de pessoas presentes no piso. Métodos: Nota: os métodos e atributos que estão sublinhados são fornecidos no código fonte disponibilizado. hidePerson() – Oculta a imagem da pessoa no piso. Este resultado é conseguido atribuindo o valor "hidden" à propriedade de estilo visibility do objecto que representa o elemento <IMG>: this.personImg.style.visibility = "hidden"; showPerson() – Põe visível a imagem da pessoa no piso. Para tornar um elemento visível, atribui-se o valor "visible" à propriedade de estilo visibility: this.personImg.style.visibility = "visible"; hasPerson() – Retorna o valor booleano true caso o piso tenha pessoas e false caso contrário. personEnterFloor() – Este método simula a entrada de uma pessoa no piso. Se não existirem pessoas no piso, a imagem da pessoa fica visível. O número de pessoas presentes no piso é incrementado. personLeavesFloor() – Este método é usado para notificar o objecto Floor da saída de uma pessoa do piso. O número de pessoas presentes no piso é decrementado. Se o piso ficar vazio, a imagem da pessoa é ocultada. Descrição da interface do tipo Elevator Construtor: Elevator(elevatorImgId: String, elevatorPersonImgId: String, floor0: Floor, floor1: Floor) Argumentos: elevatorImgId – identificador do elemento gráfico que representa o elevador (o elevador é representado por um elemento <DIV>). elevatorPersonImgId – identificador do elemento gráfico que representa o passageiro do elevador (o passageiro é representado por um elemento <IMG>). floor0 – objecto do tipo Floor que representa o piso 0. floor1 – objecto do tipo Floor que representa o piso 1. Propriedades: moving – valor numérico que representa o identificador do temporizador usado no movimento do elevador. Neste trabalho, o movimento do elevador é realizado usando um temporizador de acção repetitiva que invoca a função global step() para realizar o movimento do elevador. Para criar um temporizador (timer) cíclico, usa-se a função window.setInterval(code, delay), predefinida na linguagem Javascript. O argumento code é uma cadeia de caracteres contendo código JavaScript que é executado de cada vez que decorre o intervalo de tempo delay. O argumento delay é especificado em milisegundos. Para cancelar a acção do temporizador usa-se a função window.clearInterval(timerId). Métodos: hidePassenger() – Oculta a imagem da pessoa no elevador. Para ocultar o elemento, atribui-se o valor "hidden" à propriedade de estilo visibility do objecto this.elevatorPersonImg: this.elevatorPersonImg.style.visibility = "hidden"; showPassenger() – Põe visível a imagem da pessoa no piso. Para tornar um elemento visível, atribui-se o valor "visible" à propriedade de estilo visibility do objecto this.elevatorPersonImg: this.elevatorPersonImg.style.visibility = "visible"; init() – Inicia o estado do elevador, nomeadamente, as posições iniciais do elevador e do passageiro (estes elementos são posicionados de forma absoluta). De seguida, oculta a imagem do passageiro dentro do elevador. callElevator() – Simula a chamada do elevador. serviceFloor() – O elevador realiza serviço no piso actual. Se existirem pessoas no piso, faz embarcar uma pessoa no elevador e parte para o outro piso; se não existirem pessoas no piso actual, verifica se é necessário realizar serviço no outro piso. Se for necessário, o elevador parte; caso contrário, mantém-se no piso actual. arriveAtFloor() – Simula a chegada do elevador ao piso. Este método é invocado automaticamente pelo método move() após o movimento do elevador ter cessado. Após ter chegado ao piso, o elevador inverte o seu estado interno de modo a que o movimento se processe na direcção oposta. Se houver passageiro, este sai do elevador, sendo alterado o aspecto gráfico. De seguida, verifica se o piso necessita de serviço. passengerEnters() – Simula a entrada do passageiro no elevador. A imagem da pessoa dentro do elevador aparece visível. passengerExits() – Simula a saída do passageiro do elevador. A imagem da pessoa dentro do elevador é ocultada. leave() – Simula a partida do elevador. move() – Simula o movimento do elevador. Se alguem tiver uma solução agradeço que me ajude
×
×
  • Criar Novo...