Programação Orientada a Objetos

Conhecimentos de Base Recomendados

N/A

Métodos de Ensino

Não disponível.

 

Resultados de Aprendizagem

Espera-se que no final da unidade curricular o aluno esteja habilitado a:
1. Identificar os conceitos básicos de Programação Orientada a Objetos (POO): objetos, classes, polimorfismo e herança;
2. Implementar e gerir estruturas de dados estáticos (tabelas uni e multi-dimensionais) e dinâmicos (java collections, nomeadamente arrays, vetores e dicionários);
3. Utilizar estruturas de memória persistente: ficheiros (binários, texto e objetos);
4. Planear, desenvolver e testar programas usando a linguagem Java.

Programa

1. Introdução à linguagem Java;
Estrutura e sintaxe; Método main; Estrutura de classes e métodos; Tipos de dados; Tipos de dados primitivos; Variáveis e Constantes; Declaração de variáveis; Passagem de parâmetros por cópia e por referência; Conversão e Casting; Saída de dados; Entrada de dados (Scanner); Classes pré-definidas (wrapper classes); Operadores; Controlo de fluxos; Interacção com o utilizador (System.in, System.out); Classes Object, String, StringTokenizer e Math; Bibliotecas Java; API Java;
2. Programação Orientada a Objetos (POO): Classes e Objetos;
Criação e instanciação de objectos; Manipulação de objectos; Recurso de memória e Garbage collector; Comunicação entre objectos; Passagem de objectos por parâmetros (cópia da referência e cópia do valor); Construtores; Operador this,; Operador static; Modificadores de visibilidade (private, public, protected;
friendly); Variáveis de instancia (Instance variables) e de classe; Métodos de instancia e de classe; Métodos estáticos; Classes Internas (nested / inner), classes locais e classes anónimas;
Reescrita de métodos (method overloading);
3. Tratamento de Exceções;
Tipos e tratamento de Excepções; Bloco try/catch e try/catch/finally;
Lançamento de excepções; Cláusulas throw e throws; Hierarquia de Excepções; Declaração de excepções;
4. Estruturas de dados estáticas: Tabelas Unidimensionais e Multidimensionais;
Criação de tabelas; Dimensão e índices das tabelas; Inicialização de tabelas; Copia de tabelas; Passagem de tabelas como parâmetros;
5. Estruturas de dados dinâmicas: Java Collections;
ArrayList, Vector e Hashtable (Dicionários); Pesquisa e iteração de estruturas de dados; Criação e manipulação de estruturas dinâmicas; Estruturas e comportamentos das classes Vector e ArrayList; Aplicação, manipulação e acesso aos elementos de estruturas dinâmicas; Iteração de estruturas dinâmicas: classe iterator e enumeration; Collections – implementações pré-definidas de estruturas em Java; Collection Framework; Tipos de collections: Set, List, Map, SortedSet, SortedMap; Implementações de collections; Interface Comparable e Comparator; Ordenamento de estruturas;
6. Ficheiros: Texto, Binários e de Objetos; Java Properties;
Leitura de dados a partir de dispositivos de entrada; Fluxo de dados; Streams; Leitura de dados a partir de dispositivos de entrada (Classes InputStreamReader, BufferedReader e Scanner); Manipulação de Ficheiros e directorias (Classe File); Acesso universal a recursos; Manipulação de Ficheiros de Texto (classes FileReader e BufferedReader para leitura e FileWriter, BufferedWriter e PrintWriter para escrita); Manipulação de Ficheiros Binários (classes FileOutputStream e DataOutputStream para leitura e FileInputStream e DataInputStream para escrita); Actualização de ficheiros de texto e binários; Tratamento de excepções na acesso a dispositivos de Entrada/Saída; Java Properties; Manipulação de Ficheiros de Objectos (classes FileOutputStream e ObjectOutputStream para escrita e FileInputStream e ObjectInputStream para leitura); Actualização de ficheiros de objectos; Classes serializable;
7. Programação Orientada a Objetos (POO): Herança e Polimorfismo;
Introdução ao conceito da Hereditariedade; Palavra reservada Extends; SubClasses e SuperClasses; Modificadores de visibilidade e encapsulamento; Invocação de métodos e construtores da superclasse (super); Herança de características e comportamentos; Redefinição de métodos herdados (method overriding); Hierarquia de Classes; Criação de objectos a partir de classes derivadas; Operadores final e InstanceOf; Referência polimórfica; Objectos referidos e métodos invocados; Definição de referências polimórficas; Acessibilidade de Variáveis, Métodos e Classes; Overloading e Overriding de métodos; Upcasting e Downcasting.

Estágio(s)

NAO

Bibliografia

Flanagan, D. , & Evans, B. (2019). Java in a nutshell – A desktop quick reference (7.ª ed). O’Reilly.
Jesus, C. (2013). Curso prático de java. FCA.
Martins, F. (2017). Java 8 – POO + construções funcionais. FCA.
Martins, F. (2014). Projectos de POO em java. FCA.
Urma, R., Fusco, M., & Mycroft, A. (2018). Modern java in action – Lambdas, streams, functional and reactive programming. Manning.