IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

UML Discussion :

[CONCEPTION] [RELATION] Qu'en pensez-vous ?


Sujet :

UML

  1. #1
    Membre expérimenté
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Points : 1 638
    Points
    1 638
    Par défaut [CONCEPTION] [RELATION] Qu'en pensez-vous ?
    Hello,

    Je suis en train de reprendre l'architecture d'un application Web basée sur des portlets.
    Le developpement initial a été fait au fil de l'eau sans se poser trop de questions. Il n'y a pas de séparation des couches, bcp de code dupliqué,etc...

    Je tente de faire du ménage et surtout de batir quelque chose de plus cohérent.

    Après avoir fait pas mal de chose, j'en suis en train d'introduire une couche service entre la controler et le model.
    J'ai identifié des traitements similaires entre les diverses portlets.
    J'ai factorisé ces methodes dans une classe que j'ai appelé GenericRDVService, afin que la couche service de chaque portlet puisse en hériter.
    J'ai fait la même chose avec la couche modele (AbstractRDVDatabase) Chaque portlet possede une classe DataBaseAccess heritant de la AbstractRDVDatabase.

    Mon problème est que dans ma service générique j'ai besoin d'accéder au modele via ma classe AbstractRDVDatabase. le soucis est que cette classe est abstraite et je ne peux pas l'instancier Donc j'ai créé une interface LocalRDVDatabase ainsi que la classe d'implémentation LocalRDVDatabaseImpl (déclaré final, pour que celle ci ne soit pas visible de l'extérieur du package.
    L'interface est la pour restreindre les méthodes disponible dans la classe genericRDVService.

    J'ai fait un diagramme UML représentant les relations décritent ci dessus.elle est en piece jointe au post

    Qu'en pensez vous?
    Je reste à votre disposition pour explication complémentaire...

    Merci d'avance pour votre aide!


    UPDATE : J'ai rajouté une schéma UML avec les packages d'appartenance des classes
    Images attachées Images attachées   
    @+

    Fabszn
    Twitter : @fsznajderman

    N'oubliez pas le bouton
    Comment bien poser ses questions sur le forum


  2. #2
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    je ne suis pas certain de tout comprendre mas pourquoi tu as créé une interface si ta classe générique parle à une instance de cette interface (ta classe LocalXXXImpl) ?
    Je ne comprend pas ta remarque sur le fait que tu ne peux pas manipuler une classe abstraite parce qu'une class abstraite ne s'instantie pas !? Ceux sont 2 problèmes différents.

  3. #3
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    J'ai pas non plus tout compris

  4. #4
    Membre expérimenté
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Points : 1 638
    Points
    1 638
    Par défaut
    Hello,

    Merci de vos réponses!

    En relisant ton post ego, je me rend compte effectivement que ce que j'ai écrit n'a pas trop de sens . et je suis entièrement d'accord avec Ego.

    Après lecture de vos posts , j'ai repris mes diagrammes de conception.. et j'ai compris mon erreur!! (grace à vous, merci!!).

    En fait, depuis que je suis arrivé sur ce projet, j'essaie de remettre un peut de cohérence dans l'architecture de l'application, de faire un peu d'optimisation aussi.
    Rescemment, j'ai introduit une notion de cache sur certaines requêtes SQL. Il y a avait un énorme goulot d'étranglement. J'ai introduit à ce moment là la classe Abstraite AbstractRDVDatabase. Au moment de faire cela, j'avais essayé d'introduire cette notion de separation de couche (réalisation à faire en urgence.. ). Et je n'avais pas eu le temps d'aller au fond des choses. Maintenant je me penche sur ce problème plus sérieusement (et avec plus de temps).
    Après avoir posé ma question et lu vos réponses, je me suis rendu compte d'un problème au niveau de AbstractRDVDatabase.
    Cette classe regroupe des notions de la couche service et de la couche modele. En fait il faut que j'eclate cette classe afin qu'elle devienne plus cohérente et qu'elle limite son champs d'action à celui du modèle. Je pense qu'après avoir fait cela, mes soucis disparaitront.

    Pour expliquer mes choix initiaux (qui non plus lieux d'être maintenant):
    Concernant l'interface, je pensais utiliser l'interface pour limiter l'acces des methodes. Je me rend compte que cela n'a pas trop de sens dans ce context.
    En debut de classe j'executais le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    
    private final static LocaleRDVDatabase databaseLo;
    
    static {
    	//Initialisation 
    	databaseLo = LocalRDVDatabaseImpl.getInstance();
    }
    Et je travaillais dans la classe avec l'objet databaseLo.

    concernant la classe abstraite, je voulais dire que je ne peux utiliser AbstractRDVDatabase qu'au travers d'une classe concrete.
    en effet l'interface et la classe Abstraite non rien a voir ensemble.
    Je me suis mal exprimé sur mon premier post.

    Je vous remercie encore pour votre aide!
    @+

    Fabszn
    Twitter : @fsznajderman

    N'oubliez pas le bouton
    Comment bien poser ses questions sur le forum


  5. #5
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    Regardes peut être ce qui est fait avec le framework Spring, cela te donnera probablement des idées

  6. #6
    Membre expérimenté
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Points : 1 638
    Points
    1 638
    Par défaut
    Hello,

    Merci Ego.

    Si je ne dit pas de bétises Spring est framework de developpement basé sur l'inversion de controle. C'est à dire qu'il reduit au minimum les dépendances entre les modules du application de manière déclarative. Je suis dans le vrai?

    Je vais suivre ton conseil et jeter un coup d'oeil...Actuellement, j'ai déjà une idée assez précise de ce que je veux réaliser. Le problème que j'ai rencontré était lié a un oublie de ma part
    C'est cette classe AbstractRDVDatabase que j'avais fait dans l'urgence qu'il faut que je reprenne (Elle intègre des notions fortes de la couche service et de la couche Modele).
    Je suis dans un environnement de Portail et portlet.

    En tout cas merci encore pour ton aide!
    @+

    Fabszn
    Twitter : @fsznajderman

    N'oubliez pas le bouton
    Comment bien poser ses questions sur le forum


  7. #7
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    oui pour ton histoire de dépendance, c'est bien cela

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Que pensez-vous du concept "ordinateur portable pour développeur"
    Par Hinault Romaric dans le forum Hardware
    Réponses: 66
    Dernier message: 20/06/2015, 22h51
  2. Réponses: 7
    Dernier message: 07/07/2008, 18h09
  3. Borland prépare un EDI pour C# - qu'en pensez vous ?
    Par Marc Lussac dans le forum Actualités
    Réponses: 24
    Dernier message: 23/07/2003, 10h32
  4. Réponses: 13
    Dernier message: 11/05/2003, 13h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo