(→Conteúdo e Estrutura do Repositório) |
|||
(24 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | {{ | + | {{PRJPOAvisosEN20222023}} |
− | <!--{{ | + | <!--{{PRJPOAvisosEE20222023}}--> |
− | {{ | + | {{PRJPOMandatory20222023}} |
{{TOCright}} | {{TOCright}} | ||
− | <!--'''<font color="red">A DISPONIBILIZAR BREVEMENTE</font>'''--> | + | <!-- |
+ | '''<font color="red">A DISPONIBILIZAR BREVEMENTE</font>''' | ||
+ | --> | ||
+ | Os repositórios CVS para os projectos (um por grupo) já contêm versões iniciais do projecto. | ||
{{Aviso|'''O USO DO REPOSITÓRIO CVS É OBRIGATÓRIO.'''}} | {{Aviso|'''O USO DO REPOSITÓRIO CVS É OBRIGATÓRIO.'''}} | ||
− | {{Aviso|'''NÃO SERÃO CONSIDERADOS PROJECTOS QUE NÃO ESTEJAM NO CVS.''' | + | {{Aviso|'''NÃO SERÃO CONSIDERADOS PROJECTOS QUE NÃO ESTEJAM NO CVS.'''}} |
{{Suggestion|Pequeno guia para leitores perplexos: [[CVS Crash Course]].}} | {{Suggestion|Pequeno guia para leitores perplexos: [[CVS Crash Course]].}} | ||
− | |||
− | |||
== Localização == | == Localização == | ||
Line 17: | Line 18: | ||
Os repositórios estão disponíveis no AFS em: | Os repositórios estão disponíveis no AFS em: | ||
− | * '''<nowiki>/afs/ist.utl.pt/groups/leic-po/ | + | * '''<nowiki>/afs/ist.utl.pt/groups/leic-po/po22/cvs</nowiki>''' |
O conteúdo do repositório pode ser manipulado com o comando '''cvs''' ou com qualquer outro cliente compatível (e.g. ''[http://www.eclipse.org/ eclipse]''). | O conteúdo do repositório pode ser manipulado com o comando '''cvs''' ou com qualquer outro cliente compatível (e.g. ''[http://www.eclipse.org/ eclipse]''). | ||
Line 26: | Line 27: | ||
No texto que se segue: | No texto que se segue: | ||
− | * '''<nowiki>###</nowiki>''' designa o [https://fenix.tecnico.ulisboa.pt/disciplinas/ | + | * '''<nowiki>###</nowiki>''' designa o [https://fenix.tecnico.ulisboa.pt/disciplinas/PO/2022-2023/1-semestre/grupos número de grupo] com três dígitos, e.g., 012 |
* '''<nowiki>ISTID</nowiki>''' designa o identificador de aluno, no formato "ist123456" | * '''<nowiki>ISTID</nowiki>''' 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: | Assim, os valores possíveis para a variável de ambiente '''CVSROOT''' (ou pela opção '''-d''' do comando "cvs") são: | ||
− | * '''<nowiki>/afs/ist.utl.pt/groups/leic-po/ | + | * '''<nowiki>/afs/ist.utl.pt/groups/leic-po/po22/cvs/###</nowiki>''' (disponível em clientes AFS e utilizador com token válido para a célula ist.utl.pt) |
− | * '''<nowiki>:ext:ISTID@sigma.ist.utl.pt:/afs/ist.utl.pt/groups/leic-po/ | + | * '''<nowiki>:ext:ISTID@sigma.ist.utl.pt:/afs/ist.utl.pt/groups/leic-po/po22/cvs/###</nowiki>''' (disponível via SSH; verificar que CVS_RSH=ssh) |
{{Aviso|Alunos que ainda não visitaram o [https://selfservice.dsi.tecnico.ulisboa.pt/ 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.}} | {{Aviso|Alunos que ainda não visitaram o [https://selfservice.dsi.tecnico.ulisboa.pt/ 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.}} | ||
Line 40: | Line 41: | ||
O código fornecido é de uso obrigatório e deve ser completado. | O código fornecido é de uso obrigatório e deve ser completado. | ||
− | Cada projecto é constituído por dois módulos: '''project/ | + | Cada projecto é constituído por dois módulos: '''project/prr-core''' e '''project/prr-app'''. |
− | {{CollapsedCode|Conteúdo inicial do repositório CVS para o módulo | + | {{CollapsedCode|Conteúdo inicial do repositório CVS para o módulo prr-core|<source lang="text"> |
− | + | prr-core | |
├── Makefile | ├── Makefile | ||
+ | ├── README.md | ||
└── src | └── src | ||
− | └── | + | └── prr |
├── exceptions | ├── exceptions | ||
− | |||
│ ├── ImportFileException.java | │ ├── ImportFileException.java | ||
│ ├── MissingFileAssociationException.java | │ ├── MissingFileAssociationException.java | ||
− | │ └── | + | │ ├── UnavailableFileException.java |
− | ├── | + | │ └── UnrecognizedEntryException.java |
− | └── | + | ├── Network.java |
− | </source> | + | ├── NetworkManager.java |
+ | └── terminals | ||
+ | └── Terminal.java</source> | ||
}} | }} | ||
− | {{CollapsedCode|Conteúdo inicial do repositório CVS para o módulo | + | {{CollapsedCode|Conteúdo inicial do repositório CVS para o módulo prr-app|<source lang="text"> |
− | + | prr-app | |
− | |||
├── Makefile | ├── Makefile | ||
+ | ├── README.md | ||
└── src | └── src | ||
− | └── | + | └── prr |
└── app | └── app | ||
├── App.java | ├── App.java | ||
├── clients | ├── clients | ||
+ | │ ├── DoDisableClientNotifications.java | ||
+ | │ ├── DoEnableClientNotifications.java | ||
│ ├── DoRegisterClient.java | │ ├── DoRegisterClient.java | ||
│ ├── DoShowAllClients.java | │ ├── DoShowAllClients.java | ||
│ ├── DoShowClient.java | │ ├── DoShowClient.java | ||
− | │ ├── | + | │ ├── DoShowClientPaymentsAndDebts.java |
− | |||
│ ├── Label.java | │ ├── Label.java | ||
│ ├── Menu.java | │ ├── Menu.java | ||
− | │ └── | + | │ ├── Message.java |
+ | │ └── Prompt.java | ||
├── exceptions | ├── exceptions | ||
│ ├── DuplicateClientKeyException.java | │ ├── DuplicateClientKeyException.java | ||
− | │ ├── | + | │ ├── DuplicateTerminalKeyException.java |
− | |||
│ ├── FileOpenFailedException.java | │ ├── FileOpenFailedException.java | ||
− | │ ├── | + | │ ├── InvalidTerminalKeyException.java |
│ ├── Message.java | │ ├── Message.java | ||
− | |||
− | |||
│ ├── UnknownClientKeyException.java | │ ├── UnknownClientKeyException.java | ||
− | + | │ └── UnknownTerminalKeyException.java | |
− | |||
− | |||
− | |||
− | |||
− | │ └── | ||
├── lookups | ├── lookups | ||
− | │ ├── | + | │ ├── DoShowAllCommunications.java |
− | │ ├── | + | │ ├── DoShowClientsWithDebts.java |
+ | │ ├── DoShowClientsWithoutDebts.java | ||
+ | │ ├── DoShowCommunicationsFromClient.java | ||
+ | │ ├── DoShowCommunicationsToClient.java | ||
+ | │ ├── DoShowTerminalsWithPositiveBalance.java | ||
+ | │ ├── DoShowUnusedTerminals.java | ||
│ ├── Label.java | │ ├── Label.java | ||
│ ├── Menu.java | │ ├── Menu.java | ||
− | │ └── | + | │ ├── Message.java |
+ | │ └── Prompt.java | ||
├── main | ├── main | ||
− | │ ├── | + | │ ├── DoOpenFile.java |
− | │ ├── | + | │ ├── DoSaveFile.java |
− | │ ├── | + | │ ├── DoOpenMenuClient.java |
− | │ ├── | + | │ ├── DoOpenMenuTerminals.java |
│ ├── DoOpenMenuLookups.java | │ ├── DoOpenMenuLookups.java | ||
− | |||
− | |||
− | |||
− | |||
│ ├── DoShowGlobalBalance.java | │ ├── DoShowGlobalBalance.java | ||
│ ├── Label.java | │ ├── Label.java | ||
│ ├── Menu.java | │ ├── Menu.java | ||
− | │ └── | + | │ ├── Message.java |
− | ├── | + | │ └── Prompt.java |
− | │ ├── | + | ├── terminal |
− | │ ├── | + | │ ├── DoAddFriend.java |
− | │ ├── | + | │ ├── DoEndInteractiveCommunication.java |
− | │ ├── | + | │ ├── DoPerformPayment.java |
− | │ ├── | + | │ ├── DoRemoveFriend.java |
+ | │ ├── DoSendTextCommunication.java | ||
+ | │ ├── DoShowOngoingCommunication.java | ||
+ | │ ├── DoShowTerminalBalance.java | ||
+ | │ ├── DoSilenceTerminal.java | ||
+ | │ ├── DoStartInteractiveCommunication.java | ||
+ | │ ├── DoTurnOffTerminal.java | ||
+ | │ ├── DoTurnOnTerminal.java | ||
│ ├── Label.java | │ ├── Label.java | ||
│ ├── Menu.java | │ ├── Menu.java | ||
− | │ | + | │ ├── Message.java |
− | + | │ ├── Prompt.java | |
− | │ ├── | + | │ └── TerminalCommand.java |
− | + | └── terminals | |
− | + | ├── DoOpenMenuTerminalConsole.java | |
− | + | ├── DoRegisterTerminal.java | |
− | + | ├── DoShowAllTerminals.java | |
− | |||
− | │ └── | ||
− | └── | ||
− | |||
− | ├── | ||
− | ├── | ||
− | ├── | ||
├── Label.java | ├── Label.java | ||
├── Menu.java | ├── Menu.java | ||
− | + | ├── Message.java | |
− | </source> | + | └── Prompt.java</source> |
}} | }} | ||
Line 139: | Line 138: | ||
O repositório já tem a seguinte estrutura: | O repositório já tem a seguinte estrutura: | ||
− | * ''' | + | * '''prr-core''' (directoria principal da biblioteca com a funcionalidade sem interface com o utilizador) |
− | * ''' | + | * '''prr-core/Makefile''' (makefile secundária, semelhante à disponibilizada na aplicação bancária) |
− | * ''' | + | * '''prr-core/src''' (directoria onde reside o código do "core", à semelhança do que acontece na aplicação bancária) |
− | * ''' | + | * '''prr-app''' (directoria correspondente à aplicação; contém a interface com o utilizador) |
− | * ''' | + | * '''prr-app/Makefile''' (makefile secundária, semelhante à disponibilizada na aplicação bancária) |
− | * ''' | + | * '''prr-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 (''' | + | Esta estrutura já contém algumas classes parcialmente implementadas ('''prr-core''') (que devem ser adaptadas) e outras parcial ou completamente implementadas ('''prr-app''') (algumas das quais não podem ser alteradas). |
{{Aviso|A estrutura do repositório não pode ser alterada.}} | {{Aviso|A estrutura do repositório não pode ser alterada.}} | ||
− | {{Aviso|O código fornecido em ''' | + | {{Aviso|O código fornecido em '''prr-core''' e '''prr-app''' tem de ser completado.}} |
− | {{Aviso|Os nomes das classes fornecidas em ''' | + | {{Aviso|Os nomes das classes fornecidas em '''prr-core''' e '''prr-app''' não podem ser alterados.}} |
− | {{Aviso|As seguintes classes não podem ser alteradas: '''App.java''', todos | + | {{Aviso|As seguintes classes e interfaces não podem ser alteradas: '''App.java''', todos as '''Label.java''', todos as '''Menu.java''', todos as '''Message.java''', todos os '''Prompt.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 == | ||
Line 162: | Line 161: | ||
* '''cvs init''' (não é necessário: o repositório já existe) | * '''cvs init''' (não é necessário: o repositório já existe) | ||
* '''cvs import''' (não é necessário: o projecto já existe) | * '''cvs import''' (não é necessário: o projecto já existe) | ||
− | * '''cd /afs/ist.utl.pt/groups/leic-po/ | + | * '''cd /afs/ist.utl.pt/groups/leic-po/po22/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") |
=== <font color="forestgreen">FAZER</font> === | === <font color="forestgreen">FAZER</font> === | ||
Line 179: | Line 178: | ||
* 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. | * 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- | + | * Não adicionar a biblioteca '''po-uilib''' 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. | * 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. | * 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. | ||
Line 185: | Line 184: | ||
Agradece-se a comunicação de eventuais problemas. | Agradece-se a comunicação de eventuais problemas. | ||
+ | |||
+ | == "Receita" para a Entrega de Diagramas UML == | ||
+ | |||
+ | Tal como indicado no [[Programação com Objectos/Projecto de Programação com Objectos/Avaliação do Projecto (Época Normal)|método de avaliação]], os 3 diagramas a entregar -- '''UML-po-uilib.pdf''', '''UML-prr-app.pdf''', '''UML-prr-core.pdf''' -- devem ser colocados na directoria '''uml''' do projecto no repositório CVS. | ||
+ | |||
+ | 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, '''ist123456''' é o ISTid da pessoa que realiza as operações e '''199''' é o grupo dessa pessoa (estes dois valores variam de pessoa para pessoa e de grupo para grupo). | ||
+ | |||
+ | * Obter o projecto do repositório (o projecto fica na directoria local '''project'''). Assume-se que os comandos subsequentes são dados dentro da directoria '''project''' (notar '''cd project''' abaixo): | ||
+ | cvs -d :ext:ist123456@sigma.tecnico.ulisboa.pt:/afs/ist.utl.pt/groups/leic-po/po22/cvs/199 co project | ||
+ | cd project | ||
+ | * Colocar os ficheiros com os diagramas na directoria '''project/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-prr-app.pdf ~/UML-prr-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): | ||
+ | cvs add uml/UML-po-uilib.pdf uml/UML-prr-app.pdf uml/UML-prr-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): | ||
+ | cvs update | ||
+ | * Finalmente, enviam-se os ficheiros novos para o repositório CVS (a mensagem descreve o commit e evita a abertura de um editor): | ||
+ | cvs commit -m "Adicionados diagramas UML." | ||
[[category:Projecto de PO]] | [[category:Projecto de PO]] | ||
[[category:PO]] | [[category:PO]] | ||
[[category:Ensino]] | [[category:Ensino]] |
AVISOS - Avaliação em Época Normal |
---|
Esclarecimento de dúvidas:
|
Requisitos para desenvolvimento, material de apoio e actualizações do enunciado (ver informação completa em Projecto de Programação com Objectos):
|
Processo de avaliação (ver informação completa em Avaliação do Projecto):
|
Material de Uso Obrigatório |
---|
As bibliotecas po-uilib e o conteúdo inicial do CVS são de uso obrigatório: |
|
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.
Os repositórios estão disponíveis no AFS em:
O conteúdo do repositório pode ser manipulado com o comando cvs ou com qualquer outro cliente compatível (e.g. eclipse).
No texto que se segue:
Assim, os valores possíveis para a variável de ambiente CVSROOT (ou pela opção -d do comando "cvs") são:
O código fornecido é de uso obrigatório e deve ser completado.
Cada projecto é constituído por dois módulos: project/prr-core e project/prr-app.
Conteúdo inicial do repositório CVS para o módulo prr-core |
---|
prr-core
├── Makefile
├── README.md
└── src
└── prr
├── exceptions
│ ├── ImportFileException.java
│ ├── MissingFileAssociationException.java
│ ├── UnavailableFileException.java
│ └── UnrecognizedEntryException.java
├── Network.java
├── NetworkManager.java
└── terminals
└── Terminal.java
|
Conteúdo inicial do repositório CVS para o módulo prr-app |
---|
prr-app
├── Makefile
├── README.md
└── src
└── prr
└── app
├── App.java
├── clients
│ ├── DoDisableClientNotifications.java
│ ├── DoEnableClientNotifications.java
│ ├── DoRegisterClient.java
│ ├── DoShowAllClients.java
│ ├── DoShowClient.java
│ ├── DoShowClientPaymentsAndDebts.java
│ ├── Label.java
│ ├── Menu.java
│ ├── Message.java
│ └── Prompt.java
├── exceptions
│ ├── DuplicateClientKeyException.java
│ ├── DuplicateTerminalKeyException.java
│ ├── FileOpenFailedException.java
│ ├── InvalidTerminalKeyException.java
│ ├── Message.java
│ ├── UnknownClientKeyException.java
│ └── UnknownTerminalKeyException.java
├── lookups
│ ├── DoShowAllCommunications.java
│ ├── DoShowClientsWithDebts.java
│ ├── DoShowClientsWithoutDebts.java
│ ├── DoShowCommunicationsFromClient.java
│ ├── DoShowCommunicationsToClient.java
│ ├── DoShowTerminalsWithPositiveBalance.java
│ ├── DoShowUnusedTerminals.java
│ ├── Label.java
│ ├── Menu.java
│ ├── Message.java
│ └── Prompt.java
├── main
│ ├── DoOpenFile.java
│ ├── DoSaveFile.java
│ ├── DoOpenMenuClient.java
│ ├── DoOpenMenuTerminals.java
│ ├── DoOpenMenuLookups.java
│ ├── DoShowGlobalBalance.java
│ ├── Label.java
│ ├── Menu.java
│ ├── Message.java
│ └── Prompt.java
├── terminal
│ ├── DoAddFriend.java
│ ├── DoEndInteractiveCommunication.java
│ ├── DoPerformPayment.java
│ ├── DoRemoveFriend.java
│ ├── DoSendTextCommunication.java
│ ├── DoShowOngoingCommunication.java
│ ├── DoShowTerminalBalance.java
│ ├── DoSilenceTerminal.java
│ ├── DoStartInteractiveCommunication.java
│ ├── DoTurnOffTerminal.java
│ ├── DoTurnOnTerminal.java
│ ├── Label.java
│ ├── Menu.java
│ ├── Message.java
│ ├── Prompt.java
│ └── TerminalCommand.java
└── terminals
├── DoOpenMenuTerminalConsole.java
├── DoRegisterTerminal.java
├── DoShowAllTerminals.java
├── Label.java
├── Menu.java
├── Message.java
└── Prompt.java
|
Estes módulos podem ser obtidos em conjunto fazendo checkout de project (ver abaixo).
O repositório já tem a seguinte estrutura:
Esta estrutura já contém algumas classes parcialmente implementadas (prr-core) (que devem ser adaptadas) e outras parcial ou completamente implementadas (prr-app) (algumas das quais não podem ser alteradas).
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:
Agradece-se a comunicação de eventuais problemas.
Tal como indicado no método de avaliação, os 3 diagramas a entregar -- UML-po-uilib.pdf, UML-prr-app.pdf, UML-prr-core.pdf -- devem ser colocados na directoria uml do projecto no repositório CVS.
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, ist123456 é o ISTid da pessoa que realiza as operações e 199 é o grupo dessa pessoa (estes dois valores variam de pessoa para pessoa e de grupo para grupo).
cvs -d :ext:ist123456@sigma.tecnico.ulisboa.pt:/afs/ist.utl.pt/groups/leic-po/po22/cvs/199 co project cd project
cp ~/UML-po-uilib.pdf ~/UML-prr-app.pdf ~/UML-prr-core.pdf uml
cvs add uml/UML-po-uilib.pdf uml/UML-prr-app.pdf uml/UML-prr-core.pdf
cvs update
cvs commit -m "Adicionados diagramas UML."