Back

Tópicos Avançados de Programação Orientada a Objetos

    Detalhes do curso

  • 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

  • Código

    01105106

  • Modo de Ensino

    PRESENCIAL

  • ECTS

    6.0

  • Duração

    Semestral

  • Horas

    30h Teórico-Práticas

Conteúdo atualizado em 21/03/2025 15:46
Visão Geral da Privacidade
Escola Superior de Tecnologia de Setúbal - ESTSetúbal/IPS

Este site utiliza cookies para lhe oferecer a melhor experiência possível. As informações dos cookies são armazenadas no seu navegador e permitem funcionalidades como reconhecê-lo quando regressa ao nosso site e ajudar a nossa equipa a perceber quais as secções que considera mais interessantes e úteis.

Cookies Estritamente Necessários

Os cookies estritamente necessários devem estar sempre ativados para que possamos guardar as suas preferências de configuração de cookies.

Cookies de Terceiros

Este site utiliza o Google Analytics para recolher informação anónima, como o número de visitantes do site e as páginas mais populares. Manter este cookie ativado ajuda-nos a melhorar o nosso website.