Programação com Objectos/Projecto de Programação com Objectos/Repositório GIT

From Wiki**3

< Programação com Objectos‎ | Projecto de Programação com Objectos
AVISOS - Avaliação em Época Normal

Esclarecimento de dúvidas:

  • Consultar sempre o corpo docente atempadamente: presencialmente ou através do endereço oficial da disciplina [1].
  • Não utilizar fontes de informação não oficialmente associadas ao corpo docente (podem colocar em causa a aprovação à disciplina).
  • Não são aceites justificações para violações destes conselhos: quaisquer consequências nefastas são da responsabilidade do aluno.

Requisitos para desenvolvimento, material de apoio e actualizações do enunciado (ver informação completa em Projecto de Programação com Objectos):

  • O material de apoio é de uso obrigatório e não pode ser alterado.
  • Verificar atempadamente (mínimo de 48 horas antes do final de cada prazo) os requisitos exigidos pelo processo de desenvolvimento.

Processo de avaliação (ver informação completa em Avaliação do Projecto):

  • Datas: 2024/09/27 12:00 (inicial); 2024/10/11 12:00 (intercalar); 2024/10/25 12:00 (final); 2024/10/25 (early bird) 2024/10/28 (normal) (teste prático).
  • Todas as entregas são cruciais para o bom desenvolvimento do projecto, sendo obrigatórias: a não realização de uma entrega implica a exclusão da avaliação do projecto e, por consequência, da avaliação da disciplina.
  • Verificar atempadamente (até 48 horas antes do final de cada prazo) os requisitos exigidos pelo processo de avaliação, incluindo a capacidade de acesso ao repositório.
  • Apenas se consideram para avaliação os projectos existentes no repositório oficial. Apenas se considera para avaliação o ramo 'master'.
  • Trabalhos não presentes no repositório no final do prazo têm classificação 0 (zero) (não são aceites outras formas de entrega). Não são admitidas justificações para atrasos em sincronizações do repositório. A indisponibilidade temporária do repositório ou de outros materiais, desde que inferior a 24 horas, não justifica atrasos na submissão de um trabalho.
  • A avaliação do projecto pressupõe o compromisso de honra de que o trabalho correspondente foi realizado pelos alunos correspondentes ao grupo de avaliação.
  • Fraudes na execução do projecto terão como resultado a exclusão dos alunos implicados do processo de avaliação.
Material de Uso Obrigatório
As bibliotecas po-uilib e o conteúdo inicial do repositório GIT são de uso obrigatório:
  • po-uilib (classes de base) po-uilib-202408310000.tar.bz2 (não pode ser alterada) - javadoc
  • hva-core (classes do "core") (via GIT) (deve ser completada -- os nomes das classes fornecidas não podem ser alterados)
  • hva-app (classes de interacção) (via GIT) (deve ser completada -- os nomes das classes fornecidas não podem ser alterados)
A máquina virtual, fornecida para desenvolvimento do projecto, já contém todo o material de apoio.
Uso Obrigatório: Repositório GIT
Apenas se consideram para avaliação os projectos existentes no repositório GIT oficial.

Trabalhos não presentes no repositório no final do prazo têm classificação 0 (zero) (não são aceites outras formas de entrega). Não são admitidas justificações para atrasos em sincronizações do repositório. A indisponibilidade temporária do repositório, desde que inferior a 24 horas, não justifica atrasos na submissão de um trabalho.

Os repositórios GIT para os projectos (um por grupo) já contêm versões iniciais do projecto.

O uso do repositório GIT é obrigatório.
Não serão considerados projectos que não estejam no repositório oficial.

Localização

Os repositórios estão disponíveis no Gitlab da RNL em:

O conteúdo do repositório pode ser manipulado com o comando git ou com qualquer outro cliente compatível.

Modo de Acesso

O acesso ao serviço GitLab da RNL é realizado com as credenciais IST (à la Fénix)

Todos os alunos do IST têm de ter credenciais válidas para poderem ser avaliados na disciplina.

Apenas é considerado para avaliação o ramo master. Alunos que não coloquem o projecto neste ramo serão excluídos da avaliação.
Para realização do teste prático é ainda necessário activar os serviços AFS e Shell no self-service da DSI. Sem isso, não conseguirão completar a avaliação do projecto, reprovando à disciplina.

Conteúdo e Estrutura do Repositório

O código fornecido é de uso obrigatório e deve ser completado.

O projecto é constituído por dois módulos: hva-core e hva-app (o módulo po-uilib é exterior ao desenvolvimento).

Conteúdo inicial do repositório para o módulo hva-core
hva-core
├── Makefile
└── src
    └── hva
        ├── exceptions
        │   ├── ImportFileException.java
        │   ├── MissingFileAssociationException.java
        │   ├── UnavailableFileException.java
        │   └── UnrecognizedEntryException.java
        ├── Hotel.java
        └── HotelManager.java
Conteúdo inicial do repositório para o módulo hva-app
hva-app
├── Makefile
└── src
    └── hva
        └── app
            ├── animal
            │   ├── DoRegisterAnimal.java
            │   ├── DoShowAllAnimals.java
            │   ├── DoShowSatisfactionOfAnimal.java
            │   ├── DoTransferToHabitat.java
            │   ├── Label.java
            │   ├── Menu.java
            │   ├── Message.java
            │   └── Prompt.java
            ├── App.java
            ├── employee
            │   ├── DoAddResponsibility.java
            │   ├── DoRegisterEmployee.java
            │   ├── DoRemoveResponsibility.java
            │   ├── DoShowAllEmployees.java
            │   ├── DoShowSatisfactionOfEmployee.java
            │   ├── Label.java
            │   ├── Menu.java
            │   ├── Message.java
            │   └── Prompt.java
            ├── exceptions
            │   ├── DuplicateAnimalKeyException.java
            │   ├── DuplicateEmployeeKeyException.java
            │   ├── DuplicateHabitatKeyException.java
            │   ├── DuplicateTreeKeyException.java
            │   ├── DuplicateVaccineKeyException.java
            │   ├── FileOpenFailedException.java
            │   ├── Message.java
            │   ├── NoResponsibilityException.java
            │   ├── UnknownAnimalKeyException.java
            │   ├── UnknownEmployeeKeyException.java
            │   ├── UnknownHabitatKeyException.java
            │   ├── UnknownSpeciesKeyException.java
            │   ├── UnknownTreeKeyException.java
            │   ├── UnknownVaccineKeyException.java
            │   ├── UnknownVeterinarianKeyException.java
            │   └── VeterinarianNotAuthorizedException.java
            ├── habitat
            │   ├── DoAddTreeToHabitat.java
            │   ├── DoChangeHabitatArea.java
            │   ├── DoChangeHabitatInfluence.java
            │   ├── DoRegisterHabitat.java
            │   ├── DoShowAllHabitats.java
            │   ├── DoShowAllTreesInHabitat.java
            │   ├── Label.java
            │   ├── Menu.java
            │   ├── Message.java
            │   └── Prompt.java
            ├── main
            │   ├── DoAdvanceSeason.java
            │   ├── DoNewFile.java
            │   ├── DoOpenAnimalsMenu.java
            │   ├── DoOpenEmployeesMenu.java
            │   ├── DoOpenFile.java
            │   ├── DoOpenHabitatsMenu.java
            │   ├── DoOpenLookupsMenu.java
            │   ├── DoOpenVaccinesMenu.java
            │   ├── DoSaveFile.java
            │   ├── DoShowGlobalSatisfaction.java
            │   ├── Label.java
            │   ├── Menu.java
            │   ├── Message.java
            │   └── Prompt.java
            ├── search
            │   ├── DoShowAnimalsInHabitat.java
            │   ├── DoShowMedicalActsByVeterinarian.java
            │   ├── DoShowMedicalActsOnAnimal.java
            │   ├── DoShowWrongVaccinations.java
            │   ├── Label.java
            │   ├── Menu.java
            │   ├── Message.java
            │   └── Prompt.java
            └── vaccine
                ├── DoRegisterVaccine.java
                ├── DoShowAllVaccines.java
                ├── DoShowVaccinations.java
                ├── DoVaccinateAnimal.java
                ├── Label.java
                ├── Menu.java
                ├── Message.java
                └── Prompt.java

Estes módulos podem ser obtidos em conjunto clonando o projecto com o número correspondente à inscrição no Fénix (ver abaixo).

O repositório já tem a seguinte estrutura:

  • hva-core (directoria principal da biblioteca com a funcionalidade sem interface com o utilizador)
  • hva-core/Makefile (makefile secundária, semelhante à disponibilizada na aplicação bancária)
  • hva-core/src (directoria onde reside o código do "core", à semelhança do que acontece na aplicação bancária)
  • hva-app (directoria correspondente à aplicação; contém a interface com o utilizador)
  • hva-app/Makefile (makefile secundária, semelhante à disponibilizada na aplicação bancária)
  • hva-app/src (directoria onde já reside o código da interface textual, tal como na biblioteca equivalente da aplicação bancária)

Esta estrutura já contém algumas classes parcialmente implementadas (hva-core) (que devem ser adaptadas) e outras parcial ou completamente implementadas (hva-app) (algumas das quais não podem ser alteradas).

A estrutura do repositório não pode ser alterada.
O código fornecido em hva-core e hva-app tem de ser completado.
Os nomes das classes fornecidas em hva-core e hva-app não podem ser alterados.
As seguintes classes e interfaces não podem ser alteradas: App.java, todos os Label.java, todos os Menu.java, todos os Message.java, todos os Prompt.java e todas as excepções fornecidas (tanto em hva-core, como em hva-app.

Cuidados a ter na Utilização do Repositório GIT

NÃO FAZER

  • git init (não é necessário: o repositório já existe)

FAZER

O repositório já contém uma versão preliminar do projecto e devem ser dados os seguintes passos, para continuar a desenvolver o projecto:

  1. git clone git@gitlab.rnl.tecnico.ulisboa.pt:leic-a-po24/prj/000.git (para obter uma cópia local, neste exemplo, do projecto do grupo 000);
  2. Editar/adicionar material do/ao projecto;
  3. Caso sejam criados ficheiros ou directórios novos, fazer git add ficheiro1 ficheiro2 ... ficheiroN (adicionar novos ficheiros/directorias ao projecto);
  4. git pull (antes de enviar alteração locais para o repositório, verificar se há actualizações remotas a incorporar na cópia local)
  5. git status (verificar a situação na cópia local e que não foi esquecido nenhum ficheiro importante: voltar a 3. até terem sido todos adicionados)
  6. git commit -am "Mensagem de commit." (registar alterações na cópia local)
  7. git push (enviar alterações para o GitLab -- sem este passo, não é realizada a entrega do projecto)

Observações importantes

  • Não adicionar cópias do material de apoio (po-uilib) ao projecto (serão removidas e quaisquer alterações perdidas -- além disso, lixo no repositório é penalizado).
  • Pessoas sem área no AFS, ou sem login activado, não poderão aceder ao conteúdo do teste prático: para activar estes acessos, consultar o self-service do CIIST (DSI) (ver acima). Em caso de dificuldade, consultar atempadamente o corpo docente.
  • A estrutura do projecto no GIT deve ser mantida como apresentado.
  • Em caso de dúvidas, consultar o corpo docente.
As activações de serviços não são instantâneas: activações no próprio dia de uma entrega ou de uma prova, estão condenadas a falhar e resultam necessariamente em reprovação. A activação atempada é da exclusiva responsabilidade do aluno.

"Receita" para a Entrega de Diagramas UML

Tal como indicado no método de avaliação, os 3 diagramas a entregar -- UML-po-uilib.pdf, UML-hva-app.pdf, UML-hva-core.pdf -- devem ser colocados na directoria uml do projecto no repositório GIT.

Os comandos abaixo explicam como realizar essa operação a partir de um projecto no repositório (desde obter uma cópia local até completar a entrega). O passo de obter a cópia local pode ser omitido se o projecto já tiver sido obtido anteriormente. O passo de adicionar novos ficheiros pode ser omitido se as versões dos diagramas corresponderem a actualizações de adições anteriores. Nos exemplos dos comandos abaixo, 199 é o grupo de trabalho da pessoa a realizar a entrega.

  • Obter o projecto do repositório (o projecto fica na directoria local 199). Assume-se que os comandos subsequentes são dados dentro da directoria 199 (notar cd 199 abaixo):
git clone  git@gitlab.rnl.tecnico.ulisboa.pt:leic-a-po24/prj/199.git
cd 199
  • Colocar os ficheiros com os diagramas na directoria uml (ficheiros novos ou actualizações). Esta operação depende de onde estão os diagramas ou de como foram digitalizados a partir da versão manuscrita (recorda-se que apenas são aceites diagramas manuscritos, devidamente acompanhados com a declaração de autoria). O comando apresentado é apenas um exemplo (assume que os diagramas estão originalmente na directoria principal do utilizador).
cp ~/UML-po-uilib.pdf ~/UML-hva-app.pdf ~/UML-hva-core.pdf uml
  • Adicionar os ficheiros novos ao CVS (no comando a seguir, assume-se que os 3 ficheiros são adicionados, mas pode adicionar-se um de cada vez):
git add uml/UML-po-uilib.pdf uml/UML-hva-app.pdf uml/UML-hva-core.pdf
  • Pode realizar-se neste ponto um pedido de actualização da cópia local (caso a outra pessoa do grupo também esteja a fazer alterações -- se não é o caso, este passo é opcional):
git pull
git status
  • Registar as alterações (na cópia local) (a mensagem descreve o commit):
git commit -am "Adicionados diagramas UML."
  • Finalmente, enviam-se os ficheiros novos para o repositório GIT:
git push