Programação Orientada a Objetos (2009.1)

Carga Horária: 60h

Período: 2009.1

Grupo de Discussões: http://groups.google.com/group/poo_ccae_20091

Notas: http://spreadsheets.google.com/pub?key=ti-KuMOuCFSuEgPda3lBJDg&gid=3

Ementa (oficial em vigor): Problemas no desenvolvimento de software. Introdução a programação orientada a objetos. Objetos. Mensagens. Classes. Polimorfismo. Hierarquia de classes. Exemplos de projetos. Riscos e benefícios.

Ementa (em processo de aprovação): Práticas avançadas e aplicação de programação Orientada a Objetos na construção de um software. Uso de ambiente integrado de desenvolvimento. Técnicas de depuração. Exploração de bibliotecas de uma linguagem OO.

Objetivo Geral:

Introduzir aos alunos o paradigma da Programação Orientada a Objetos e uma linguagem que segue esse paradigma. Ao final do curso caberá ao aluno:

  • Reconhecer o que caracteriza uma linguagem orientada a objetos;

  • Implementar sistemas simples utilizando o paradigma da programação orientada a objetos.

Conteúdo Programático:

Unidade I (20 horas):

1. Introdução à linguagem Java e suas IDEs

2. Orientação a objetos

2.1. Usando objetos

2.2. Coleções

2.3. Criação de classes

Unidade II (20 horas):

2.4. Interfaces e polimorfismo

2.5. Reuso com herança

2.6. Tratamento de erros usando exceções

2.7. Testes de unidade

2.8. Visibilidade

Unidade III (20 horas):

2.9. Regras básicas de design e refatoramento

2.10. Composição de objetos

2.11. Persistência de objetos com arquivos

2.12. Introdução à programação concorrente

Metodologia: Aulas expositivas utilizando recursos didáticos. Aulas práticas ou de exercícios envolvendo a turma.

Recursos Didáticos: Quadro e pincel atômico, datashow. Livros e artigos. Trabalhos práticos realizados com os alunos.

Modos e Meio de Avaliação: Atribuição de notas (0-10) sobre as provas escritas, trabalhos práticos e teóricos. Haverá um total de três (3) notas:

1a. Prova Escrita + Exercícios

2a. Prova Escrita + Exercícios

3a. Projeto + Defesa do projeto + Exercícios

Alguns dos exercícios serão minitestes e serão considerados em média 75% destes. Caso na aula ou na lista de discussões o aluno defenda o exercício apresentado, ele fica liberado de entregar o exercício ou de fazer o miniteste correspondente. A idéia é ir sorteando exercícios entregues para que todos possam participar e possamos aprender mais com os erros e acertos uns dos outros.

A nota final será obtida pela média aritmética das 3 notas.

Bibliografia recomendada e referências:

• SANTOS, Rafael. Introdução à Programação Orientada a Objetos Usando JAVA. Rio de Janeiro : Campus, 2003.

Eckel, Bruce.: Thinking in Java, Prentice Hall, 3a Edição, 2002.

Material do Professor Jacques Sauvè (UFCG)

• Furgeri, Sérgio. Java 6: Ensino Didático: Desenvolvendo e Implementando Aplicações. São Paulo: Érica: 2008.

• Zakhour et al. The Java Tutorial: A Short Course on the Basics, 4th Edition (Java Series). Prentice Hall, 2006.

Tutorial da Sun sobre Java e OO.

• Arnold & Gosling : The Java Programming Language. Addison-Wesley, 2000.

• DEITEL, H. M. JAVA como programar. H. M Deitel e P. J. Deitel - 6a ed. Porto Alegre: Prentice-Hall, 2005.

• Kathy Sierra e Bert Bates - Java – Use a Cabeça - Editora Alta Books, 2005

• Horstmann e Cornell: Core Java 2 - Fundamentos, Volume 1. Makron Books, 2000.

• Sierra, Kathy. Certificação Sun Para Programador Java 6 Guia de Estudo. Alta Books, 2008.

Links Importantes

Baixe o JDK aqui

Acesse a API de java a partir daqui

Baixe o Eclipse Windows Linux(32bits) Linux (64 bits)

Fontes para Estudar por assunto:

Aulas (para ver slides e roteiros, acesse as discussões do grupo da disciplina)

19/08/09: Apresentação da disciplina e visão geral da Linguagem Java.

20/08/09: Criação, compilação e execução de um programa simples em Java usando o JDK. Exercício: Roteiro1

26/08/09: Operadores e Estruturas de Controle de Fluxo em Java

27/08/09: Introdução à Orientação a Objetos e uso de variáveis em Java

02 e 03/09/09: (LADC 2009) Roteiros 2, 3 e 4

09/09/09: Exercícios sobre estruturas de controle de fluxo, entrada de dados e uso de variáveis em Java, incluindo as do tipo String e arrays.

10/09/09: Usando objetos em Java (uso da API e de classes previamente criadas). Primeiro Miniteste. Exercício: Roteiro 5.

16/09/09: Criação de classes com seus métodos, construtores e variáveis (de instância e de classe)

17/09/09: Mais sobre criação de classes (ex: uso do this) e relacionamento entre classes (atributos de tipos não básicos). Introdução a UML e a Coleções. Roteiro 6.

23/09/09: Coleções e revisão de arrays.

24/09/09: Conceitos da Orientação a Objetos na prática: Encapsulamento, ocultação da informação, padrão Expert. Visão geral sobre a estrutura de dados Map.

30/09/09: Revisão sobre coleções e uso da classe HashMap.

01/10/09: Primeira Avaliação

07/10/09: Interfaces e Polimorfismo

08/10/09: Herança e classes abstratas.

14/10/09: Herança e classes abstratas.

15/10/09: Exercício sobre interfaces, polimorfismo e herança

21/10/09: Tratamento de erros usando exceções

22/10/09: Tratamento de erros usando exceções

28/10/09: Revisão sobre Exceções e mais detalhes sobre classes

29/10/09: Testes de Unidade

4/11/09: Testes de Unidade e Visibilidade em OO

5/11/09: Modelagem de classes usando UML (Visão Geral)

11/11/09: Segunda Avaliação

12/11/09: Regras básicas de Design e refatoramento

18/11/09: Refatoramento (cont.) e Composição de Objetos

19/11/09: Persistência de Objetos com arquivos

25/11/09: Visão geral de interfaces gráficas em Java

26/11/09: Exercícios sobre arquivos e testes JUnit

2/12/09: Entrega dos Projetos/Defesa/ Dúvidas sobre o projeto

3/12/09: Reposição

9/12/09: Entrega dos Projetos/Defesa

10/12/09: Introdução à Programação Concorrente

16/12/09: PROVA FINAL