Como chegar
|
Contactos

Programação Orientada a Objetos 2018/2019

  • 7 ECTS
  • Lecionada em Português
  • Avaliação Contínua

Objetivos

Depois de concluída a unidade curricular, o estudante deverá: 1) compreender os conceitos e as construções intrínsecas ao paradigma de programação orientada a objetos, 2) conhecer a sintaxe e as principais funcionalidades da linguagem Java e 3) deverá ser capaz de criar aplicações orientadas a objetos usando esta linguagem.
4) O estudante será também capaz de planear, gerir e desenvolver um trabalho de grupo, bem como apresentá-lo, quer escrita, quer oralmente.

Pré-Requisitos Recomendados

Conhecimentos adquiridos nas unidades curriculares:
Algoritmia e Programação, nomeadamente: condições lógicas, ciclos e arrays.
Matemática Discreta: lógica, expressões booleanas e conjuntos
Álgebra Linear: Raciocínio lógico de demonstração e operações sobre matrizes

Método de Ensino

A lecionação da unidade curricular desenvolve-se em aulas teórico-práticas e práticas laboratoriais. Serão usadas diferentes metodologias, privilegiando-se as metodologias ativas para fomentar um maior empenho dos estudantes: utilizar-se-á sala de aula invertida e aprendizagem baseada em projeto (PBL).
Em algumas aulas teórico-práticas utilizar-se-á, também, o método expositivo para apresentação de conceitos, recorrendo, frequentemente, à interpelação aos alunos e ao ensino pela descoberta através de exemplos. As aulas práticas versarão a resolução de exercícios práticos no computador, com acompanhamento individual pela professora. Utilizar-se-á PBL com o objetivo de desenvolvimento de um projeto aplicado, ligando as unidades curriculares de Sistemas de Informação e POO.
Recursos: Linguagem Java; IDEs BLUEJ e Eclipse; recursos disponibilizados na página da UC no MOODLE

Conteúdos Programáticos

1. Java:introdução à linguagem
Linguagem binária,compilação,máquina virtual
Tipos primitivos
Arrays
Estruturas de controlo
I/O Simples
Estrutura base de um programa Java
2. Paradigma de Programação orientada a objetos
Paradigmas de programação
POO e linguagens de programação
Conceito de classe
Classes e objetos
Definição de classes
Construtores, métodos, parâmetros
Encapsulamento
Conposição, overloading
Coleções; iteradores
Qualidade no desenho de classes; acoplamento e coesão, desenho orientado por responsabilidades, refactoring
3. IDEs para Java
Exemplos de IDEs
Uso de BlueJ
Diagrama de objetos, diagrama de classes
4. Herança
Hierarquia de classes
Tipos estático e dinâmico
Polimorfismo
Overriding
Qualificadores de acesso
5. Abstração e Modularização
Packages e import
Classes abstratas e interfaces
Wrapper classes
6. Ficheiros
7. Qualidade do Código
Boas práticas
Teste e deteção de erros
Tratamento de erros
Exceções; tratamento de exceções
JavaDoc

Bibliografia e Webgrafia Recomendada

Barnes, D., & Kolling, M. (2017). Objects first with Java (6th ed.). Prentice Hall/Perason Education.
Martins, M. (2017). Java 8: POO + Construções Funcionais. FCA.
The Java Tutorials, http://docs.oracle.com/javase/tutorial/index.html

Bibliografia Complementar

Deitel, P., & Deitel, H. (2017). Java How to Program, Early Objects (11th ed.). Pearson.
Martins, M. (2014). Projetos de POO em Java. FCA.
David J. Eck, Introduction to Programming Using Java, http://math.hws.edu/javanotes8/, 2014

Planificação Semanal

1. Apresentação da UC: objetivos de aprendizagem, metodologia de ensino e avaliação, bibliografia, esforço de trabalho (ECTS). Aplicação de um teste diagnóstico
2.
Escrita de algoritmos - revisão de conceitos
A linguagem Java: introdução histórica; a JVM; conceitos fundamentais de java: tipos primitivos, estruturas de controlo, métodos e variáveis static, vetores e matrizes; I/O simples; estrutura base de um programa Java
3.
Conceito de IDE, exemplos de IDEs. Utilização do BLueJ - a escrita de um primeiro programa em Java
A linguagem Java: utilização de arrays - discussão e trabalho grupo (no âmbito da estratégia de sala de aula invertida)
Desenvolvimento de programas em Java, usando Bluej, com utilização de arrays
4.
Utilização de coleções do Java: ArrayList, HashSet e HashMap; iteradores.
Paradigmas de programação; Paradigmas OO e linguagens de programação;O paradigma de POO: conceito de classe; classes e objetos; encapsulamento; escrita de uma classe em Java; discussão e trabalho grupo (no âmbito da estratégia de sala de aula invertida)
Resolução de problemas para compreensão e aplicação dos conhecimentos sobre classes e objetos; diagramas de classes e diagramas de objetos
5.
Linguagem Java: uso de métodos: parâmetros formais e reais; âmbito e visibilidade das variáveis. Variáveis e métodos de classe. Relações entre classes: Has a/Composição - exemplos.
6.
Qualidade no desenho de classes: acoplamento e coesão; desenho orientado por responsabilidades; boas práticas na escrita de classes; utilização do JavaDoc para criação de documentação profissional em Java.
7.
Herança: compreensão dos principais conceitos através de um exemplo prático. Polimorfismo - sobreposição e sobrecarga. Tipos estáticos e tipos dinâmicos. Variáveis polimórficas.
8.
Classes abstratas; métodos abstratos
9.
Herança múltipla: conceito de classe interface - exemplos
Utilização do package java.time para manipulação de datas/tempos
10.
Teste e debugging - conceitos base; o tratamento de exceções em Java.
11. Acompanhamento do projeto de grupo - desenho da arquitetura
12. Resolução de exercícios práticos para aplicação dos conceitos de desenvolvimento orientado a objetos
13.
Utilização de um IDE profissional - Eclipse
Conceitos base sobre como construir uma interface GUI em Java.
Uso de ficheiros em Java
14. Desenvolvimento do projeto
15.
Apresentação dos trabalhos
Prova prática individual

Coerência do programa para com os objetivos

São apresentados os conceitos fundamentais da linguagem Java com os conteúdos 1 e 3, contribuindo para que o estudante conheça a sintaxe e as principais funcionalidades da linguagem Java. NO tópico 2 discutem-se os diferentes paradigmas e linguagens que podem ser usados, contribuindo para o entendimento do paradigma OO. Nos tópicos 2, 4 e 5 são apresentados o conceito de um programa cuja unidade atómica é a classe (ou o objeto como sua manifestação) e é também mostrado como este paradigma está enraizado na linguagem Java e discutem-se os conceitos de Herança e Abstração e Modularização contribuindo para que o estudante compreenda os conceitos e as construções intrínsecas ao paradigma de programação orientada a objetos e seja capaz de criar aplicações orientadas a objetos usando Java. Nos pontos 6,7 e 8 abordam-se outras funcionalidades do Java contribuindo também para o conhecimento desta linguagem pelos estudantes.

Coerência dos métodos de ensino para com os objetivos

A metodologia de sala de aula invertida e o método expositivo usado nas aulas teórico-práticas permitem a compreensão dos conceitos e construções intrínsecas ao paradigma de programação orientada a objetos. As aulas laboratoriais destinam-se a que os alunos resolvam problemas e realizem projetos onde aplicam esses conhecimentos, apercebendo-se das dificuldades práticas da sua aplicação, e cimentando os conceitos teóricos, permitindo-lhes que sejam capazes de criar aplicações orientadas a objetos usando Java.
Utilizar-se-á a Aprendizagem Baseada em Projetos para desenvolver as competências de criação de aplicações orientadas a objetos usando a linguagem Java, e também as competências de planificação, trabalho em equipa e comunicação.

competência genérica relevantedesenvolvida?avaliada?
Análise e síntese  
Aptidão para aplicação na prática dos conhecimentos teóricosSimSim
Capacidade crítica e de avaliaçãoSim 
Capacidade de adaptação a novas situaçõesSim 
Capacidade de auto-critica e de auto-avaliação  
Capacidade de iniciativa e espírito empreendedor  
Capacidade de investigaçãoSimSim
Competência em informática e uso de novas tecnologiasSimSim
Competência em língua estrangeiraSim 
Comportamento ético e responsável Sim
Comunicação oral e escrita Sim
CriatividadeSimSim
Gestão da informação e da aprendizagem  
Preocupação com a eficáciaSimSim
Preocupação com a qualidadeSimSim
Relacionamento interpessoalSim 
Resolução de problemasSimSim
Saber organizar, planear e gerir  
Trabalho em equipaSimSim
Este website usa cookies para funcionar melhor e medir a performance (Diretiva da União Europeia 2009/136/EC)