Departamento de Informática (UM)

Página de Unidade Curricular

DesignaçãoCódigoCursoRegimeRegente

Programação Orientada aos Objetos

14306 [J304N2]

Licenciatura em Engenharia Informática [ENGINF]

S4

António Manuel Nestor Ribeiro

Objetivos

Esta UC possibilita o contacto dos alunos com um novo paradigma de programação e aumenta a capacidade dos alunos de construção de aplicações software mais complexas. A adopção de um novo paradigma, com a posterior implementação de uma aplicação software complexa, estimula o desenvolvimento das capacidades de abstração o que está de acordo com os objetivos enunciados. A introdução de competências relativas à execução de testes e a mecanismos de programação genérica reforça as competências adquiridas na UC de programação imperativa.

Programa

1. Introdução à Programação por Objectos:
1.1. concepção modular de aplicações;
1.2. tipos abstractos de dados;
2. Noção de Objecto em POO:
2.1. estado interno, comportamento e mensagens;
2.2. encapsulamento;
3. Classes, hierarquias de classes e polimorfismo;
4. Herança simples, herança múltipla e classes abstractas;
5. Testes Unitários e Programação Genérica;
6. Concepção e análise de aplicações: padrões arquitecturais.

Bibliografia

Java 8 POO + Construções Funcionais, F. Mário Martins, Editora FCA, Série Tecnologias de Informação, ISBN-978-972-722-838-6, 2017.

Object Oriented Design with Applications G. Booch, Third Edition, Addison-Wesley Professional, ISBN 978-020-189-551-3, 2007.

Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes & Michael Kölling, Sixth Edition, Pearson Education, ISBN 978-1-292-15904-1, 2016.

Java Program Design- Principles, Polymorphism, and Patterns, Edward Sciore, Apress Media, ISBN 978-1-4842-4142-4, 2019.

Fundamentals of Java Programming, Mitsunori Ogihara, Springer, ISBN 978-3-319-89490-4, 2018.

Resultados da aprendizagem

Os alunos deverão ser capazes de:
- enunciar os conceitos fundamentais da PPO: objectos, classes, herança e polimorfismo;
- analisar a estruturação de um domínio em classes;
- construir hierarquias de classes utilizando as noções de classe abstracta, tipo abstracto de dados e polimorfismo;
- identificar a importância das classes abstractas e herança na concepção de um sistema em programação por objetos;
- utilizar linguagens de programação por objectos para construção de programas de média escala, seguros, robustos e extensíveis;
- conhecer soluções arquitecturais estabelecidas para a concepção de programas modulares e escaláveis.

Método de avaliação

A metodologia de avaliação considera duas componentes. Uma componente individual, através de um exame escrito final, em que é aferida a compreensão dos conceitos bem como a capacidade de os aplicar. Uma componente de trabalho em equipa, através de um trabalho prático, com entregas faseadas ao longo do semestre, em que é aferida a capacidade de aplicação da abordagem proposta. O exame escrito tem um peso na classificação que se situa entre os 50% a 60%, enquanto a componente de trabalho em equipa tem um peso que se situa entre os 40% a 60%.

Funcionamento

Turno: T 1; Docente: António Manuel Nestor Ribeiro; Dep.: DI; Horas: 30.
Turno: T 2; Docente: António Manuel Nestor Ribeiro; Dep.: DI; Horas: 30.
Turno: PL 1; Docente: António Luís Pinto Ferreira Sousa; Dep.: DI; Horas: 30.
Turno: PL 2; Docente: António Luís Pinto Ferreira Sousa; Dep.: DI; Horas: 30.
Turno: PL 3; Docente: António Manuel Nestor Ribeiro; Dep.: DI; Horas: 30.
Turno: PL 4; Docente: Francisco José Torres Ribeiro; Dep.: DI; Horas: 30.
Turno: PL 5; Docente: Francisco José Torres Ribeiro; Dep.: DI; Horas: 30.
Turno: PL 6; Docente: José Nuno Castro Macedo; Dep.: DI; Horas: 30.
Turno: PL 7; Docente: José Nuno Castro Macedo; Dep.: DI; Horas: 30.
Turno: PL 8; Docente: Fábio André Castanheira Luís Coelho; Dep.: DI; Horas: 30.
Turno: PL 9; Docente: Fábio André Castanheira Luís Coelho; Dep.: DI; Horas: 30.

[ Outras UCs do Departamento ]