Projeto de Software Orientado a Objeto

Descrição do Projeto - Período 2002.1


Você deve implementar o programa de alocação de salas descrito abaixo. A interface gráfica não precisa ser caprichada; não quero que você perca tempo produzindo interfaces gráficas bonitinhas. Temos pouco tempo para o projeto. Por outro lado, seu programa deve usar uma arquitetura com isolamento entre a lógica de negócio e a GUI. Exponha as interfaces da lógica de negócio através de uma API. Coloque uma linguagem de script simples como camada acima da API para possibilitar usar o programa com uma interface a caractere. Em seguida, uma interface gráfica pode substituir a interface a caractere. Talvez o padrão de projeto MVC seja de valia.

Um dos objetivos do projeto é de usar o maior número de design patterns possível. Pense em formas de maximizar a flexibilidade do código. Por exemplo, seria fácil introduzir novos tipos de salas?

O projeto será avaliado através de 3 milestones:

Para cada milestone, entregue o seguinte material:

Requisitos Gerais do Sistema

O projeto pede para implementar um alocador de salas para uma universidade. Temos os seguintes requisitos gerais para o alocador.

Salas

A universidade possui vários tipos de salas que podem ser escalonadas: salas de aula, laboratórios, escritórios e salas de conferência. Cada sala tem uma capacidade física (o número de pessoas que podem estar na sala). Cada sala possui uma identificação única que consiste da abreviação dp prédio seguido de um número (Exemplo: CN 216). Algumas salas possuem apelidos (a Masmorra) ou títulos mais grandiosos (Auditório Mário Toyotaro Hattori).

Há vários tipos de salas de aula: normal, inteligente e para videoconferência. Uma sala normal tem assentos para os alunos, pelo menos 1 quadro-negro ou quadro-branco e uma mesa ou pódio para o professor. Algumas salas abrigam um retroprojetor e uma tela de projeção. Outras salas têm uma TV conectada ao sistema de TV a cabo da universidade. Uma sala inteligente é uma sala normal com a adição de um computador em rede, um sistema de áudio e um projetor acoplado ao computador. Algumas salas inteligentes têm computadores para os alunos também. Uma sala inteligente só pode ser usada para aulas ou eventos que necessitem de equipamento especial na sala. Uma sala de videoconferência tem o hardware necessário (câmeras, etc.) para fazer videoconferência com lugares remotos. Uma sala de videoconferência só pode ser utilizada por aulas que estão sendo ministradas à distância.

Há vários tipos de laboratórios: de computação, de química, de física e de biologia. Laboratórios de química, física e biologia só podem ser usados por aulas desta área de conhecimento. Assim, um laboratório de química só pode ser utilizado por uma aula de química. Alguns laboratórios de computação são abertos e não podem ser escalonados.

Escritórios são atribuídos ao corpo docente e aos funcionários da universidade. Já que o corpo docente e os funcionários não mudam freqüentemente de escritórios, o alocador de sala não precisa lidar com escritórios.

Há dois tipos de salas de conferência: normal e de videoconferência. Salas de conferência normais só podem ser usadas por eventos não repetitivos.Não podem ser escalonadas para aulas. A única sala de videoconferencia só pode ser alocada para conferências que tenham participantes remotos.

Eventos

Há dois tipos de eventos que podem ser escalonados numa sala: repetitivos e não repetitivos. Eventos repetitivos são aqueles que ocorrem nos mesmo dias da semana e nos mesmos horários durante o semestre inteiro. Um evento não repetitivo ocorre apenas uma vez. Um evento tem um horário de início, um horário de término, um nome e uma pessoa de contato. Por exemplo, uma aula pode iniciar às 14:00, terminar às 15:30, chamar-se "POO", e o nome de contato seria o instrutor. Atualmente, as salas não são escalonadas nos fins de semana. Cada semestre tem uma data inicial e uma data final.

Funcionalidade

O alocador de salas deve executar várias operações. A primeira operação é a alocação de uma sala. Uma pessoa pode precisar de uma sala para um evento repetitivo ou não repetitivo. Já que pessoas freqüentemente gostam de ter alternativas, queremos que o alocador informe as salas disponíveis que satisfaçam as restrições do evento; a pessoa escolhe então a sala desejada. O alocador é mono-usuário (não é usado simultaneamente por várias pessoas). Cada pedido de alocação é tratado individual e seqüencialmente (não há grupos de pedidos que devem ser satisfeitos em bloco - talvez no futuro). A universidade provê a alocação inicial de salas para disciplinas padrão.

A segunda operação do alocador é de cancelar um evento previamente escalonado. há duas possibilidade no cancelamento de um evento repetitivo: o cancelamento pode ser para o semestre inteiro (disciplina cancelada);  também pode haver cancelamento de uma data particular (quando o instrutor tem que viajar, por exemplo).

Uma terceira operação executada pelo alocador é de localizar um evento escalonado. Um usuário pode desejar achar um evento pelo nome do evento, ou pela pessoa de contato, etc. Por exemplo, alguém pode desejar achar um evento que ocorre quinta-feira à noite com o nome de "POO".

Há desejos de, no futuro, transformar o alocador numa ferramenta multi-usuário acessada via Web.