Saltar para:
Logótipo
Você está em: Início > EIC0111

Laboratório de Programação Orientada por Objectos

Código: EIC0111     Sigla: LPOO

Áreas Científicas
Classificação Área Científica
OFICIAL Programação

Ocorrência: 2019/2020 - 2S Ícone do Moodle

Ativa? Sim
Página Web: https://web.fe.up.pt/~arestivo/page/courses/lpoo/
Unidade Responsável: Departamento de Engenharia Informática
Curso/CE Responsável: Mestrado Integrado em Engenharia Informática e Computação

Ciclos de Estudo/Cursos

Sigla Nº de Estudantes Plano de Estudos Anos Curriculares Créditos UCN Créditos ECTS Horas de Contacto Horas Totais
MIEIC 212 Plano de estudos a partir de 2009/10 2 - 6 70 162

Docência - Responsabilidades

Docente Responsabilidade
André Monteiro de Oliveira Restivo Regente
Mais informaçõesA ficha foi alterada no dia 2020-05-20.

Campos alterados: Fórmula de cálculo da classificação final

Língua de trabalho

Português - Suitable for English-speaking students

Objetivos

Pretende-se, nesta unidade curricular, que os alunos desenvolvam competências no desenho de aplicações usando o paradigma orientado a objetos. Pretende-se que os estudantes que obtenham aprovação à unidade curricular, consigam:

  1. Usar o Git como ferramenta de controlo de versões;
  2. Usar a linguagem Java como linguagem orientada a objetos;
  3. Desenhar testes unitários usando JUnit;
  4. Aplicar os princípios SOLID no desenho de aplicações e entender a sua importância;
  5. Aplicar design patterns para resolver problemas no desenho de aplicações;
  6. Identificar code smells em código orientado a objetos;
  7. Usar técnicas de refactoring para melhorar atributos não-funcionais e resolver code smells;
  8. Aplicar o padrão arquitetural MVC no desenho de aplicações event-driven.

Resultados de aprendizagem e competências


  1. Saber desenvolver (desenhar, codificar, documentar, analisar, testar e manter) programas orientados por objetos com Java e UML;

  2. Saber utilizar ferramentas de suporte às várias fases do desenvolvimento e manutenção de programas;

  3. Ser capaz de conceber e desenhar software modular, flexível e fácil de manter e evoluir;

  4. Ser capaz de reutilizar padrões e frameworks.


 

Modo de trabalho

Presencial

Pré-requisitos (conhecimentos prévios) e co-requisitos (conhecimentos simultâneos)

Conhecimentos de programação orientada por objetos em C++.

Programa


  1. Uma breve introdução ao Git: repositórios locais, remotes, branches e workflows;

  2. Gestão de dependências usando Gradle;

  3. A linguagem Java: Tipos, literais e variáveis; Estruturas de controlo;Classes e objetos; Coleções; Tipos genéricos; Threads e sincronização; Input e output; Interfaces gráficas usando Swing;

  4. Princípios da programação orientada a objetos: abstração de dados, polimorfismo, herança e encapsulamento; utilização da composição em vez de herança como mecanismo para atingir polimorfismo;

  5. Princípios SOLID: Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation e Dependency Inversion;

  6. Testes unitários usando JUnit: Mocks e Stubs usando Mockito; Cobertura e mutation-testing;

  7. Diagramas UML: diagramas de classes, sequência e comunicação;

  8. Code smells e técnicas de refactoring;

  9. Padrões de desenho: Factory-Method, Command, Composite, Observer, Strategy, Abstract Factory, State, Adapter, Decorator e Singleton;

  10. Model-View-Controller como padrão de arquitetura.

Bibliografia Obrigatória

Bruce Eckel; Thinking in Java. ISBN: 0-13-027363-5 (4ª edição ou superior)
Russ Miles and Kim Hamilton; Learning UML 2.0. ISBN: 978-0-596-00982-3

Bibliografia Complementar

Kent Beck; Test-driven development. ISBN: 978-0-32-114653-3
Erich Gamma... [et al.]; Design patterns. ISBN: 0-201-63361-2
Martin Fowler ; with contributions by kent Beck... [et al.]; Refactoring. ISBN: 0-201-48567-2
Robert C. Martin; Agile Software Development: Principles, Patterns and Practices, Prentice-Hall, 2003. ISBN: 0-13-597444-5
Joost Visser; Building Maintainable Software, O'Reilly, 2015. ISBN: 978-1-491-94434-9

Métodos de ensino e atividades de aprendizagem

Aulas teóricas de exposição e discussão dos tópicos programáticos;

Aulas práticas em laboratório:

  1. Na primeira parte (7 semanas) os alunos irão resolver exercícios que cobrem os seguintes conteúdos programáticos: Git, Java, testes unitários, princípios SOLID, design patterns, code smells e refactoring;

  2. Na segunda parte (6 semanas) os alunos irão desenvolver um pequeno projeto integrador.

Software

IntelliJ

Tipo de avaliação

Avaliação distribuída sem exame final

Componentes de Avaliação

Designação Peso (%)
Participação presencial 5,00
Teste 40,00
Trabalho laboratorial 55,00
Total: 100,00

Componentes de Ocupação

Designação Tempo (Horas)
Estudo autónomo 30,00
Frequência das aulas 70,00
Trabalho laboratorial 62,00
Total: 162,00

Obtenção de frequência

Condições para obtenção de frequência: Não exceder o número limite de faltas e participar activamente na elaboração do projecto.

Fórmula de cálculo da classificação final

Fórmula de avaliação:

  1. 5% - participação nas aulas práticas;
  2. 20% - prova prática individual de programação em computador;
  3. 55% - realização do projecto integrado (grupos de 2 elementos);
  4. 20% - prova individual de escolha múltipla em computador.
Todas as componentes têm uma classificação mínima de 40%.

A classificação do projeto integrado é composta por:

  1. 10% - relatório intermédio
  2. 30% - relatório final
  3. 60% - produto desenvolvido

 

Devido ao COVID-19, a prova prática e a prova individual serão realizadas em simultâneo durante o período de exames. A duração desta prova conjunta será de 1h30. Os pesos de cada componente não se irão alterar.

Avaliação especial (TE, DA, ...)

Todas as componentes são obrigatórias para todos os estudantes. Os alunos dispensados de frequência às aulas (trabalhadores estudantes, etc.), devem apresentar os trabalhos nas mesmas datas dos restantes estudantes e apresentar regularmente aos docentes a evolução dos trabalhos.

Melhoria de classificação

Frequência da unidade curricular no ano seguinte.

Recomendar Página Voltar ao Topo
Copyright 1996-2024 © Faculdade de Engenharia da Universidade do Porto  I Termos e Condições  I Acessibilidade  I Índice A-Z  I Livro de Visitas
Página gerada em: 2024-03-19 às 03:29:18 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais | Denúncias