Apresentação de conceitos avançados de programação orientada a objetos (relação de generalização, herança, polimorfismo). Estudo de tipos abstratos de dados (listas, pilhas, filas, conjuntos e dicionários) e sua implementação como objetos. Modelagem e solução de problemas utilizando os conceitos de orientação a objetos e tipos abstratos de dados. Análise dos aspectos tecnológicos complementares à solução de problemas (programação orientada a eventos para construção de interfaces com o usuário, persistência de dados com arquivos e tratamento de exceções). Discussão introdutória sobre complexidade e análise de algoritmos.
1.1 Revisão de coleções
1.2 Modelagem de aplicações envolvendo o uso de coleções
1.2.1 Diagrama de classes UML
2.1 Abordagens para Tratamento de Erros e Exceções
2.1.1 Valores default
2.1.2 Retorno de código de estados
2.1.3 Mecanismos baseados em Exceções
2.2 Tratamento de Exceções em Java
3.1 Relações de Associação e Dependência
3.2 Encapsulamento e coesão
3.3 Sobrecarga
3.4 Atributos e Métodos de Classe
3.5 Relação de Generalização/Especialização
3.5.1 Herança
3.5.2 Polimorfismo
4.1 Visão Geral
4.2 Componentes Básicos de uma Interface Gráfica
4.3 Conceito de Interface
4.4 Sistema de Tratamento de Eventos
4.5 Classes Internas Anônimas
4.6 Desenvolvimento de Aplicações Usando Interfaces Orientadas a Janelas
5.1 Introdução: definição de Tipos Abstratos de Dados
5.2 Polimorfismo de Interface
5.2.1 Conversão de tipos
5.2.1.1 Coerção explícita
5.2.1.2 Operador instanceof
5.3 Genéricos
5.4 Tipos Abstratos Lineares
5.4.1 TAD Lista
5.4.1.1 Estruturas de alocação estática:
- Arranjos Unidimensionais
- Estruturas Circulares
5.4.1.2 Estruturas de alocação dinâmica:
- Encadeamento simples
- Encadeamento duplo
- Classes autoreferenciáveis em Java
5.4.2 TAD Pilha
5.4.3 TAD Fila
5.5 Tipos Abstratos Não-Lineares
5.5.1 TAD Conjunto
5.5.2 TAD Dicionário
5.6 Introdução a complexidade e análise de algoritmos
6.1 Fluxo de E/S (streams)
6.2 Arquivos: conceitos
6.3 Arquivos Texto x Arquivos Binários
6.4 Arquivos de Acesso Sequencial x Arquivos de Acesso Direto
6.5 Remoção de Registros
6.6 Arquivos de Índices
6.7 Serialização
1. GOODRICH, Michael T. Estruturas de dados e algoritmos em Java. 4ª edição. Porto Alegre : Bookman, 2007. 600 p.
2. HORSTMANN, Cay. Conceitos de Computação com Java. 1ª edição. Artmed, 2009, 720p.
3. MCALLISTER, W. Data Structure and Algorithms Using Java. 1st edition. Jones and Bartlett.
1. AHO, Alfred V. Data Structures and Algorithms. 1ª edição. Addison-Wesley, 1983.
2. ARNOLD, Ken. A linguagem de programação Java. 4ª edição. Porto Alegre: Bookman, 2007. 799p.
3. CORMEN, Thomas H. et al. Algoritmos: teoria e prática. Rio de Janeiro: Elsevier, 2002. 916 p.
4. FLANAGAN, David. Java: o guia essencial. 5ª edição. Porto Alegre: Bookman, 2006. 1099 p.
5. KOFFMANN, Elliot B. Objetos, Abstração, Estruturas de Dados e Projetos Usando Java 5.0. 1ª edição. LTC, 2008.
1. Documentação on-line disponível em http://java.sun.com
2. Documentação on-line disponível em http://download.oracle.com/javase/tutorial
Onde:
PS - Prova de substituição, abrangendo toda a matéria. Apenas os alunos que não compareceram a uma das 3 provas (P1, P2 ou P3 ) têm direito que realizar esta prova
G1 = Para aprovação em G1 é necessário média maior ou igual a 7 e freqüência mínima de 75%
G2 = Os alunos que não obtiveram aprovação em G1 devem realizar a prova de G2, desde que:
A média de G2 é calculada da seguinte forma:
G2 = (G1 + nota da prova de G2) / 2
Se o aluno obtiver média de G2 maior ou igual a 5 será aprovado.