Laboratório de Programação Orientada por Objectos
Áreas Científicas |
Classificação |
Área Científica |
OFICIAL |
Programação |
Ocorrência: 2015/2016 - 2S
Ciclos de Estudo/Cursos
Língua de trabalho
Português - Suitable for English-speaking students
Objetivos
- Desenvolver e aprofundar as competências de programação orientada por objetos, numa linguagem orientada por objetos moderna (Java), representativa das linguagens utilizadas para desenvolvimento de software aplicacional.
- Desenvolver competências de desenho orientado por objetos, usando a linguagem UML e padrões de desenho.
- Aprender a desenvolver aplicações com interface gráfica e a utilizar bibliotecas extensas.
- Adquirir o hábito de seguir boas práticas de desenvolvimento de software (desenvolvimento iterativo, testes unitários, "refactoring", programação em pares, etc.).
Resultados de aprendizagem e competências
- Saber desenvolver (desenhar, codificar, documentar, analisar, testar e manter) programas orientados por objectos com Java e UML.
- Saber utilizar ferramentas de suporte às várias fases do desenvolvimento e manutenção de programas.
- 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
- A linguagem Java: elementos da linguagem, diferenças em relação a C++, e novas características de Java 8 (expressões lambda, etc.).
- Testes unitários e desenvolvimento guiado por testes ("test-driven development") com JUnit, ferramentas de análise de cobertura e ferramentas de teste de mutação.
- Bibliotecas do Java (Java API): visão geral, coleções, interfaces gráficas e entrada/saída.
- Desenho orientado por objectos com UML: princípios de desenho orientado por objectos; diagramas de classes, sequência e estados; desenvolvimento conduzido por modelos.
- Padrões de desenho ("design patterns").
- Refabricação de código ("refactoring") e "code smells".
- Introdução ao desenvolvimento de aplicações móveis para Android.
- Introdução a "multithreading", "remote method invocation" e animações em Java.
- Reflexão, informação dinâmica de tipos e metaprogramação.
- Ferramentas de análise dinâmica de programas ("debugging", "profiling").
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
Métodos de ensino e atividades de aprendizagem
Aulas teóricas de exposição e discussão dos tópicos programáticos, mais concentradas no início do semestre.
Aulas práticas em laboratório de desenvolvimento iterativo de dois projectos em tecnologias orientada por objetos, em grupos de 2 estudantes:
- um primeiro "projecto guiado", com enunciado idêntico para todos os grupos (a fornecer incrementalmente ao longo das semanas de acordo com os tópicos abordados nas aulas teóricas), a realizar na primeira metade do semestre;
- -um segundo "projecto integrado", com enunciados distintos para os diferentes grupos, a realizar na segunda metada do semestre, se possível em coordenação com outras unidades curriculares do mesmo semestre.
Mini-teste individual de programação em computador a meio do semestre e mini-teste de escolha múltipla igualmente em computador no final do semestre.
Software
Eclipse
Enterprise Architect
Tipo de avaliação
Avaliação distribuída sem exame final
Componentes de Avaliação
Designação |
Peso (%) |
Participação presencial |
0,00 |
Teste |
25,00 |
Trabalho laboratorial |
75,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 |
Fórmula de cálculo da classificação final
Componentes de avaliação e respectivos pesos:
- 15% - prova prática individual de programação em computador;
- 30% - projecto guiado;
- 10% - entrega intermédia do projecto integrado;
- 35% - entrega final do projecto integrado.
- 10% - prova individual de escolha múltipla em computador.
Todas as componentes têm uma classificação mínima de 40%.
A classificação final não pode exceder em mais de 3 valores a classificação dos mini-testes (média pesada dos 2 mini-testes) arredondada para inteiro.
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.