Programação Centrada em Objetos

Código

01063064

Créditos ECTS

6

Objetivos

  • 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

  1. Programação orientada a objetos em Java
    1.1 Classes, objetos, atributos, métodos e construtores
    1.2 Encapsulamento, abstração e composição
  2. 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
  3. Organização modular do código
    3.1 Pacotes, visibilidade e acesso
    3.2 Dependências, modularização e reutilização
  4. Bibliotecas e APIs da plataforma Java
    4.1 Coleções e iteradores
    4.2 Tipos genéricos e enumerações
  5. 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
  6. Tratamento de exceções
    6.1 Tipos e hierarquia de exceções
    6.2 Definição, lançamento, captura e propagação
  7. Entradas e saídas
    7.1 Fluxos de texto e binários
    7.2 Ficheiros e gestão de recursos
  8. 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

Método de Avaliação