La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

EJB 2 et spécialisation Présentation. Spécialisation La spécialisation Concept objet implémenté dans les langages dits orientés objet. Très souvent accompagné.

Présentations similaires


Présentation au sujet: "EJB 2 et spécialisation Présentation. Spécialisation La spécialisation Concept objet implémenté dans les langages dits orientés objet. Très souvent accompagné."— Transcription de la présentation:

1 EJB 2 et spécialisation Présentation

2 Spécialisation La spécialisation Concept objet implémenté dans les langages dits orientés objet. Très souvent accompagné du mécanisme appelé héritage. Sert de vecteur au comportement polymorphe des objets.

3 EJB 2 Les spécifications EJB 2 ne supportent pas la spécialisation des composants et donc le polymorphisme. La version EJB 3 devrait remédier à ce problème. Il est possible de simuler la spécialisation avec les EJB 2.

4 Implémentation Pour les EJB Entity CMP version 2 Solution calquée sur celle des schémas relationnels simulant l'héritage. Un EntityBean CMP représente la sur-classe de la dérivation. Plusieurs EntityBean CMP représentent les sous-classes du précédent. L'héritage et le polymorphisme empruntent les relations de type CMR entre la «sur-classe» et ses «sous-classes».

5 Modèle d'analyse

6 Modèle d'implémentation

7 Détails de l'implémentation (1) Pour le comportement polymorphe Un champ CMP est nécessaire pour déterminer le vrai type de l'objet : Aprime ou Aseconde. La méthode abstraite getType() permet de définir le type comme un champ CMP. Le type Correspond à un champ persistant CMP et donc à une colonne d'une table.

8 Schémas relationnels SOLUTION colonne type

9 Détails de l'implémentation (2) Pour le comportement polymorphe (suite) Chaque méthode métier «polymorphe» est présente dans A et implémentée concrètement dans Aprime et Aseconde. Dans A, par exemple : public String methodeMetierPolymorphe() { String type = this.getType(); if(type.equals(''P'') return this.getAprime().methodeMetierPolymorphe(); else if(type.equals(''S'') return this.getAseconde().methodeMetierPolymorphe(); }

10 Détails de l'implémentation (3) Pour le comportement polymorphe (suite) Dans A Les méthodes getAprime() et getAseconde() correspondent aux champs CMR qui par relation permettent à partir de A de récupérer un objet Aprime et Aseconde et inversement. Ce sont des relations bi- directionnelles CMR de multiplicité «one/one». Dans Aprime et Aseconde Symétriquement la méthode getA() permet de récupérer le A correspondant.

11 retrouver les objets Il faut retrouver un A via la méthode findByPrimaryKey(). Puis retrouver l'Aprime ou l'Aseconde correspondant selon le type du A dans la méthode ejbPostCreate() de A via la méthode findByPrimaryKey() du bean concerné (un Aprime ou Aseconde).

12 Créer les objets (1) Deux politiques possibles Créer d'abord un A puis selon son type créer le Aprime ou le Aseconde correspondant. Créer d'abord le Aprime si c'est un Aprime ou le Aseconde si c'est un Aseconde puis le A.

13 Créer les objets (2) La création des objets dépendants peut être de la responsabilité des beans CMP eux- même ou de l'objet Façade. Les relations sont gérées par les champs CMR.

14 Architecture Avec ce type de solution la mise en place du patron de conception (design pattern) Façade est indispensable. L'objet Façade masque la complexité du modèle aux clients.


Télécharger ppt "EJB 2 et spécialisation Présentation. Spécialisation La spécialisation Concept objet implémenté dans les langages dits orientés objet. Très souvent accompagné."

Présentations similaires


Annonces Google