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:

Miniteste 2

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