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

BOUML Discussion :

List Generics en Java & Reverse


Sujet :

BOUML

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 24
    Points : 39
    Points
    39
    Par défaut List Generics en Java & Reverse
    Bon voila, j'ai une question simple, (je te l'ai envoyé en mail, mais ça peut intéresser du monde).

    Est-ce que les generics Java sont supportés lors d'un reverse?

    Par exemple, si j'ai le code :
    public class Magasin {
    private ArrayList<Film> films = new ArrayList<Film>();
    }
    ... est-ce que le reverse va me retrouver une relation (1..n) entre la classe Magasin et Film ?

    J'ai pas l'impression que ça marche malheureusement... ou bien je m'y prends mal ??

  2. #2
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 533
    Points : 6 709
    Points
    6 709
    Par défaut
    Citation Envoyé par pomauguet
    Est-ce que les generics Java sont supportés lors d'un reverse?
    Absolument, et ce depuis la version 2.14.4

    Citation Envoyé par pomauguet
    public class Magasin {
    private ArrayList<Film> films = new ArrayList<Films>();
    }

    ... est-ce que le reverse va me retrouver une relation (1..n) entre la classe Magasin et Film ?
    le reverse ne cree pas une relation mais l'attribut films de type ArrayList<Film>

    ceci est tout a fait légal, et si on genere le code a partir du modele obtenu on retrouve le code d'origine

    Ceci dit je comprends que tu aurais préféré une relation vers Film avec le stereotype ArrayList (ou un equivalent produisant ArrayList en Java via les generation settings), c'est a dire ce que fait très bien le reverse C++.

    J'avoue donc avoir été un peu 'faineant' de ce coté lors de l'ajout des generics, mais bon, ce n'est sans doute que partie remise !

    Par contre il n'y a aucune chance que le reverse donne une multiplicite de 1..n car il n'y a aucun moyen de savoir cela, la multiplicite est donc laissée vide par le reverse (C++ compris)

    Citation Envoyé par pomauguet par mail
    Petite requête en passant, les ArrayList ont remplacé les Vector en Java, donc ce serait pas mal aussi de changer ce paramètre par défaut du logiciel (même si je sais qu'on peut facilement le modifier en l'état actuel, mais disons que ce serait plus proche de la réalité).
    c'est l'eternel probleme de la compatibilite, comment savoir ce qui est utilise ? je prefere proposer quelque chose qui marche certainement plutot que quelque chose qui demande trop en terme de version java


    bonnes modelisations
    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

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 24
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par bruno_pages
    le reverse ne cree pas une relation mais l'attribut films de type ArrayList<Film>

    Ceci dit je comprends que tu aurais préféré une relation vers Film avec le stereotype ArrayList (ou un equivalent produisant ArrayList en Java via les generation settings), c'est a dire ce que fait très bien le reverse C++.
    Oui, je confirme, ça serait vraiment du bonheur d'avoir la relation plutôt que l'attribut

    Citation Envoyé par bruno_pages
    Par contre il n'y a aucune chance que le reverse donne une multiplicite de 1..n car il n'y a aucun moyen de savoir cela, la multiplicite est donc laissée vide par le reverse (C++ compris)
    Ca me surprend. Si j'utilise une ArrayList ou un tableau pour un attribut de classe, c'est bien que j'attends une variable éventuellement multivaluée.
    Dans ce cas, l'outil peut, sans faillir, déduire une cardinalité 0..n (pour faire large). Après, c'est vrai que c'est soit 0..n, soit 1..n, soit une valeur numérique unique (dans des cas très particuliers) mais je pense que l'outil pourrait de prime abord déduire une cardinalité 0..n, quitte ensuite à permettre à l'utilisateur d'écraser la valeur et faire en sorte que cette valeur ne soit pas réécrasée lors d'un nouveau reverse. (bon ok, cette partie sur la préservation de la valeur de la cardinalité mise explicitement par l'utilisateur n'est peut être pas SI évidente à faire ;-))

    ... les ArrayList ont remplacé les Vector en Java ...

    c'est l'eternel probleme de la compatibilite, comment savoir ce qui est utilise ? je prefere proposer quelque chose qui marche certainement plutot que quelque chose qui demande trop en terme de version java
    Je pense différemment. D'une part, il y a un choix par défaut qui, s'il utilisait les ArrayList, pourrait convenir à 99% des gens actuellement (sans exagérer) ; les ArrayList existent depuis le JDK 1.2 et doit dater de 1999. D'un autre côté, certes ça pourrait bloquer les quelques rares personnes qui s'acharneraient à utiliser le JDK 1.1.8, mais alors dans ce cas, pourquoi ce ne serait pas ces rares personnes qui aient à modifier la conf par défaut de la génération (et mette Vector), plutôt que l'inverse?

    [Ca me fait penser à ces applis web qu'on m'imposait de faire en résolution 800x600. L'argument était acceptable en 2000, mais qu'on me fasse les mêmes remarques en 2005, là je commençais à ne plus être d'accord.
    On peut laisser un certain temps de latence, mais au bout d'un moment, il faut un peu forcer les choses, quitte à imposer un choix à une minorité. Sinon l'informatique continue à évoluer, et on se retrouve à utiliser continuellement des outils dépassés... ]

  4. #4
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 533
    Points : 6 709
    Points
    6 709
    Par défaut
    Citation Envoyé par pomauguet
    Après, c'est vrai que c'est soit 0..n, soit 1..n, soit une valeur numérique unique (dans des cas très particuliers)
    c'est déjà suffisant pour ne rien faire, de plus en le laissant vide l'utilisateur voit plus facilement qu'il a a faire quelque chose

    Citation Envoyé par pomauguet
    ...faire en sorte que cette valeur ne soit pas réécrasée lors d'un nouveau reverse
    aucune de chance qu'il y est ecrasement : un reverse cree et ne modifie pas, sinon c'est du roundtrip (pas encore dispo sous Bouml)

    D'une part, il y a un choix par défaut qui, s'il utilisait les ArrayList, pourrait convenir à 99% des gens actuellement (sans exagérer) ; les ArrayList existent depuis le JDK 1.2 et doit dater de 1999. D'un autre côté, certes ça pourrait bloquer les quelques rares personnes qui s'acharneraient à utiliser le JDK 1.1.8, mais alors dans ce cas, pourquoi ce ne serait pas ces rares personnes qui aient à modifier la conf par défaut de la génération (et mette Vector), plutôt que l'inverse?
    encore une fois parce que dans un sens cela produit une erreur, et pas dans l'autre.

    D'autre part pour tes 99% : personnellement j'ai une vieille jdk sans les generics (pour etre sure de ne pas utiliser du trop neuf cote Java lors de mes essais), et par exemple mon collegue de bureau ne veut pas en entendre parle, donc 100% sans
    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

  5. #5
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 533
    Points : 6 709
    Points
    6 709
    Par défaut
    Bonjour,

    Citation Envoyé par pomauguet
    Oui, je confirme, ça serait vraiment du bonheur d'avoir la relation plutôt que l'attribut
    j'ai amélioré le reverse dans la version 2.25.1 pour qu'il ne produise plus systématiquement des attributs lorsque le type est un générique mais, autant que faire ce peut, des relations

    bonnes modélisations
    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

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 24
    Points : 39
    Points
    39
    Par défaut
    Merci Bruno. J'ai testé ça ce we et ça marche parfaitement !

Discussions similaires

  1. Java.developpez.com repris sur la liste des Virtual Java User Group
    Par Mickael Baron dans le forum Général Java
    Réponses: 1
    Dernier message: 04/12/2012, 16h36
  2. [AJAX] Listes des frameworks Java
    Par jdelges dans le forum Frameworks Web
    Réponses: 18
    Dernier message: 17/12/2008, 22h41
  3. Generic et java 1.6
    Par guis14 dans le forum Langage
    Réponses: 1
    Dernier message: 24/04/2007, 15h57
  4. Réponses: 4
    Dernier message: 16/10/2005, 18h30

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