Object-Oriented Design & Patterns

Cay S. Horstmann

Chapitre 7

Le modèle Objet Java

Matière du chapitre

Types

Types Java

Exercise: Quel genre de type ?

Valeurs Java

Exercise: Quel genre de valeur ?

Relation de sous-type

S est un sous-type de T si

Exemples de sous-type

Exemples de sous-type

.

ArrayStoreException

Références tableau

.

Classes "Wrapper"

Types énumérés

Typesafe Enumerations

Requête sur le type

La classe Class

Un objet Employee vs un objet Employee.class

.

Requête sur le type

Types tableau

Object : La superclasse cosmique

La méthode toString

Redéfinir la méthode toString

Redéfinir toString dans une sous-classe

La méthode equals

Redéfinir la méthode equals

Redéfinir la sous-classe equals

Les méthodes equals ne sont pas toutes simples

La méthode Object.equals

Exigences pour la méthode equals

Fixer Employee.equals

La méthode equals parfaite

Hachage

Hachage

Copie légère et profonde

Clonage

.

Clonage

L'interface Cloneable

La méthode clone

public class Employee 
implements Cloneable
{
public Object clone()
{
try
{
return super.clone();
}
catch(CloneNotSupportedException e)
{
return null; // won't happen
}
}
...
}

Clonage léger


Clonage profond

public class Employee 
implements Cloneable
{
public Object clone()
{
try
{
Employee cloned = (Employee)super.clone();
cloned.hireDate = (Date)hiredate.clone();
return cloned;
}
catch(CloneNotSupportedException e)
{
return null; // won't happen
}
}
...
}

Clonage profond

.

Clonage et héritage

Sérialisation

Sérialisation

Comment fonctionne la sérialisation

Comment fonctionne la sérialisation

.

Sérialiser des classes non-sérialisables

Réflection

Réflection

Énumérer les champs

Énumérer les constructeurs

Obtenir une seule description de méthode

Invoquer une méthode

Inspecter les objets

Inspecter les objets

Inspecter les éléments d'un tableau

Types génériques

Méthodes génériques

Limites d'un type

Limites d'un type

Wildcards

Wildcards

Wildcards

Wildcards

Effacement de type

Limitations de la généricité

Limitations de la généricité

Composants

Un environnement de développement



Java Beans

Java Beans

.

Un calendrier Bean



Une feuille de propriétés

 

La classe Façade

Le pattern Façade

Contexte
  1. Un sous-système est composé de plusieurs classes, ce qui rend l'utilisation compliquée pour l'utilisateur
  2. Les développeurs peuvent vouloir modifier les classes du sous-système
  3. On veut donner un point d'entrée cohérent
Solution
  1. Définir une façade qui expose toutes les capacités du sous-système comme des méthodes
  2. Les méthodes de la façade delègue les requêtes aux classes du sous-système
  3. Les classes du sous-système ne connaîssent pas la classe façade

Pattern Façade

  .

Pattern Façade

Nom dans le patron de conception
Nom actuel (Beans)
Client
Outil de développement
Facade
Les classes principales du bean avec lesquelles l'outils interagit
SubsystemClass
La classe utilisée pour implémenter la fonctionnalité du bean

Propriétés d'un Bean

Syntaxe d'une propriété

Convention de nommage Java

Éditer des Beans dans un outil de développement


Éditer des Beans dans un outil de développement



Empaqueter un Bean

Composer des Beans

Composer des Beans