Tópicos Avançados de Programação Orientada a Objetos
-
Conhecimentos de Base Recomendados
-
-
Objetivos
No final desta unidade curricular o estudante deverá estar apto para:
O1. Explicar a implementação de TADs em JAVA e a diferença entre estruturas de dados lineares, hierárquicas e em rede.
O2. Implementar e utilizar o TAD Tree em JAVA.
O3. Implementar e utilizar o TAD Graph em JAVA.
O4. Explicar o propósito e a aplicação de Padrões de Software e sua interligação com os princípios SOLID.
O5. Implementar Padrões de Software.
O6. Identificar "Code Smells" em código.
O7. Aplicar técnicas de Refactoring.
O8. Projetar e desenvolver aplicações de software robustas e escaláveis, integrando TADs e Padrões de Software.
O9. Avaliar e validar projetos de software, utilizando as boas práticas de desenho OO. -
Métodos de Ensino
Esta unidade curricular adota duas metodologias principais: Aprendizagem Baseada em Problemas (PBL) e Trabalho Colaborativo. Cada sessão de 2 horas trabalha um conteúdo programático através da apresentação de um problema específico de programação, que os estudantes resolverão ao longo da aula com recurso à utilização de computador. Simultaneamente, ao longo do semestre, os estudantes desenvolverão um projeto de software em grupo, utilizando ferramentas que suportam o desenvolvimento colaborativo de software.
A combinação de PBL e Trabalho Colaborativo proporciona uma experiência de aprendizagem rica e dinâmica, preparando os estudantes para enfrentar os desafios do desenvolvimento de software no mundo real. Essa abordagem metodológica facilita a aquisição de conhecimentos teóricos e promove a aplicação prática, além de desenvolver competências essenciais, como colaboração, comunicação e resolução de problemas. -
Estágio(s)
Não
-
Programa
CP1. Tipos Abstractos de Dados (TADs)
1.1. Introdução à implementação de TADs numa abordagem de Programação OO.
1.2. TADs Graph
1.3. TAD Tree
CP2. Princípios e Padrões de Design de Software
2.1. Princípios SOLID da Programação OO
2.2. Padrões de Desenho
2.3. Padrões de Arquitetura
CP3. Refactoring
3.1. "Code Smells"
3.2. Técnicas de "Refactoring" -
Demonstração de conteúdos
Os conteúdos prog. começam com a implementação de TAD em JAVA (CP1.1), permitindo que os estudantes expliquem a implementação de TAD e as diferenças entre estruturas de dados (O1). Em seguida, exploram e implementam TAD Tree (CP1.3) e TAD Graph (CP1.2) em JAVA (O2, O3).
Na 2a parte, abordam-se os princípios e padrões de design de software, começando com os Princípios SOLID (CP2.1) e seguido pelos Padrões de Desenho (CP2.2) e Padrões de Arquitetura (CP2.3). Isso permite que os estudantes compreendam e apliquem padrões de software (O4, O5).
O tópico Refactoring inicia com a identificação de "Code Smells" no código (CP3.1), permitindo que os alunos identifiquem problemas de design (O6). Em seguida, estudam-se as técnicas de refactoring (CP3.2) para melhorar a qualidade do código (O7).
A aplicação prática dos conteúdos apreendidos capacita os estudantes a projetar, desenvolver e validar aplicações de software robustas e escaláveis, utilizando boas práticas de design OO (O8, O9). -
Demonstração da metodologia
A metodologia PBL incentiva os estudantes a resolver problemas reais e complexos, promovendo uma compreensão profunda e prática dos conceitos. Cada sessão baseada em problemas exige que os estudantes lembrem e apliquem conceitos fundamentais (O1, O2, O3 e O6), compreendam implementações práticas (O2, O5, O7), e critiquem e avaliem soluções (O9). Ao resolver problemas específicos de programação, os estudantes são desafiados a integrar e aplicar seus conhecimentos de forma prática e contextualizada, desenvolvendo habilidades críticas e de resolução de problemas.
O trabalho colaborativo fortalece as habilidades de comunicação, gestão de projetos e trabalho em equipa. Ao desenvolver um projeto de software em grupo, os estudantes aplicam seus conhecimentos em um ambiente prático e colaborativo (O3, O4, O8). Utilizando ferramentas colaborativas, os estudantes também aprendem a implementar padrões de software e "refatorar" código de uma forma sistemática (O7, O8). A colaboração contínua e as revisões de código permitem que os estudantes critiquem e validem suas implementações, promovendo um entendimento mais profundo e a capacidade de identificar e corrigir problemas no código (O6, O9). -
Docente(s) responsável(eis)
Patrícia Alexandra Pires Macedo - 1.º Semestre
-
Bibliografia
• Michael T. Goodrich, Roberto Tamassia; (2014) Data Structure and Algorithms in Java, John Wiley & Sons, 2014. ISBN: 978-1118771334
• Mehra, L. (2021). Software Design Patterns for Java Developers: Expert-Led Approaches to Build Re-Usable Software and Enterprise Applications. BPB Publications. 978-9391392475
• Stefano Violetta. (2023). Refactoring in Java. Packt Publishing Ltd. ISBN - 978-1805126638
Detalhes do curso
-
Código
01105106
-
Modo de Ensino
PRESENCIAL
-
ECTS
6.0
-
Duração
Semestral
-
Horas
30h Teórico-Práticas
