- Atividades assíncronas da semana de 08/09 a 11/09:
- Assistir a video-aula sobre o Command.
- Especificação do 1o trabalho (Command):
- Implementar uma aplicação (console, não visual) que permita a realização de "undo" e "redo" de duas operações, realizadas em um objeto retângulo:
- Operação de movimentação: modifica as coordenadas do retângulo para uma nova posição (x, y).
- Operação de mudança de cor: modifica a cor do retângulo para uma nova cor, informada como uma String.
- A aplicação deve exibir as informações atuais do retângulo - inicialmente na posição (0, 0) e cor preta:
- O retângulo está na posição (0, 0) com cor preta
- Logo abaixo da informação atual do retângulo, deve exibir o seguinte menu:
- 1) Mover o retângulo
- 2) Altera a cor do retângulo
- 3) Undo
- 4) Redo
- 5) Sair da aplicação
- Digite a sua opção:
- Ao selecionar 1:
- A aplicação deve criar uma nova instância da classe MoveCommand, alterar a posição do retângulo e guardar esta instância no histórico de commands. Um atributo deve armazenar a posição atual no histórico de commands.
- Ao selecionar 2:
- A aplicação deve criar uma nova instância da classe ColorChangeCommand, alterar a cor do retângulo e guardar esta instância no histórico de commands.
- Ao selecionar 3:
- A aplicação deve executar o método undo() no command atual e retroceder a posição atual no histórico. Caso o primeiro command do histórico já tenha sido desfeito exibir a mensagem "Não posso mais realizar undo".
- Ao selecionar 4:
- A aplicação deve avançar a posição atual no histórico e executar o método redo() do command atual. Caso o último command do histórico já tenha sido refeito exibir a mensagem "Não posso mais realizar redo".
- OBS: caso seja selecionado 1 ou 2 e a posição atual no histórico não seja o último elemento, deve-se eliminar todos os elementos à frente da posição atual e proceder conforme indicado acima.
- Ao selecionar 5:
- A aplicação é encerrada. Qualquer uma das outras opções deve realizar a operação informada e reapresentar o menu.
- Implementar uma aplicação (console, não visual) que permita a realização de "undo" e "redo" de duas operações, realizadas em um objeto retângulo:
- Especificação do 2o trabalho (Observer):
- O sistema deve possibilitar a criação e remoção de diversos objetos do tipo Professor (Observable) e Aluno (Observer). Deve ser possível conectar e desconectar Alunos a Professores. Sempre que um professor definir a data da avaliação da sua disciplina todos os Alunos conectados devem ser notificados.
- O sistema deve apresentar o seguinte menu:
- 1 - Criar Professor
- 2 - Criar Aluno
- 3 - Conectar Aluno a Professor
- 4 - Desconectar Aluno de Professor
- 5 - Definir data de avaliação
- 6 - Sair da aplicação
- Opção 1: ao escolher esta opção o sistema deve solicitar o nome do professor, criar uma nova instância da classe Professor e incluir esta instância na lista de professores.
- Opção 2: ao escolher esta opção o sistema deve solicitar o nome do aluno, criar uma nova instância da classe Aluno e incluir esta instância na lista de alunos.
- Opção 3: ao escolher esta opção, o sistema deve apresentar todos os professores cadastrados e solicitar que o usuário escolha um deles. Após isso, o sistema deve apresentar todos os alunos cadastrados e solicitar que o usuário escolha um deles. Em seguida, o aluno selecionado deve ser registrado no professor selecionado.
- Opção 4: ao escolher esta opção, o sistema deve apresentar todos os professores cadastrados e solicitar que o usuário escolha um deles. Após isso, o sistema deve apresentar todos os alunos conectados a este professor e solicitar que o usuário escolha o aluno a ser desconectado.
- Opção 5: ao escolher esta opção, o sistema deve apresentar todos os professores cadastrados e solicitar que o usuário escolha um deles. Em seguida, deve ser solicitado a nova data da avaliação e executar o método setDataAvaliacao() neste professor. Todos os alunos conectados devem ser notificados.
- OBS: o observer deve ser implementado em modo push.