Métodos Avançados de Programação

(Design Orientado a Objeto)

Período: 2001.2

As Pessoas A Disciplina A Avaliação Outros
Professor Objetivos Forma de avaliação Datas Importantes
Monitor Programa Notas dos Alunos Lista de Discussão
Alunos Plano de Aulas Avaliação da disciplina Recursos
  Bibliografia Projeto  
  Material da disciplina (html on-line) Auto Avaliação  
  Material da disciplina (html zipado)    
  Material da disciplina (pdf) Gabaritos  

Professor: Jacques Philippe Sauvé

Horários das Aulas e de Atendimento a Alunos pelo Professor

Monitor: Não há

Alunos

Aluno Observação
   
   
   
   
   
   
   
   
   
   
   
   
   

Plano de Aulas

Dia Planejado Dia Realizado

Assunto

1

7/1/2002

  Verificar habilidade de programação dos alunos (se sabem OO, se programam muito, em que linguagens)
Anunciar URL da disciplina: http://jacques.dsc.ufpb.br/cursos/2001.2/map
Pegar lista de alunos com e-mail
Falar da auto-avaliação
Pedir para não imprimir nas impressoras da Universidade
Avisar para todos olharem as datas importantes
Objetivos da disciplina
Programa da disciplina
Trabalhos e critérios de avaliação

1. Facetas da Reusabilidade de Software

Para ajudar no Projeto, vamos agora pular para o meio da matéria:

2

9/1

 
3

14/1

 

3. Software Baseado em Componentes

3.1 O que são componentes?

4

16/1

 

3.2 Aspectos técnicos do desenvolvimento baseado em componentes

5

21/1

  [Buffer de contingência para as aulas]
6

23/1

 

3.3 Construção de componentes: JavaBeans

7

28/1

 

3.3 Construção de componentes: JavaBeans

8

30/1

  Agora, voltamos à ordem normal do programa.

2. Design Patterns

2.1 O que são Design Patterns?
2.2 Elementos essenciais de um Design Pattern
2.3 Padrões para atribuir responsabilidades: Expert
2.4 Padrões para atribuir responsabilidades: Creator

9

4/2

 

2.5 Padrões para atribuir responsabilidades: Baixo Acoplamento
2.6 Padrões para atribuir responsabilidades: Alta Coesão

10

6/2

  [Buffer de contingência para as aulas]
11

18/2

 

2.7 Design Pattern básico: Interfaces e polimorfismo
2.8 Design Pattern básico: Herança versus composição

12

20/2

 

2.9 Padrões arquiteturais: Camadas, partições, MVC

13

25/2

 

2.9 Padrões arquiteturais: Camadas, partições, MVC

14

27/2

 

2.10 Design Pattern: Factory Method
2.11 Design Pattern: Singleton

15

4/3

  [Buffer de contingência para as aulas]
16

6/3

 

2.12 Design Pattern: Abstract Factory
2.13 Design Pattern: Iterator

17

11/3

 

2.14 Design Pattern: Composite
2.15 Design Pattern: Strategy

18

13/3

 

2.16 Design Pattern: Decorator
2.17 Design Pattern: Template Method

19

18/3

 

2.19 Comentários finais sobre Design Patterns

Voltando ao capítulo 3, sobre Componentes.

j2ee1.1 Introdução e Motivação: Arquiteturas em n Camadas

20

20/3

 

[Buffer de contingência para as aulas]

21

25/3

 

j2ee1.2 A arquitetura J2EE
j2ee1.3 Desenvolvimento de Aplicações J2EE: Papeis, Composição e Deployment

22

27/3

 

j2ee 2.1 Introdução a Containers Web: A Primeira Aplicação Web com Servlets

23

1/4

 

j2ee 2.2 Programação de Servlets: Acesso a Bancos de Dados com JDBC

24

3/4

 

j2ee 2.2 Programação de Servlets: Acesso a Bancos de Dados com JDBC

25

8/3

  [Buffer de contingência para as aulas]
26

10/4

 

4. Frameworks

4.1 O que é um framework?
4.2 Vantagens e desvantagens no uso de frameworks
4.3 Tipos de frameworks
4.4 Uma lista de frameworks

27

15/3

 

4.5 Detalhamento de um framework horizontal: JUNIT

28

17/4

 

4.6 Detalhamento de um framework vertical: Accounts

29

22/4

 

4.7 Construção de frameworks: Um processo evolutivo

30

24/4

  [Buffer de contingência para as aulas]
31

29/4

  [Buffer de contingência para as aulas]
32

1/5

  [Buffer de contingência para as aulas]
33

6/5

  Prova Final

Bibliografia

Atenção! Este é um curso avançado e exige-se que você leia o material associado à disciplina antes das aulas. Por este motivo, as aulas terão um ritmo rápido. Leva suas dúvidas para a aula.

Os exemplos da disciplina são dados em Java. Se você não conhece a linguagem, leia um livro sobre Java agora. Recomendamos Thinking in Java.

Espera-se que você leia os livros recomendados. Quem não fizer isto dificilmente poderá acompanhar a disciplina. Quem o fizer aprenderá muito.

Bibliografia Recomendada

  1. [Design Patterns] Design Patterns: Elements of Reusable Object-Oriented Software, Gamma, Helm, Johnson e Vlissides, Addison-Wesley, 1995.
  2. [Componentes] Component Software - Beyond Object-Oriented Programming, Szyperski, Addison Wesley, 1999.
  3. [Frameworks] Building Application Frameworks : Object-Oriented Foundations of Framework Design, Fayad et. al., John Wiley & Sons, 1999.

Bibliografia Adicional

  1. Refactoring : Improving the Design of Existing Code, Fowler, Beck, Brant, Opdyke, Roberts, Addison-Wesley, 1999.
  2. Anti-Patterns: Refactoring Software, Architectures, and Projects in Crisis, Brown, Mowbray, Malveau, McCormick, Wiley, 1998.
  3. Java Application Frameworks, Govoni, John Wiley, 1999.
  4. Analysis Patterns - Reusable Object Models, Fowler, Addison-Wesley,1997.
  5. Java Design, Coad, Prentice Hall, 1997.
  6. Software Reuse - Architecture, Process, and Organization for Business Success, Jacobson, Griss e Jonsson, Addison-Wesley,1997.
  7. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design, Larman, Prentice-Hall, 1998.
  8. Objects, Components, and Frameworks with UML - The Catalysis Approach, D'Souza e Wills, Addison-Wesley,1999.
  9. Mastering EJB II, Roman (a sair)
  10. EJB Design Patterns (a sair)

Avaliação

A avaliação será feita através de:

O curso é baseado em grande parte num projeto de desenvolvimento envolvendo os assuntos do curso. Uma alternativa de projeto é dada aqui mas você poderá desenvolver outro projeto se assim desejar (e se assim me convencer!). Permitirei que uma equipe invente um projeto utilizando EJB, por exemplo, mas só se o sistema assim desenvolvido for interessante e não trivial. Poderá formar equipe com uma (e apenas uma) pessoa. O projeto é importante e você deverá trabalhar duro para completá-lo. É assim que vai aprender algo.

O projeto será avaliado através de 6 milestones distintos. Os detalhes do que deve ser entregue para o professor estão aqui.

Os pesos atribuídos aos vários eventos de avaliação são indicados abaixo. Perde-se 5% do valor da nota dada a um milestone do projeto para cada dia de atraso na entrega.

Evento de avaliação

Peso

Minitestes 72%
Milestone 1 4%
Milestone 2 4%
Milestone 3 4%
Milestone 4 4%
Milestone 5 4%
Milestone 6 8%

Datas Importantes

Milestones entregues via e-mail para jacques@dsc.ufpb.br, mesmo que não haja aula na data especificada, por algum motivo.

Milestone 1 04/02/2002
Milestone 2 18/02/2002
Milestone 3 11/03/2002
Milestone 4 01/04/2002
Milestone 5 15/01/2002
Milestone 6

(Marque uma demo com o professor)

06/05/2002

Recursos

Outras Disciplinas do Professor Com Assuntos Relacionados

Sobre Orientação a Objetos em Geral

Sobre o Framework de Testes JUNIT (para Java)

Sobre Design Patterns

Sobre Design Patterns para Enterprise JavaBeans

Sobre Pedagogical Patterns

Sobre Testing Patterns

Sobre Componentes

Sobre Componentes J2EE/EJB

Sobre Frameworks

Sobre Refactoring

Sobre Extreme Programming

Outros bons links