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

Ada Discussion :

Package instance d'un package générique


Sujet :

Ada

  1. #1
    Membre éprouvé
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Points : 1 122
    Points
    1 122
    Par défaut Package instance d'un package générique
    Salut

    J'aimerais savoir si il est possible de créer un package qui soit une instance d'un package générique.

    Par exemple j'ai un package générique Liste_Carte. J'aimerais créer un package Pli qui serait en fait simplement une liste de carte particulière pour pouvoir ensuite utiliser ce package Pli dans plusieurs autres packages.

    je pourrais dans mon package Pli faire instancier Liste_Carte et faire un renames pour chaque entrée, mais je trouve ça un peu lourd.
    N'y a-t-il pas un autre moyen de le faire ?
    Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter.

  2. #2
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Points : 493
    Points
    493
    Par défaut
    Citation Envoyé par Celelibi
    [...]je pourrais dans mon package Pli faire instancier Liste_Carte et faire un renames pour chaque entrée, mais je trouve ça un peu lourd.
    N'y a-t-il pas un autre moyen de le faire ?
    Bonjour CeliBibi... ta question est très interessante : à ma connaissance, la solution que tu as déjà trouvé est la seule possible.

    En Ada, un package est consitué de déclaration et donc tu ne peux pas créer un package qui soit seulement une instantiation d'un package générique, parce qu'au yeux de Ada, ce package ne contiendrais rien. Tu pourrais seulement éventuellement rendre ton instantiation de package générique depuis l'extérieur (quoi que même cela, je crois me souvenir l'avoir testé un jour, et ne pas y être parvenu).

    Ce que tu demande souligne une des grande différence qu'il y a entre un package, et les classes qui joue le rôle de package dans d'autre langage (comme Eiffel). Dans ces langage, tu peux créer une classe en héritant d'une autre... mais les packages, eux, n'hérite pas l'un de l'autre, au lieux de cela, il s'utilise l'un l'autre. Tu dois donc (sauf erreur de ma part), effectivement faire comme si tu créais un package, donc l'implémentation serait basé sur un autre (utilisation), et donc effectivement en passé par ces renomage.

    Je comprends que ce soit lourd, mais c'est la conscéquence du fait qu'un package utilise, et n'hérite pas.

    Je te re-écrirai ici si j'ai du neuf à ce sujet

    @+ CeliBibi
    ------------------------------------------------------------
    Sur le web, c'est la liberté qui est gratuite, mais bien évidement pas la consomation ... et encore moins la consomation à outrance
    ------------------------------------------------------------
    Language shapes the way we think, and determines what we can think about [ B. Lee Whorf ] ... mais ce n'est pas tout à fait vrai à 100%...
    ------------------------------------------------------------
    Pascal (FreePascal?) - Ada (Gnat-3.15p)
    XSLT (XSLTProc) - CGI binaires (Ada/C) [ Clavier Arabe ]
    ------------------------------------------------------------

  3. #3
    Membre éprouvé
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Points : 1 122
    Points
    1 122
    Par défaut
    Mais pourquoi fais-tu une faute à mon pseudo ? (et surtout pourquoi insiste-tu dessus en la mettant en majuscule ?)


    En fait c'était pas si terrible, un copier/coller de la spécification de mon package Liste_Carte avec 3 / 4 regex pour ajouter les renames et c'est fait.

    Au moins, cette méthode va me permettre de rajouter des fonctions et procédures pour cette instance du package. Ou bien d'en enlever certaines qui n'ont pas forcément de sens, comme mélanger une main de carte...


    Merci bien Hibou57.


    [edit]
    En fait j'avais uen deuxième solution. Mais il faut d'abbord que j'expose un peu plus le contexte.

    Je suis en train de faire un jeu de carte simpliste.
    J'avais une procédure principale dans laquelle j'instanciais 3 fois le package Liste_Carte pour faire les packages Main, Pli, Paquet.
    Puis j'ai voulu faire un package joueur (qui doit utiliser le package Pli et Main).
    Je ne pouvais pas réinstancier Liste_Carte en Main et Pli à l'interieur de Joueur car les deux instances aurait été incompatibles entre elles.

    Une solution était d'avoir des packages Pli, Main et Paquet indépendants (celle que j'ai adopté).
    L'autre solution était d'avoir Joueur comme package générique avec comme paramètre les packages Pli et Main, eux-même des instances de Liste_Carte instanciés dans le package principal.

    Mais cette dernière solution rendait le code encore plus complexe.
    Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter.

  4. #4
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Points : 493
    Points
    493
    Par défaut
    Citation Envoyé par Celelibi
    [...]Au moins, cette méthode va me permettre de rajouter des fonctions et procédures pour cette instance du package. Ou bien d'en enlever certaines qui n'ont pas forcément de sens, comme mélanger une main de carte...
    [...]
    (tout y est...) C'est très beau ce que tu as écrit là

    Après cette petite lumière sur ta manière penser les choses, je vois bien que le langage Ada te va comme un gant.

    Chouette-chouette et re-chouette ...
    ------------------------------------------------------------
    Sur le web, c'est la liberté qui est gratuite, mais bien évidement pas la consomation ... et encore moins la consomation à outrance
    ------------------------------------------------------------
    Language shapes the way we think, and determines what we can think about [ B. Lee Whorf ] ... mais ce n'est pas tout à fait vrai à 100%...
    ------------------------------------------------------------
    Pascal (FreePascal?) - Ada (Gnat-3.15p)
    XSLT (XSLTProc) - CGI binaires (Ada/C) [ Clavier Arabe ]
    ------------------------------------------------------------

  5. #5
    Membre éprouvé
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Points : 1 122
    Points
    1 122
    Par défaut
    Disons que c'est plutôt ma manière de penser qui s'est adaptée à Ada.

    Vennant du C/PHP/Perl (et autres langages C-Like) j'ai souvent pesté contre Ada quand j'ai commencé avec ce langage. Genre "hein quoi ? je peux pas additionner un char et un int ? elle est où la boucle do ?". Sans oublier les attributs comme 'First et 'Last qui m'ont assez dérouté.

    Mais au final on s'y fait assez bien.
    Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter.

Discussions similaires

  1. [SSIS][2K5] Package commun à tous les packages
    Par grinder59 dans le forum SSIS
    Réponses: 10
    Dernier message: 11/09/2009, 11h14
  2. Java Beans : problème avec l'instance ou le package
    Par Baratribord dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 29/05/2008, 16h18
  3. Appel procédure d'un package depuis un autre package?
    Par Maglight dans le forum Oracle
    Réponses: 1
    Dernier message: 23/03/2007, 14h14
  4. Réponses: 7
    Dernier message: 18/01/2005, 09h13
  5. Ajouter un jar ou un package à un autre package
    Par zoulai dans le forum JBuilder
    Réponses: 6
    Dernier message: 30/07/2003, 10h34

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