Algoritmos e Programação II 

Profa. Isabel Harb Manssour, Turma 168 (2LM 4LM 6LM)

 

Objetivos

O cumprimento da disciplina busca dar ao aluno, ao final do semestre, condições de:

  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, 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.

 

../Imagens/emban15.png (1469 bytes)

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.

../Imagens/emban15.png (1469 bytes)

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

../Imagens/emban15.png (1469 bytes)

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

../Imagens/emban15.png (1469 bytes)

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.

../Imagens/emban15.png (1469 bytes)

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

../Imagens/emban15.png (1469 bytes)

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.

../Imagens/emban15.png (1469 bytes)

../Imagens/E-MAIL.JPG (3237 bytes)Comentários, dúvidas, sugestões, envie um mail para isabel.manssour at pucrs dot br

../Imagens/emban15.png (1469 bytes)

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