Programação Orientada a Objetos (2009.2)
UFPB - Campus IV - Curso de Licenciatura em Ciência da Computação
Carga Horária: 60h
Período: 2009.2
Horário:
Quarta 8h-10h (Laboratório 1 -Garagem e às vezes na Sala 7 - Central de Aulas)
Quinta 8h-10h (Laboratório 1 -Garagem e às vezes na Sala 7 - Central de Aulas)
Horários dos Monitores: Clique aqui
Horários de Atendimento: Quarta e Sexta (10h-12h) ou outro horário a combinar
Minitestes Online:
Grupo de Discussões: http://groups.google.com.br/group/poo_ccae_20092
Notas: http://spreadsheets.google.com/pub?key=tJu0-kJCoHCTC6YojSVobjQ&output=html
Ementa: 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.
Ementa de Linguagens de Programação (disciplina anterior): Orientação a Objetos. Conceitos da Orientação: classes e objetos, abstração, encapsulamento, herança e composição, interfaces e polimorfismo. Introdução a uma linguagem de programação orientada a objetos. Tratamento de Exceções. Arquivos.
Objetivo Geral:
Praticar o uso do paradigma da Programação Orientada a Objetos em uma linguagem que segue esse paradigma (Java). Ao final do curso caberá ao aluno:
Aprofundar seus conhecimentos sobre linguagens orientadas a objetos;
Ter maior familiaridade com ambientes integrados de desenvolvimento;
Implementar sistemas mais elaborados utilizando o paradigma da programação orientada a objetos e bibliotecas da linguagem Java.
Conteúdo Programático:
Unidade I (20 horas):
1. Introdução à linguagem Java e seus ambientes integrados de desenvolvimento (IDEs)
2. Orientação a objetos
2.1. Usando objetos e bibliotecas de Java (Visão geral de análise OO e UML)
2.2. Coleções
2.3. Criação de classes, Tipos Enum, "Annotations"
2.4. Interfaces e polimorfismo
Unidade II (20 horas):
2.5. Reuso com herança
2.6. Tratamento de erros usando exceções
2.7. Técnicas de Depuração
2.8. Testes de unidade
2.9. Visibilidade
2.10. Tipos Genéricos
Unidade III (20 horas):
2.11. Regras básicas de design e refatoramento
2.12. Composição de objetos
2.13. Persistência de objetos com arquivos
2.14. 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.
A nota final será obtida pela média aritmética das 3 notas.
Bibliografia recomendada e referências:
• Tutorial da Sun sobre Java e OO.
• Material do Professor Jacques Sauvè (UFCG)
• Furgeri, Sérgio. Java 6: Ensino Didático: Desenvolvendo e Implementando Aplicações. São Paulo: Érica: 2008.
• Eckel, Bruce.: Thinking in Java, Prentice Hall, 3a Edição, 2002.
• Zakhour et al. The Java Tutorial: A Short Course on the Basics, 4th Edition (Java Series). Prentice Hall, 2006.
• SANTOS, Rafael. Introdução à Programação Orientada a Objetos Usando JAVA. Rio de Janeiro : Campus, 2003.
• 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)
Dúvidas comuns dos alunos em Java
Fontes para Estudar por assunto:
Aulas (para ver slides, acesse as discussões do grupo da disciplina)
03/02/10: Visão geral da disciplina. Visão geral de Java e de programas que recebem argumentos. Roteiros 1, 2 (básicos) e 1_1 (avançado)
04/02/10: Tipos primitivos de Java. Introdução aos comandos condicionais em Java. Manipulação de Arrays. Primeiro miniteste (sondagem).
10/02/10: Operadores lógicos em Java e introdução a testes de unidade usando o JUnit. Uso do switch.
11/02/10: Exercícios sobre testes de unidade e uso de operadores lógicos em Java. Miniteste 2
17/02/10: Feriado (Carnaval)
18/02/10: Não haverá aula (professora em reunião no Campus I)
24/02/10: Operadores, comentários (inclusive Javadoc), laços (for e while) e estruturas condicionais de Java (if e switch-case). Uso do break e continue. Uso da IDE Eclipse. Uso da documentação (API) Java. Atividade: Fazer roteiro 3.
25/02/10: Manipulação de Strings e da classe Scanner. Fazer Roteiros 4 e 5.
03/03/10: Revisão sobre os métodos da classe String (consultando a API Java). Literais em Java. Revisão sobre arrays, operadores, estruturas de controle de fluxo e declaração de métodos em Java. O Garbage Collector em Java. Variáveis de tipo primitivo e tipo objeto (o operador "new").
04/03/10: Introdução à análise Orientada a Objetos. Objetos: campos (estado) e métodos (comportamentos). Outros conceitos: encapsulamento de dados, modularidade, reuso de código, separação de responsabilidades entre classes. Visão geral de objetos através do Robocode. Exercício de análise OO com o jogo Campo Minado. Exercício: Fazer com o jogo da forca educativa a definição dos objetos com seus campos e métodos.
10/03/10: Criação de classes em Java. Declaração de variáveis de instância e métodos. Definição de construtores. Criação e manipulação de arrays de objetos.
11/03/10: Exercícios sobre criação de classes, de objetos dessas classes e de arrays de tais objetos. Entrega do exercício sobre a modelagem das classes principais da forca ou de algum outro projeto. Roteiros 6, 7 e 8)
17/03/10: Revisão de conceitos importantes de orientação a objetos: Encapsulamento, estado e comportamento de objetos, nível de acesso dos elementos de uma classe, métodos get e set, mensagens entre objetos (chamadas de métodos), classes, objetos, instanciação, construtores, uso das palavras reservadas this e new, declaração de métodos não estáticos, visibilidade de métodos, assinatura de métodos, métodos estáticos, recursividade, sobrecarga, pacotes e noções de UML.
18/03/10: Primeiro Estágio
24/03/10: Revisão dos conceitos de Orientação a Objetos. Coleções. Introdução ao ciclo de desenvolvimento de software. Documentação de projetos usando Javadoc e a ferramenta Ant.
25/03/10: Aula de laboratório em que os alunos escrevem as classes principais de seus projetos, mesmo sem preencher os corpos dos métodos e documentam com javadoc os métodos preparados. Exercício: envio do javadoc dessas classes principais até sábado.
31/03/10: Extração de modelo de objetos a partir de código utilizando a ferramenta Jude. Coleções em Java. Introdução ao uso de Map.
01/04/10: Feriado (Semana Santa)
07/04/10: Exercícios sobre Map e Coleções (aplicação nos projetos).
08/04/10: Revisão sobre dicionários (Map). Interface e polimorfismo.
14/04/10: Introdução ao tema "Reuso com Herança". Exercícios sobre Interface, Herança e polimorfismo.
15/04/10: Sem aula presencial: Exercícios sobre Interface, Herança e Polimorfismo.
21/04/10: Feriado (Tiradentes)
22/04/10: Planejado: Mais sobre classes: Tipos Enum e "Annotations". Exemplo de uso do JUnit novo.
28/04/10: Planejado: Tratamento de erros usando exceções
29/04/10:
05/05/10:
06/05/10: Segundo Estágio
12/05/10:
13/05/10:
19/05/10:
20/05/10:
26/05/10:
27/05/10:
02/06/10:
03/06/10: Feriado (Corpus Christi)
09/06/10:
10/06/10: Prova Final