Difference between revisions of "Programação com Objectos/Projecto de Programação com Objectos"

From Wiki**3

< Programação com Objectos
(Projecto: Aplicação Bancária (exemplo de projecto))
(Projecto: Enunciado 2022-2023 (época normal))
 
(27 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{PRJPOAvisosEN20202021}}
+
{{PRJPOAvisosEN20232024}}
<!--{{PRJPOAvisosEE20192020}}-->
+
<!--{{PRJPOAvisosEE20232024}}-->
{{PRJPOMandatory20202021}}
+
{{PRJPOMandatory20232024}}
 
{{TOCright}}
 
{{TOCright}}
  
Line 17: Line 17:
 
-->
 
-->
  
== Projecto: Enunciado 2020-2021 (época normal) ==
+
== Projecto: Enunciado 2023-2024 (época normal) ==
  
* [[Programação com Objectos/Projecto de Programação com Objectos/Enunciado do Projecto de 2020-2021|Enunciado do Projecto 2020-2021]]
+
* [[Programação com Objectos/Projecto de Programação com Objectos/Enunciado do Projecto de 2023-2024|Enunciado do Projecto 2023-2024]]
 +
<!--* [[Programação com Objectos/Projecto de Programação com Objectos/Enunciado do Projecto de 2022-2023|Enunciado do Projecto 2022-2023]]-->
 +
<!--* [[Programação com Objectos/Projecto de Programação com Objectos/Enunciado do Projecto de 2021-2022|Enunciado do Projecto 2021-2022]]-->
 +
<!--* [[Programação com Objectos/Projecto de Programação com Objectos/Enunciado do Projecto de 2020-2021|Enunciado do Projecto 2020-2021]]-->
 
<!--* [[Programação com Objectos/Projecto de Programação com Objectos/Enunciado do Projecto de 2019-2020|Enunciado do Projecto 2019-2020]]-->
 
<!--* [[Programação com Objectos/Projecto de Programação com Objectos/Enunciado do Projecto de 2019-2020|Enunciado do Projecto 2019-2020]]-->
 
<!--* [[Programação com Objectos/Projecto de Programação com Objectos/Enunciado do Projecto de 2018-2019|Enunciado do Projecto 2018-2019]]-->
 
<!--* [[Programação com Objectos/Projecto de Programação com Objectos/Enunciado do Projecto de 2018-2019|Enunciado do Projecto 2018-2019]]-->
Line 25: Line 28:
 
== Material de Apoio e Testes ==
 
== Material de Apoio e Testes ==
  
* [[Programação com Objectos/Projecto de Programação com Objectos/Repositório CVS|Repositório CVS]] - informações de localização e acesso  
+
* [[Programação com Objectos/Projecto de Programação com Objectos/Repositório GIT|Repositório GIT]] - informações de localização e acesso  
 
* [[Programação com Objectos/Projecto de Programação com Objectos/Material de Apoio ao Desenvolvimento|Material de Apoio ao Desenvolvimento]]
 
* [[Programação com Objectos/Projecto de Programação com Objectos/Material de Apoio ao Desenvolvimento|Material de Apoio ao Desenvolvimento]]
* [[Programação com Objectos/Projecto de Programação com Objectos/Testes Automáticos 2020-2021|Testes Automáticos 2020-2021]]  
+
* Testes automáticos: https://gitlab.rnl.tecnico.ulisboa.pt/leic-a-po23/eval/po23
 +
<!--* [[Programação com Objectos/Projecto de Programação com Objectos/Testes Automáticos 2021-2022|Testes Automáticos 2021-2022]] -->
 +
<!--* [[Programação com Objectos/Projecto de Programação com Objectos/Testes Automáticos 2020-2021|Testes Automáticos 2020-2021]] -->
 
<!--* [[Programação com Objectos/Projecto de Programação com Objectos/Testes Automáticos 2019-2020|Testes Automáticos 2019-2020]] -->
 
<!--* [[Programação com Objectos/Projecto de Programação com Objectos/Testes Automáticos 2019-2020|Testes Automáticos 2019-2020]] -->
 
<!--* [[Programação com Objectos/Projecto de Programação com Objectos/Testes Automáticos 2018-2019|Testes Automáticos 2018-2019]] -->
 
<!--* [[Programação com Objectos/Projecto de Programação com Objectos/Testes Automáticos 2018-2019|Testes Automáticos 2018-2019]] -->
 
* [[Programação com Objectos/Projecto de Programação com Objectos/Máquina Virtual|Máquina Virtual]]
 
* [[Programação com Objectos/Projecto de Programação com Objectos/Máquina Virtual|Máquina Virtual]]
  
== Projecto: Aplicação Bancária (exemplo de projecto) ==
+
== Projecto Exemplo: Aplicação Bancária ==
  
 
Para auxiliar o desenvolvimento do projecto, é fornecida uma [[Comando (padrão de desenho)/Banco, Conta, Titular (aplicação bancária)|aplicação bancária]] (banco, contas, titulares, etc.), que tem a mesma estrutura. Esta estrutura tem duas partes principais: "core" (o núcleo lógico da aplicação) e "app" (a interface textual, baseada no padrão de desenho [[Comando (padrão_de_desenho)|Command]]).
 
Para auxiliar o desenvolvimento do projecto, é fornecida uma [[Comando (padrão de desenho)/Banco, Conta, Titular (aplicação bancária)|aplicação bancária]] (banco, contas, titulares, etc.), que tem a mesma estrutura. Esta estrutura tem duas partes principais: "core" (o núcleo lógico da aplicação) e "app" (a interface textual, baseada no padrão de desenho [[Comando (padrão_de_desenho)|Command]]).
  
You may want to read these quick and dirty guides:
+
== Projecto Exemplo: Rede Social ==
* [[CVS Crash Course]]
 
* <s>[[Quick-and-Dirty Guide to Transforming the Bank Application into your Very Own Project]]</s> (this guide is outdated and is provided only as a general guideline and example of how to start development from existing code: use at your own risk!)
 
  
<!--== koops32: Máquina Virtual para Desenvolvimento ==
+
Este projecto descreve uma rede social com funcionalidade semelhante à das redes sociais actuais: relações entre agentes, publicação de vários tipos de media, envio de mensagens, etc.
  
Esta máquina contém o ambiente para o desenvolvimento do projecto, incluindo o material de apoio, e corresponde também ao ambiente de avaliação oficial.
+
Note-se que o enunciado corresponde ao ano lectivo de 2011/2012 e refere aspectos de implementação não disponíveis no ano lectivo 2022/2023. A implementação foi actualizada para ser compatível com o material de apoio de 2022/2023.
* https://susestudio.com/a/sD7EYX/koops32 (x86) (username: '''oops''' // password: '''linux''')
+
* Enunciado: [[media:social-network-201110241420.pdf]]
-->
+
* Implementação (core): [[media:sonet-core-202111021419.tar.bz2]]
 +
* Implementação (app: browser): [[media:sonet-app-browser-202111021419.tar.bz2]]
 +
* Implementação (app: manager): [[media:sonet-app-manager-202111021419.tar.bz2]]
 +
'''O uso deste código deve ser feito de forma crítica, já que algumas das decisões nele tomadas podem ser alvo de descontos na avaliação do projecto.'''
  
 
== Linguagens de Programação ==
 
== Linguagens de Programação ==
  
As seguintes linguagens são utilizadas nestas páginas, embora tenham importância diferente:
+
As seguintes linguagens são utilizadas nestas páginas:
  
* [http://www.java.com/ Java] (1.8 '''versão mínima para o projecto''') -- [http://docs.oracle.com/javase/8/docs/api/ Java Platform, Standard Edition 8 API Specification]
+
* [http://www.java.com/ Java] (14 '''versão mínima para suportar o material de apoio do projecto''') -- [https://docs.oracle.com/en/java/javase/ Java Platform, Standard Edition Documentation] (os testes automáticos usam OpenJDK 17)
* [http://cplusplus.com/ C++] (C++14 ou superior) -- [http://cplusplus.com/reference/ Manual de Referência para C++ (biblioteca)]; STL: [http://cplusplus.com/reference/stl/ contentores], [http://cplusplus.com/reference/algorithm/ algoritmos] <!--*[http://cppreference.com/ Manual de Referência para C/C++]-->
+
* [http://cplusplus.com/ C++] (C++17 ou superior) -- [http://cplusplus.com/reference/ Manual de Referência para C++ (biblioteca)]; STL: [http://cplusplus.com/reference/stl/ contentores], [http://cplusplus.com/reference/algorithm/ algoritmos] <!--*[http://cppreference.com/ Manual de Referência para C/C++]-->
 
<!-- * [http://php.net/ PHP]: [http://www.php.net/manual/en/ manual] and [http://www.php.net/manual/en/funcref.php function reference] -->
 
<!-- * [http://php.net/ PHP]: [http://www.php.net/manual/en/ manual] and [http://www.php.net/manual/en/funcref.php function reference] -->
  
[[category:Ensino]]
+
[[category:Ensino]]  
 
[[category:PO]]
 
[[category:PO]]
 
[[category:Projecto de PO]]
 
[[category:Projecto de PO]]
 
[[en:Object-Oriented Programming]]
 
[[en:Object-Oriented Programming]]

Latest revision as of 13:14, 23 September 2023

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: 2023/09/29 12:00 (inicial); 2023/10/13 12:00 (intercalar); 2023/10/27 12:00 (final); 2023/10/27 (early bird) 2023/10/30 (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 '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-uilib e o conteúdo inicial do repositório GIT são de uso obrigatório:
  • po-uilib (classes de base) po-uilib-202308010000.tar.bz2 (não pode ser alterada) - javadoc
  • xxl-core (classes do "core") (via GIT) (deve ser completada -- os nomes das classes fornecidas não podem ser alterados)
  • xxl-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.

Avaliação do Projecto

As pautas são acompanhadas pelos critérios de avaliação.

Projecto: Enunciado 2023-2024 (época normal)

Material de Apoio e Testes

Projecto Exemplo: Aplicação Bancária

Para auxiliar o desenvolvimento do projecto, é fornecida uma aplicação bancária (banco, contas, titulares, etc.), que tem a mesma estrutura. Esta estrutura tem duas partes principais: "core" (o núcleo lógico da aplicação) e "app" (a interface textual, baseada no padrão de desenho Command).

Projecto Exemplo: Rede Social

Este projecto descreve uma rede social com funcionalidade semelhante à das redes sociais actuais: relações entre agentes, publicação de vários tipos de media, envio de mensagens, etc.

Note-se que o enunciado corresponde ao ano lectivo de 2011/2012 e refere aspectos de implementação não disponíveis no ano lectivo 2022/2023. A implementação foi actualizada para ser compatível com o material de apoio de 2022/2023.

O uso deste código deve ser feito de forma crítica, já que algumas das decisões nele tomadas podem ser alvo de descontos na avaliação do projecto.

Linguagens de Programação

As seguintes linguagens são utilizadas nestas páginas: