Grupo no Facebook

Prova I: 25/09

Prova II: 30/10

Projeto: 24/11. Temas: 1 – Sistema para gerenciamento de academias (treinos); 2 – Sistema de vendas (mercado); 3 – Sistema para restaurantes (pedidos realizados eletronicamente).

Seminários:

  • 13/11: Prototype (Marcelo e Gabriel), Template Method (Douglas e Wendhel), Visitor (Lindemberg e Sérgio)
  • 17/11: Flyweight (Ewerthon e Felipe), Iterator (Matheus e Francisco), MVC (Kewyn e Lucas), State (Jonathan e João)
  • 20/11: Memento (Jeiseel e Márcio), Proxy (Yan e Jorge), Composite (Marcus e Gabriel), Mediator (Lourival)

Critérios de avaliação: introdução/motivação, exemplo de problema, como implementar na prática, vantagens (e desvantagens, se existir), cumprimento do tempo de duração (20 minutos).

Reposição: 27/11

O que aprendemos até agora?

O que são e a importância dos padrões de projeto. Classes, objetos e encapsulamento; o que é a classe Object, principais métodos, e como funcionam; comparação com equals e ==, casting; composição. Herança e sobrescrita; sobrecarga; polimorfismo (como funciona?). Coesão e acoplamento (lembrar de preferivelmente acoplar-se a entidades estáveis, como as interfaces). Como funcionam os construtores em java. Interfaces e classes abstratas. Exceções: exceções checadas e não-checadas (Runtime). Testes unitários com JUnit. Static – métodos e variáveis de classe. Strategy. Observer. Decorator. Façade. Singleton. Adapter. Threads. Simple Factory. Method Factory. Abstract Factory.

Princípios: 1 – sempre programar para superclasses; 2 – preferir composição à herança; 3 – princípio aberto-fechado.

Keywords: design patterns, equals, instanceof, casting, extends, implements, abstract, overriding, overloading, junit, static, strategy, observer, decorator, façade, singleton, adapter, threads, synchronized.

 

Aulas:

1 – Introdução

2 – Classes, Objetos e Encapsulamento

3 – Herança e Polimorfismo

4 – Interfaces e Classes Abstratas

5 – Exceções

6 – Testes Unitários

7 – Strategy

8 – Observer

9 – Decorator

10 – Façade

11 – Singleton

12 – Adapter

13 – Threads

14 – Factory Method

15 – Padrão Abstract Factory

16 – Command

Notas

Listas:

Lista de Exercício I – Revisão OO.pdf (Prazo: 04/08 07/08)

Lista de Exercício II (Prazo: 01/09)

Lista de Exercício III + HomeTheater.rar (Prazo: 15/09)

Lista de Exercício IV (Prazo: 29/09)

Exercícios – Threads

Lista de Exercício V (Prazo: 29/10)

Exercícios:

1 – Trabalhar o encapsulamento através da implementação do programa da Aula 1: encapsulamento.rar

2 – Fazer a prática de TDD sugerida nos slides 29 e 30 da aula 6.

3 – Praticar os exercícios que tem nos slides da aula sobre Strategy.

4 – Praticar os exercícios que tem nos slides da aula sobre Adapter: TomadasPadraoBrasileiro.rar

5 – Praticar e entender os seguintes códigos: ThreadsExamples.rar

 

Leituras adicionais:

1 – http://www.devmedia.com.br/sobrescrevendo-o-metodo-equals-em-java/26484

2 – https://sergiotaborda.wordpress.com/desenvolvimento-de-software/java/excecoes-boas-praticas-mas-praticas/

3 – http://www.devmedia.com.br/test-driven-development-tdd-simples-e-pratico/18533

4 – Uma boa fonte para sanar dúvidas rapidamente: https://docs.oracle.com/javase/tutorial/essential/concurrency/https://docs.oracle.com/javase/tutorial/essential/concurrency/

5 – Aqui fica claro que synchonized statements são diferentes de métodos synchronized, e que synchronized statements só conseguem criar “locks” sobre objetos, nunca sobre primitivas: https://stackoverflow.com/questions/3047564/java-synchronized-method-lock-on-object-or-method

 

Anúncios