Objetivos
O cumprimento da
disciplina busca dar ao aluno, ao final do semestre, condições de:
- Consolidar e aprofundar os conceitos fundamentais do
paradigma de programação orientada a objetos.
- Definir as noções de projeto de programas e
estruturas de dados orientados a objetos.
- Definir e diferenciar as estruturas de dados
genéricas fundamentais, tais como filas, pilhas, listas, dicionários e
conjuntos.
- Manipular estruturas de dados através do emprego de
algoritmos.
- 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.
- Comparar estruturas de dados através da adequação ao
problema.
- Implementar ferramentas de software utilizando uma
linguagem orientada a objetos.
- Introduzir conceitos básicos de complexidade e
análise de algoritmos.

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.

Conteúdo
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
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
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
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
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
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. Serialização

Bibliografia
Básica
·
GOODRICH,
Michael T.; TAMASSIA, Roberto. Estruturas de dados e algoritmos em Java.
4ª edição. Porto Alegre: Bookman, 2007. 600 p.
·
HORSTMANN,
Cay. Conceitos de Computação com Java. 5ª edição. Porto Alegre: Bookman,
2009. 720p.
·
MCALLISTER, William. Data Structure and
Algorithms Using Java. 1st edition. Boston: Jones and
Bartlett, 2009. 580 p.
Complementar
·
AHO, Alfred V. et al. Data
Structures and Algorithms. 1st edition. Addison-Wesley, 1983. 427 p.
·
ARNOLD,
Ken. et al. A linguagem de programação Java. 4ª edição. Porto Alegre:
Bookman, 2007. 799p.
·
CORMEN, Thomas H. et al. Algoritmos: teoria e
prática. Rio de Janeiro: Elsevier, 2002. 916 p.
·
FLANAGAN,
David. Java: o guia essencial. 5ª edição. Porto Alegre: Bookman, 2006.
1099 p.
·
KOFFMAN,
Elliot B.; WOLFGANG, Paul A. T. Objetos, Abstração, Estruturas de Dados e
Projetos Usando Java versão 5.0. 1ª edição. LTC, 2008. 695 p.
Outras
Referências
·
Documentação
on-line disponível em http://docs.oracle.com/javase/8/docs/api/
·
Documentação
on-line disponível em http://download.oracle.com/javase/tutorial
|
|

Critérios
de Avaliação

Quanto
à P1:
Prova escrita, abordando, geralmente, os conteúdos relacionados com as
unidades 1 e 3.
Quanto
à P2:
Prova escrita, abordando, geralmente, os conteúdos relacionados com as
unidades 2 e 5.
Quanto
à P3:
Prova escrita, abordando, geralmente, os conteúdos relacionados com a unidade
5.
Quanto
à PS:
Esta prova escrita será aplicada somente para os alunos que não puderam
comparecer nas provas P1, P2 ou P3, sendo que o conteúdo contempla todas as
unidades.
Quanto
ao TF:
Corresponde à nota de trabalho final, que consiste em um trabalho extraclasse
que abrange todo conteúdo estudado.
OBS.
1:
Será estimulada a pesquisa de alguns conteúdos extraclasse e que serão
posteriormente avaliados.
OBS. 2: 75% de presença
é necessário para aprovação (tanto em G1 como em G2) e o grau mínimo em G1
para realizar G2 é 4.0.

Datas
das Avaliações
P1
|
14 / 09 / 2015
|
P2
|
23 / 10 / 2015
|
P3
|
25 / 11 / 2015
|
PS
|
30 / 11 / 2015
|
G2
|
04 / 12 / 2015
|
TF
|
27 / 11 / 2015
|

Contextualização
da Disciplina
Quanto
à Grade Curricular:
esta disciplina apresenta-se no segundo semestre do curso de Bacharelado em
Sistemas de Informação - currículos 4/622 e 4/623, tendo por objetivo o
estudo e aplicação de estruturas de dados e do paradigma orientado a objetos.
O pré-requisito para cursar esta disciplina é Algoritmos e Programação I.
Quanto
ao Mercado de Trabalho:
atualmente o paradigma orientado a objetos e a linguagem de programação Java
estão sendo muito utilizados no projeto e desenvolvimento de sistemas
destinados a Web ou não.

Comentários, dúvidas,
sugestões, envie um mail para isabel.manssour at pucrs dot
br

Última alteração em 29 de julho de 2015.
|