Algoritmos e Programação II (CC)
Turma 138 - Prof. Marcelo Cohen

Acesso ao Moodle

Próximas aulas:


23/05/2012 [QUA LM] - Correção P2 (Sala de aula)
25/05/2012 [SEX LM] - Lista duplamente encadeada (Sala de aula)

Programa da Disciplina

Ementa

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.

Objetivos

  1. Consolidar e aprofundar os conceitos fundamentais do paradigma de programação orientada a objetos.
  2. Definir as noções de projeto de programas e estruturas de dados orientados a objetos.
  3. Definir e diferenciar as estruturas de dados genéricas fundamentais, tais como filas, pilhas, listas, matrizes, dicionários e conjuntos.
  4. Manipular estruturas de dados através do emprego de algoritmos.
  5. Selecionar e construir estruturas de dados adequadas para aplicações específicas, bem como modelar estas aplicações utilizando a noção de orientação a objetos.
  6. Comparar estruturas de dados através da adequação ao problema.
  7. Implementar ferramentas de software utilizando uma linguagem orientada a objetos.
  8. Introduzir conceitos básicos de complexidade e análise de algoritmos.

UNIDADE 1: Manipulação de Coleções Lineares

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

UNIDADE 2: Tratamento de Erros e Exceções

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

UNIDADE 3: Projeto de Classes

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

UNIDADE 4: Interface com o Usuário

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

UNIDADE 5: Tipos Abstratos de Dados

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

UNIDADE 6: Persistência de Dados usando Arquivos

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

Bibliografia

Básica

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.

Complementar

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.

Outras

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

Avaliação

Média de G1 = (P1 + P2 + P3 + MT + TF) / 5

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.

Datas das Avaliações

Material de Apoio