Programação Centrada em Objetos
Código
01063064Créditos ECTS
6Objetivos
- A. Aplicar os conceitos e mecanismos fundamentais da programação orientada a objetos na implementação de soluções de software.
- B. Utilizar bibliotecas, APIs e mecanismos da linguagem Java para desenvolver aplicações modulares, reutilizáveis e manuteníveis.
- C. Integrar construções do paradigma funcional em soluções orientadas a objetos, recorrendo às funcionalidades disponibilizadas pela linguagem Java.
- D. Conceber, implementar, testar e documentar aplicações orientadas a objetos, adotando boas práticas de programação, organização e reutilização do código.
Programa
- Programação orientada a objetos em Java
1.1 Classes, objetos, atributos, métodos e construtores
1.2 Encapsulamento, abstração e composição - Herança e polimorfismo
2.1 Herança, classes abstratas e interfaces
2.2 Polimorfismo, redefinição de métodos e ligação dinâmica - Organização modular do código
3.1 Pacotes, visibilidade e acesso
3.2 Dependências, modularização e reutilização - Bibliotecas e APIs da plataforma Java
4.1 Coleções e iteradores
4.2 Tipos genéricos e enumerações - Programação funcional em Java
5.1 Interfaces funcionais, expressões lambda e referências a métodos
5.2 Operações intermédias e terminais em Streams - Tratamento de exceções
6.1 Tipos e hierarquia de exceções
6.2 Definição, lançamento, captura e propagação - Entradas e saídas
7.1 Fluxos de texto e binários
7.2 Ficheiros e gestão de recursos - Testes unitários
8.1 Casos de teste, asserções e fixtures
8.2 Organização e execução com JUnit
Métodos de Ensino
Ao longo da unidade curricular são utilizadas metodologias de ensino-aprendizagem diversificadas, articulando a apresentação dos fundamentos com a resolução de problemas e a implementação progressiva de soluções orientadas a objetos.
Nas aulas teórico-práticas são apresentados e discutidos os conceitos, recorrendo à análise de exemplos, demonstrações em Java, resolução orientada de exercícios e discussão de alternativas de implementação. Estas atividades promovem a participação ativa, o raciocínio crítico e o feedback formativo.
Nas aulas práticas laboratoriais, os estudantes implementam, testam e documentam soluções orientadas a objetos em Java. As atividades seguem uma abordagem de aprendizagem baseada em problemas e têm complexidade crescente, promovendo a programação colaborativa e a adoção de boas práticas de organização e reutilização do código. Diagramas de classes UML são utilizados como apoio à compreensão, implementação e documentação das aplicações, sem substituir a modelação aprofundada desenvolvida em Análise e Desenho de Software.
As horas de contacto assíncronas decorrem através do Moodle e incluem atividades orientadas de preparação e consolidação, nomeadamente recursos multimédia, leitura orientada, quizzes com feedback automático, resolução de problemas, desafios de programação e revisão por pares. Estas atividades promovem a prática continuada, a autorregulação e a consolidação progressiva das aprendizagens.
Sempre que adequado, as atividades articulam-se com a unidade curricular de Análise e Desenho de Software, permitindo implementar em Java soluções previamente modeladas em UML, mantendo a autonomia pedagógica e os objetivos de aprendizagem de cada unidade curricular.
No último terço do semestre, os estudantes desenvolvem, em pequenos grupos, um projeto de aplicação orientada a objetos em Java. O projeto é realizado por fases e integra implementação, utilização de bibliotecas e APIs, construções funcionais, tratamento de exceções, entradas e saídas, testes unitários e documentação técnica. O acompanhamento inclui submissões faseadas, discussão e feedback do docente. Quando adequado, o projeto pode incidir sobre um problema comum ao projeto de Análise e Desenho de Software, mantendo-se independente a avaliação de cada unidade curricular.
O Moodle suporta a disponibilização de recursos, comunicação, submissões, acompanhamento do progresso e feedback formativo.
Bibliografia
Essencial:
- Martins, F. (2017). Java 8: POO + construções funcionais. FCA. ISBN 978-972-722-838-6.
- Lewis, J., & Loftus, W. (2023). Java software solutions: Foundations of program design (10th ed.). Pearson. ISBN: 978-0-13-792084-6.
- Loy, M., Niemeyer, P., & Leuck, D. (2023). Learning Java (6th ed.). O’Reilly Media. ISBN: 978-1-098-14552-1.
- Sedgewick, R., & Wayne, K. (2022). Programming in Java: An interdisciplinary approach. Princeton University. https://introcs.cs.princeton.edu/java/
Complementar:
- Martins, F. (2014). Projetos de POO em Java. FCA. ISBN 978-972-722-792-1.
- Schildt, H., & Coward, D. (2024). Java: The complete reference (13th ed.). McGraw Hill. ISBN: 978-1-265-05843-2.Essencial
- Morelli, R., Walde, R., Hoffman, B., & Cooper, D. G. (2024). Java, Java, Java: Object-oriented problem solving (2024E) [Livro interativo]. Runestone Academy. Sem ISBN. - https://runestone.academy/ns/books/published/javajavajava/root-1-2-3.html?mode=browsing
- Miller, B. N. (2013). Java for Python programmers [Livro interativo]. Runestone Academy. Sem ISBN. https://runestone.academy/ns/books/published/java4python/index.html?mode=browsing
