2. Motivação Aumento da qualidade do software. Nivelamento do conhecimento. Técnico Conceitual Processo Equipe com aprendizado contínuo. Gerar o hábito de questionar: Como vou implementar isso? Como vou testar isso? Como melhorar o processo? Refactoring... Aumentar a compreensão do domínio.
3. Object Todas as classes estendem Object. Os métodos não-finais foram projetados para serem estendidos. Os contratos DEVEM ser obedecidos.
4. Object Todas as classes estendem Object. Os métodos não-finais foram projetados para serem estendidos. Os contratos DEVEM ser obedecidos.
6. equals() Quando NÃO usar: A classe é única (Ex: Thread) Não há interesse em teste lógico. Superclasse já possui equals(). Classe privada. Quando USAR: Quando precisamos de igualdade lógica. Onde será usado? Comparação lógica de objetos. Chave de conjuntos.
7. equals() Contrato Reflexivo x.equals(x) returntrue; Simétrico x.equals(y) returntrue; y.equals(x) returntrue; Transitivo x.equals(y) returntrue; y.equals(z) returntrue; x.equals(z) returntrue; Consistente Várias chamadas retornam o mesmo valor (true ou false) x.equals(null) returnfalse; Atributos derivados podem ser ignorados Atenção Primitivos: usar == Float: usar Float.compare(f1, f2); Double: usar Double.compare(d1, d2);
9. hashCode() Sempre sobreponha hashCode ao sobrepor equals (contrato Object.hashCode). Objetos iguais devem ter o mesmo código hash. Usado em coleções baseadas em hash. Sempre que chamando, o código hash deve retornar o mesmo inteiro. Objetos diferentes podem ter o mesmo código hash.
12. toString() Contrato: “representação concisa, mas informativa, que seja fácil para uma pessoa ler” “Pojo@f9f33525” Boa implementação torna a classe mais agradável de usar. Fácil??? Texto: Teste toString Booleano: true Data: Fri Sep 10 01:44:47 BRT 2010
15. compareTo() Indica a ordem natural da classe. Permite comparações em ordem. Contrato: Mesmo contrato usado no equals. (x.compareTo(y) == 0) == (x.equals(y)) Quando violado o contrato, podem invalidar outras classes, como as coleções ordenadas TreeSet e TreeMap e classes utilitárias Collection e Arrays. Exemplo: Collections.sort(lista);