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