Programação Modular


Índice de Aulas

  1. Aug 2 - Introdução - Fatores de qualidade de software
  2. Aug 4 - Introdução à linguagem Java
  3. Aug 9 - Estudo de caso - Fatorando números inteiros
  4. Aug 11 - Introdução a tipos abstratos de dados
  5. Aug 16 - TADs em Java
  6. Aug 18 - Introdução à programação orientada por objetos
  7. Aug 23 - UML - Diagramas de classes e de estados.
  8. Aug 25 - Polimorfismo paramétrico em Java
  9. Aug 30 - Introdução à estruturas de dados
  10. Sep 1 - Princípios de projeto de classes (OCP e LSP)
  11. Sep 08 - Princípios de projeto de classes (ISP e IDP)
  12. Sep 13 - Princípios da coesão de pacotes
  13. Sep 15 - Primeiro debate: o que é um bom programador
    Sep 20 - Aula de revisão
    Sep 22 - Primeira avaliação
  14. Oct 4 - Padrões de projeto: Composite, Builder, Flyweight
  15. Oct 6 - Padrões de projeto: Visitors, Factory, Singleton
  16. Oct 13 - Implementação de linguages orientadas por objetos
  17. Oct 18 - Tratamento de exceções em Java
  18. Oct 20 - Programação multi-thread em Java
  19. Oct 25 - Invocação remota de métodos em Java
  20. Oct 27 - Reúso via Funções de Alta Ordem
  21. Nov 3 - Inversão de controle
  22. Nov 8 - Desenvolvimento Ágil
  23. Nov 10 - Metodologias de teste de software
  24. Nov 17 - Gerenciamento de memória e coleta de lixo
  25. Nov 22 - POO em linguagens dinâmicas
  26. Nov 24 - Anti-padrões de projeto
    Nov 29 - Aula de revisão
    Dec 1 - Segunda avaliação

Introdução

Conceitos que devem ser entendidos.

Questões para discutir

Leitura


Introdução à Linguagem Java

Conceitos que devem ser entendidos.

Questões para discutir

Leitura


Estudo de Caso - Fatorando números inteiros

Conceitos que devem ser entendidos.

Questões para discutir

Leitura


Tipos Abstratos de Dados

Conceitos que devem ser entendidos.

Questões para discutir

Leitura


TADs em Java

Conceitos que devem ser entendidos.

Questões para discutir

Leitura


Introdução à Programação Orientada por Objetos

Conceitos que devem ser entendidos.

Questões para discutir

Leitura


Diagramas de classes e de estados.

Conceitos que devem ser entendidos.

Questões para discutir

Slides

Leitura


Polimorfismo paramétrico em Java

Conceitos que devem ser entendidos.

Questões para discutir

Slides

Leitura


Introdução à estruturas de dados

Conceitos que devem ser entendidos.

Questões para discutir

Slides

Leitura


Princípios do projeto de classes (OCP e LSP)

Conceitos que devem ser entendidos.

Questões para discutir

Slides

Leitura


Princípios de projeto de classes (DIP e ISP)

Conceitos que devem ser entendidos.

Questões para discutir

Leitura


Princípios da coesão de pacotes

Conceitos que devem ser entendidos.

Questões para discutir

Slides

Leitura


Primeiro Debate: como ser um bom programador.

Conceitos que devem ser entendidos.

O Debate

O objetivo deste primeiro debate é discutir boas práticas de programação. Esta atividade vale cinco pontos, e para consegui-los, você terá de fazer o seguinte:

  1. Escolha um dos tópicos nesta planilha. Você pode saber mais sobre este tópico no blog de Robert Read. Note que Robert Read colocou estas informações também disponíveis no livro How to be a good programmer: A comprehensive Summary.
  2. Prepare uma pequena apresentação (cinco minutos) sobre o tema. Você deverá fazer a sua exposição do tema em sala de aula. As exposições durarão cinco minutos no máximo. A apresentação vale três pontos.
  3. Elabore um pequeno texto sobre seu tópico, e poste em nossa lista de discussão. Esta tarefa vale mais um ponto. A data limite para a postagem será o dia 8/10.
  4. A participação na discussão dos colegas, seja via comentários ou perguntas, em nosso news, lhe garante mais um ponto.

Leitura


Padrões de projeto: Composite, Builder, Flyweight

Conceitos que devem ser entendidos.

Questões para discutir

Slides

Leitura


Padrões de projeto: Visitors, Factory, Singleton

Conceitos que devem ser entendidos.

Questões para discutir

Slides

Leitura


Implementação de linguages orientadas por objetos

Conceitos que devem ser entendidos.

Questões para discutir

Slides

Leitura


Tratamento de Exceções em Java

Conceitos que devem ser entendidos.

Questões para discutir

Leitura


Programação multi-thread em Java

Conceitos que devem ser entendidos.

Questões para discutir

Leitura


Invocação remota de métodos em Java

Conceitos que devem ser entendidos.

Questões para discutir

Leitura


Reúso via Funções de Alta Ordem

Conceitos que devem ser entendidos.

Questões para discutir

Slides

Leitura


Inversão de controle

Conceitos que devem ser entendidos.

Questões para discutir

Leitura


Desenvolvimento Ágil

Conceitos que devem ser entendidos.

Questões para discutir

Slides

Leitura


Metodologias de teste de software

Conceitos que devem ser entendidos.

Questões para discutir

Slides

Leitura


Gerenciamento de memória e coleta de lixo

Conceitos que devem ser entendidos.

Questões para discutir

Slides

Leitura


POO em linguagens dinâmicas

Conceitos que devem ser entendidos.

Questões para discutir

Leitura


Segundo Debate: anti-padrões de projeto.

Conceitos que devem ser entendidos.

O Debate

O objetivo deste segundo debate é discutir práticas de programação que são consideradas ruins, ou seja, exatamente o oposto do que foi feito em nosso primeiro debate. Esta atividade vale cinco pontos, e para consegui-los, você terá de fazer o seguinte:

  1. Escolha um dos tópicos nesta planilha. Eu fiz a lista a partir da página sobre anti-padrões na wikipédia. Você encontrará links para cada um destes tópicos lá. Note, entretanto, que alguns dos tópicos possuem descrição muito sucinta. É preciso que você faça uma pequena pesquisa sobre seu tema. Procure pensar em bons exemplos, que ilustrem a ocorrência do anti-padrão. Se possível, converse com programadores profissionais sobre o tópico que você escolheu.
  2. Prepare uma pequena apresentação (cinco minutos) sobre o tema. Notem que somente 15 alunos serão sorteados para apresentarem seu tópico. O sorteio será feito em sala, em três rodadas. Isto quer dizer que, após a apresentação dos primeiros cinco alunos, mais cinco serão sorteados, e assim por diante. Você deverá fazer a sua exposição do tema em sala de aula, e responderá perguntas logo após. As exposições seguirão o seguinte formado: cinco minutos de apresentação, e dois minutos para responder perguntas. A apresentação vale dois pontos.
  3. A participação na discussão dos colegas, seja via comentários ou perguntas, lhe garante mais um ponto. Tentaremos organizar o debate de forma tal que todos os alunos tenham a chance de fazer sua pergunta ou comentário.
  4. Para este debate não é requerida a discussão pública em nossa lista. Por outro lado, iremos construir um documento compartilhado. Cada estudante, tendo sido sorteado para apresentar seu tópico ou não, deverá escrever uma pequena entrada neste documento. Eu deixei um modelo lá (Abstraction inversion). O importante aqui são exemplos. Procure encontrar mais exemplos, que complementem aqueles disponíveis na wiki. Converse com outros programadores, procure na internet, ou seja criativo e idealize seus próprios exemplos. Esta tarefa vale mais dois pontos.

Leitura