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 :

[Design/ID] Relation de dépendance entre composants


Sujet :

UML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de ze_corsaire
    Inscrit en
    Décembre 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2007
    Messages : 240
    Par défaut [Design/ID] Relation de dépendance entre composants
    Bonjour,

    Soit l'interface (terminologie Java) InterA dans un composant logiciel CompA et un classe ClassB implémentant InterA dans un composant CompB. Quelle est alors la relation induite sur les composants CompA et CompB ?

    Merci,

  2. #2
    ndp
    ndp est déconnecté
    Membre expérimenté Avatar de ndp
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 227
    Par défaut
    Salut,

    la reponse n'est pas dans la question? je n'ai peut etre pas compris.

  3. #3
    Membre éprouvé
    Inscrit en
    Août 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 113
    Par défaut
    ClassB.java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import InterA;
    ClassB implements InterA {
    }
    et dans InterA.java, aucune reference a ClassB.

    donc :
    CompB dépend de CompA (des la compilation).

  4. #4
    Membre expérimenté Avatar de ze_corsaire
    Inscrit en
    Décembre 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2007
    Messages : 240
    Par défaut
    Une dépendance ça c'est sûr, mais j'ai vu qu'il existait (en tout cas sous RSD) une relation "Réalisation de composant". Aussi, dans quelles circonstances peut-on dire qu'un composant "réalise" un autre composant ?


  5. #5
    Membre éprouvé
    Inscrit en
    Août 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 113
    Par défaut
    Il me semble que cette relation soit plutôt entre CompB et ClassB (ClassB réalise l'implémentation de l'interface de CompB).
    Le composant est du coté du triangle (c'est l'abstraction).
    (apres lecture rapide de UML superstructure : ComponentRealization).

  6. #6
    Membre expérimenté Avatar de ze_corsaire
    Inscrit en
    Décembre 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2007
    Messages : 240
    Par défaut
    Ok, merci pour la référence. Je l'interprète de la même manière, c'est une classe qui peut "réaliser" un composant et non un composant.


  7. #7
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 551
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 551
    Par défaut
    Bonjour,

    Citation Envoyé par ze_corsaire Voir le message
    Soit l'interface (terminologie Java) InterA dans un composant logiciel CompA
    Vous vous creusez la cervelle pour rien car cette phrase n'a pas de sens

    Pour un composant une interface est soit requise soit fournie, une interface n'est pas simplement dans un composant.

    Citation Envoyé par ze_corsaire Voir le message
    un classe ClassB implémentant InterA dans un composant CompB
    De la même façon cette phrase manque de sémantique.

    La seule chose qui compte est : est-ce que CompB fournie l'interface InterA via ClassB qui fait alors partie des classes internes réalisant le comportement de CompB.

    On a donc ça :

    ou ça

    en tout cas aucune relation entre les deux composants
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  8. #8
    Membre expérimenté Avatar de ze_corsaire
    Inscrit en
    Décembre 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2007
    Messages : 240
    Par défaut
    Merci Bruno pour ces indications (tjrs) avisées.
    Cependant, je me pose encore des questions :

    1) il n'existe donc pas de relations directes inter-composant ? Elles sont décrites implicitement par la concordance de leurs interfaces "fournies" et "requises" respectives.

    2) je reviens encore sur mon exemple, j'ai CompA qui propose un hook par le biais de l'interface InterA à d'autres composants. L'interface est alors définie dans mon composant CompA et dans une classe ClassA de mon CompA je fais appel à InterA.maMethodeARedefinir(). Le composant CompA ne propose pas d'implémentation de cette interface. Cette interface, pour le composant CompA est-elle "fournie" ou "requise" ou rien de cela ?

    Merci,

  9. #9
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 551
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 551
    Par défaut
    Citation Envoyé par ze_corsaire Voir le message
    1) il n'existe donc pas de relations directes inter-composant ? Elles sont décrites implicitement par la concordance de leurs interfaces "fournies" et "requises" respectives.
    tu pourrais utiliser des dependencies, mais sauf erreur de ma part elles n'ont pas de signification normé entre les composants (il faudrait que tu vérifie dans la norme)

    Citation Envoyé par ze_corsaire Voir le message
    L'interface est alors définie dans mon composant CompA
    Encore une fois cette phrase n'a pas de sens

    Tu confonds composant et source (artifact)

    Citation Envoyé par ze_corsaire Voir le message
    dans une classe ClassA de mon CompA je fais appel à InterA.maMethodeARedefinir(). Le composant CompA ne propose pas d'implémentation de cette interface.
    Requise

    Le but des composants dans UML est le découplage.
    Un composant est remplaçable par n'importe quel autre du moment que le 'contrat' défini par les interfaces acquise/requises est inchangé. C'est pourquoi un composant offre/requière des interfaces et non des classes.
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  10. #10
    Membre éprouvé
    Inscrit en
    Août 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 113
    Par défaut
    bien que le post est resolu, comme le dit Bruno :
    Citation Envoyé par bruno_pages Voir le message
    Tu confonds composant et source (artifact)
    Plutôt que de raisonner "en Java", c'est en fait similaire "au C",
    avec l'interface => un fichier .h
    et le composant => un fichier .a, .dll, .so ...

    interface requise (au link) : on connait les symboles, pas d'implémentation
    interface fournie (au link) : on connait les symboles ET (au moins une) implémentation.

    Par contre, la ComponentRealization (cf. superstructure), définit bien une relation de réalisation d'un composant par un classifier.
    La norme dit que c'est une relation "de réalisation (ou d'implémentation)" (entre guillemets la traduction de la norme, j'attire l'attention sur le fait que implémentation est entre parenthèses).
    Il semble donc qu'on puisse avoir aussi bien :
    CompB - - - - -|> CompA (la réalisation, cf. norme),
    ClassB - - - - -|> CompB (l'implémentation, cf. norme)

    ceci étant dit, je ne l'ai jamais utilisé et je ne l'ai jamais vu (a la limite une vague ressemblance avec 'assign class to component' dans Rose, mais qui n'est pas graphique).
    Donc autant oublier ce type de relation pour l'instant.

  11. #11
    Membre expérimenté Avatar de ze_corsaire
    Inscrit en
    Décembre 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2007
    Messages : 240
    Par défaut
    Parfait, merci Bruno et Alex.

    La dernière question d'un Corsaire à la dérive pour détendre l'atmosphère :
    est-ce que le nom Hook (typiquement décrit dans l'exemple précédent) dérive de sa représentation en forme de crochet pour les composants ou le contraire ?

  12. #12
    Membre éprouvé
    Inscrit en
    Août 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 113
    Par défaut
    et bien, pour continuer la torture, revenons au C (noter au passage la forme "en crochet" de cette lettre).

    Je pense que la surcharge de la méthode maMethodeARedefinir() s'apparente plus a un méchanisme de callback que de hook (ou template methode).

    Le mechanisme de hook est quant a lui plus proche du pattern décorateur, avec un méchanisme un peu different.

    cf. wikipedia hook (avec callback en reference),
    et man page malloc_hook (avec code, noter que dans l'appel de malloc, le hook remet en place l'ancien hook, rappelle malloc, puis se remet a la place de l'ancien hook en prevision du prochain appel).

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

Discussions similaires

  1. [Tools] [Virgo/Eclipse] Problème de dépendance entre composants
    Par rodulphe dans le forum Spring
    Réponses: 2
    Dernier message: 18/04/2011, 07h39
  2. Réponses: 0
    Dernier message: 17/08/2010, 15h11
  3. Dépendance entre objets : quel design pattern?
    Par zigxag dans le forum Design Patterns
    Réponses: 3
    Dernier message: 13/12/2007, 10h14
  4. Relation entre composant et variables
    Par argon dans le forum AWT/Swing
    Réponses: 20
    Dernier message: 28/05/2006, 18h39
  5. Relation de dépendance entre résultats : une idée farfelue ?
    Par mdef dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 18/07/2005, 02h04

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