Programação Orientada pelos Objetos
Objetivos
Saber:
- Conceitos fundamentais de Programação Orientada pelos Objetos (POO), como o de classe, interface, polimorfia e herança.
- Técnicas e algoritmos para o processamento de listas, cadeias de carateres, vetores, dicionários e conjuntos, etc.
- Programação genérica.
- Bibliotecas de classes e sua utilização.
- Conceitos básicos de Engenharia de Software na perspetiva de um programador, como a qualidade, reutilização, custos e manutenção, ou eficiência de implementações.
Saber fazer:
- Projetar e Desenvolver aplicações com POO.
- Resolver problemas com POO.
- Usar abordagens de verificação e validação.
- Realizar de forma progressivamente mais autónoma, individualmente e em grupo, projetos de desenvolvimento de software.
Competências Complementares:
- Gosto pela programação e pela resolução de problemas.
Caracterização geral
Código
11153
Créditos
9.0
Professor responsável
Maria Armanda Simenta Rodrigues Grueau, Miguel Carlos Pacheco Afonso Goulão
Horas
Semanais - 5
Totais - 70
Idioma de ensino
Português
Pré-requisitos
Os alunos devem ter adquirido os conhecimentos de Introdução à Programação.
Bibliografia
1. Cay Horstmann, Core Java, Volume I: Fundamentals (Oracle Press for Java) 13th Edition, 2024.
2. F. Mário Martins, Java 8 - POO + Construções Funcionais, FCA, 2017.
3. Slides de Programação Orientada pelos Objectos (disponibilizados gradualmente na página moodle)
4. David J. Eck, Introduction to Programming Using Java, version 9, 2022.
Método de ensino
As aulas teóricas consistem na exposição de matéria, ilustrada com exemplos de aplicação, e suportada por diapositivos e pela utilização do ambiente de desenvolvimento no computador do docente.
Nas aulas de laboratório, os alunos resolvem exercícios que constituem exemplos concretos de aplicação dos conceitos dados nas anteriores aulas teóricas.
Os alunos podem esclarecer dúvidas durante as aulas ou nos horários de atendimento.
Método de avaliação
Componentes da avaliação:
Existem três componentes na avaliação: a componente teórica (NT), a componente prática (NP) e a componente de participação nos laboratórios (NL). A nota final (NF) é calculada pela fórmula:
NF = 0.65 * NT + 0.3 * NP + 0.05 * NL
NF é arredondado às unidades. Todas as notas intermédias são arredondadas com uma casa decimal.
Componente teórica (NT):
Esta componente de avaliação é constituída por 2 testes ou pelo exame. Os testes e o exame são presenciais, sem consulta, escritos e individuais. Na avaliação por testes, a nota desta componente é calculada do seguinte modo:
NT = 0.3 * NT1 + 0.7 * NT2
em que:
- NT1 é a nota do teste 1;
- NT2 é a nota do teste 2.
Caso seja realizado o exame, a nota NT é a nota obtida em exame.
Componente prática (NP):
Esta componente de avaliação é constituída por 2 projetos práticos a realizar em grupos de 2 alunos durante o semestre. A avaliação de cada um dos projetos inclui uma discussão individual.
As discussões são obrigatórias, presenciais e individuais. A discussão de um projeto consiste em fazer alterações ao código do projeto entregue para que o novo programa resolva uma variante das funcionalidades do programa original, definida no enunciado da discussão. As notas das discussões e os respetivos critérios são os seguintes:
- 20: a alteração está globalmente certa;
- 16: a alteração está confusa ou muito incompleta, mas o caminho poderia ser aquele;
- 12: a alteração não está certa, havendo "algumas coisas bem e outras muito mal";
- 4: não foi feita qualquer alteração ou as alterações feitas são ínfimas (e.g. alterar apenas a leitura) ou as alterações feitas não fazem sentido.
Regra geral, a nota de um aluno num projeto é o mínimo entre a nota do projeto que entregou (realizado em grupo) e a sua nota na discussão desse projeto (que é zero, se o aluno faltou). Consequentemente, as notas dos dois elementos do grupo podem ser diferentes e variam entre 0 e a nota do projeto.
A nota da componente prática é calculada do seguinte modo:
NP = (1/3) * NP1 + (2/3) * NP2
em que:
- NP1 é a nota do aluno no projeto prático 1;
- NP2 é a nota do aluno no projeto prático 2.
Componente de participação nos laboratórios (NL):
Esta componente é atribuída pela realização de mini-projectos que vão sendo propostos ao longo do semestre.
Frequência:
Obtém frequência à disciplina o aluno que tenha uma nota superior ou igual a 9.5 na componente prática (NP >= 9.5). O aluno sem frequência é excluído do exame de recurso nesse ano lectivo.
Nota final:
O aluno com frequência obtém aprovação se ambas as notas NF e NT forem superiores ou iguais a 9.5.
Frequência do ano lectivo anterior:
Os alunos que tenham obtido frequência no ano lectivo anterior mantêm-na no presente ano. Caso entreguem algum projeto neste ano lectivo, perdem a frequência automática. Nesse caso, terão que fazer os dois projetos práticos da edição de POO deste ano para poderem obter a frequência de novo.
No cálculo da nota final são usadas as notas dos projetos práticos do ano lectivo anterior.
Fraude e Plágio:
As questões de fraude e plágio serão tratadas de acordo com o Regulamento de Avaliação de Conhecimentos da FCT NOVA.
Os alunos podem conversar com os colegas sobre os projetos e discutir soluções, mas não podem partilhar código em nenhuma circunstância, oralmente ou por escrito. A escrita de código tem de ser uma tarefa interna a cada grupo. Por exemplo, não é permitido mostrar código no ecrã, ditar código, enviar ficheiros com código nem colocá-los em sítios acessíveis a terceiros. Considera-se que:
- um grupo que dá ou que recebe código comete fraude;
- um grupo em que só um dos membros realiza o projeto comete fraude;
- os alunos que realizam o projeto em grupos maiores, partilhando código, cometem fraude.
- A utilização de ferramentas de IA (como, por exemplo, ChatGPT ou Copilot) tem de ser explicitamente referida no código. Considera-se que um grupo que use estas ferramentas durante a realização de um projeto e omita que as usou comete plágio.
Observações:
As classificações relativas a testes e projetos práticos são arredondadas às décimas.
Não é permitida a utilização de dispositivos electrónicos, durante as provas de avaliação. As provas são sem consulta.
Durante uma prova de avaliação, um estudante não pode ter junto a si dispositivos electrónicos com capacidade de acesso à internet ou ligação bluetooth (e.g. smartphones, smartwatches, smartglasses, tablets, laptops, etc), ainda que desligados. A violação desta regra implica a reprovação liminar na unidade curricular por exclusão e será comunicada à Comissão Científica do respectivo Curso.
É responsabilidade de cada aluno garantir que não tem junto a si um destes dispositivos, não os trazendo para a sala da prova, ou deixando-os, desligados, junto ao quadro.
Conteúdo
1. Especificação de interfaces e respetiva documentação
2. Conceção de programas estruturados em classes
3. Polimorfia de interfaces
4. Herança de classes
5. Polimorfia de herança
6. Asserções
7. Testes
8. Tratamento de excepções
9. Programação genérica
10. Utilização de tipos genéricos e colecções