Difference between revisions of "Programação com Objectos/Projecto de Programação com Objectos/Repositório CVS"

From Wiki**3

< Programação com Objectos‎ | Projecto de Programação com Objectos
(Conteúdo e Estrutura do Repositório)
(Conteúdo e Estrutura do Repositório)
Line 146: Line 146:
 
{{Aviso|A estrutura do repositório não pode ser alterada.}}
 
{{Aviso|A estrutura do repositório não pode ser alterada.}}
  
{{Aviso|Os nomes das classes fornecidas em '''woo-core''' não podem ser alterados.}}
+
{{Aviso|Os nomes das classes fornecidas em '''woo-core''' e '''woo-app''' não podem ser alterados.}}
  
{{Aviso|O código fornecido em '''woo-app''' tem de ser completado, mas os nomes das classes não podem ser alterados.}}
+
{{Aviso|O código fornecido em '''woo-core''' e '''woo-app''' tem de ser completado.}}
 +
 
 +
{{Aviso|As seguintes classes não podem ser alteradas: '''App.java''', todos os '''Label.java''', todos os '''Menu.java''', todos os '''Message.java''', todos os comandos '''DoOpenMenu*.java''' e todas as excepções fornecidas.}}
  
 
== Cuidados a ter na Utilização do Repositório CVS ==
 
== Cuidados a ter na Utilização do Repositório CVS ==

Revision as of 19:16, 3 October 2020

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: 2020/10/23 12:00 (inicial); 2020/11/09 12:00 (intercalar); 2020/12/11 12:00 (final); 2020/12/14-2019/12/18 (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 'main'.
  • 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-uuilib e o conteúdo inicial do CVS são de uso obrigatório:
  • po-uuilib (classes de base) po-uuilib-201708311009.tar.bz2 (não pode ser alterada) - javadoc
  • woo-core (classes do "core") (via CVS) (deve ser completada -- os nomes das classes fornecidas não podem ser alterados)
  • woo-app (classes de interacção) (via CVS) (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 CVS
Apenas se consideram para avaliação os projectos existentes no repositório CVS 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 CVS para os projectos (um por grupo) já contêm versões iniciais do projecto.

Guia para leitores perplexos: CVS Crash Course.

Localização

Os repositórios estão disponíveis no AFS em:

  • /afs/ist.utl.pt/groups/leic-po/po20/cvs

O conteúdo do repositório pode ser manipulado com o comando cvs ou com qualquer outro cliente compatível (e.g. eclipse).

Esta directoria não deve ser utilizada directamente.

Modo de Acesso

No texto que se segue:

  • ### designa o número de grupo com três dígitos, e.g., 012
  • ISTID designa o identificador de aluno, no formato "ist123456"

Assim, os valores possíveis para a variável de ambiente CVSROOT (ou pela opção -d do comando "cvs") são:

  • /afs/ist.utl.pt/groups/leic-po/po20/cvs/### (disponível em clientes AFS e utilizador com token válido para a célula ist.utl.pt)
  • :ext:ISTID@sigma.ist.utl.pt:/afs/ist.utl.pt/groups/leic-po/po20/cvs/### (disponível via SSH; verificar que CVS_RSH=ssh)
Alunos que ainda não visitaram o self-service da DSI, devem fazê-lo, para activação dos serviços relevantes (AFS e Shell, pelo menos). Sem isso, não conseguirão desenvolver ou entregar o projecto, reprovando à disciplina.

Conteúdo e Estrutura do Repositório

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

Cada projecto é constituído por dois módulos: project/woo-core e project/woo-app.

Conteúdo inicial do repositório CVS para o módulo woo-core
woo-core
├── Makefile
└── src
    └── woo
        ├── exceptions
        │   ├── BadEntryException.java
        │   ├── ImportFileException.java
        │   ├── MissingFileAssociationException.java
        │   └── UnavailableFileException.java
        ├── Storefront.java
        └── Store.java
Conteúdo inicial do repositório CVS para o módulo woo-app
woo-app
├── data.txt
├── Makefile
└── src
    └── woo
        └── app
            ├── App.java
            ├── clients
            │   ├── DoRegisterClient.java
            │   ├── DoShowAllClients.java
            │   ├── DoShowClient.java
            │   ├── DoShowClientTransactions.java
            │   ├── DoToggleProductNotifications.java
            │   ├── Label.java
            │   ├── Menu.java
            │   └── Message.java
            ├── exceptions
            │   ├── DuplicateClientKeyException.java
            │   ├── DuplicateProductKeyException.java
            │   ├── DuplicateSupplierKeyException.java
            │   ├── FileOpenFailedException.java
            │   ├── InvalidDateException.java
            │   ├── Message.java
            │   ├── UnauthorizedSupplierException.java
            │   ├── UnavailableProductException.java
            │   ├── UnknownClientKeyException.java
            │   ├── UnknownProductKeyException.java
            │   ├── UnknownServiceLevelException.java
            │   ├── UnknownServiceTypeException.java
            │   ├── UnknownSupplierKeyException.java
            │   ├── UnknownTransactionKeyException.java
            │   └── WrongSupplierException.java
            ├── lookups
            │   ├── DoLookupPaymentsByClient.java
            │   ├── DoLookupProductsUnderTopPrice.java
            │   ├── Label.java
            │   ├── Menu.java
            │   └── Message.java
            ├── main
            │   ├── DoAdvanceDate.java
            │   ├── DoDisplayDate.java
            │   ├── DoOpen.java
            │   ├── DoOpenMenuClients.java
            │   ├── DoOpenMenuLookups.java
            │   ├── DoOpenMenuProducts.java
            │   ├── DoOpenMenuSuppliers.java
            │   ├── DoOpenMenuTransactions.java
            │   ├── DoSave.java
            │   ├── DoShowGlobalBalance.java
            │   ├── Label.java
            │   ├── Menu.java
            │   └── Message.java
            ├── products
            │   ├── DoChangePrice.java
            │   ├── DoRegisterProductBook.java
            │   ├── DoRegisterProductBox.java
            │   ├── DoRegisterProductContainer.java
            │   ├── DoShowAllProducts.java
            │   ├── Label.java
            │   ├── Menu.java
            │   └── Message.java
            ├── suppliers
            │   ├── DoRegisterSupplier.java
            │   ├── DoShowSuppliers.java
            │   ├── DoShowSupplierTransactions.java
            │   ├── DoToggleTransactions.java
            │   ├── Label.java
            │   ├── Menu.java
            │   └── Message.java
            └── transactions
                ├── DoPay.java
                ├── DoRegisterOrderTransaction.java
                ├── DoRegisterSaleTransaction.java
                ├── DoShowTransaction.java
                ├── Label.java
                ├── Menu.java
                └── Message.java

Estes módulos podem ser obtidos em conjunto fazendo checkout de project (ver abaixo).

O repositório já tem a seguinte estrutura:

  • woo-core (directoria principal da biblioteca com a funcionalidade sem interface com o utilizador)
  • woo-core/Makefile (makefile secundária, semelhante à disponibilizada na aplicação bancária)
  • woo-core/src (directoria onde reside o código do "core", à semelhança do que acontece na aplicação bancária)
  • woo-app (directoria correspondente à aplicação; contém a interface com o utilizador)
  • woo-app/Makefile (makefile secundária, semelhante à disponibilizada na aplicação bancária)
  • woo-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 (woo-core) (que devem ser adaptadas) e outras completamente implementadas (woo-app) (algumas das quais não podem ser alteradas).

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

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

NÃO FAZER

  • cvs init (não é necessário: o repositório já existe)
  • cvs import (não é necessário: o projecto já existe)
  • cd /afs/ist.utl.pt/groups/leic-po/po20/cvs (ou qualquer outra manipulação directa dos ficheiros do repositório: toda a interacção com o repositório deve ser limitada ao comando "cvs")

FAZER

Antes de tudo o mais, fazer cópias de segurança (vulgo "backups") de tudo o que já foi feito.

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. cvs co project (permite criar localmente uma directoria controlada pelo CVS, com o nome project, com a estrutura apresentada acima, contendo os ficheiros do projecto);
  2. Editar/adicionar material do/ao projecto;
  3. Caso sejam criados ficheiros ou directórios novos, fazer cvs add ficheiro1 ficheiro2 ... ficheiro3 (adicionar cada ficheiro novo ao projecto no CVS);
  4. cvs update (antes de enviar alteração locais para o repositório, verificar se há actualizações a incorporar na cópia local e que não foi esquecido nenhum ficheiro importante: voltar a 3 até terem sido todos adicionados)
  5. cvs commit (enviar alterações para o repositório)

Observações importantes

  • No ponto 3 acima, é importante notar que quando se quer adicionar o conteúdo de uma (sub)directoria, deve ser primeiro adicionada a própria directoria e, só depois, o seu conteúdo.
  • Não adicionar a biblioteca po-uuilib ao projecto (serão removidas e quaisquer alterações perdidas -- isto pode causar problemas de compilação e perda de nota).
  • Pessoas sem área no AFS, ou sem login activado, não poderão aceder ao conteúdo do repositório: para activar estes acessos, consultar o self-service do CIIST (DSI). Em caso de dificuldade, consultar o corpo docente.
  • A estrutura do projecto no CVS deve ser mantida como apresentado e cada biblioteca do projecto deve ser, em geral, semelhante, em estrutura, às apresentadas para a aplicação bancária.
  • Em caso de dúvidas, consultar o corpo docente.

Agradece-se a comunicação de eventuais problemas.