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

C++ Discussion :

petites questions toutes simple pour débutant C++


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2018
    Messages : 3
    Par défaut petites questions toutes simple pour débutant C++
    je suis nouveau ici et j'ai besoin d'aide les gas

    des question pour test C++
    Q1: Je suis un autre nom que l'on peut donner à une donnée membre, je suis ......
    Q2: Je suis le principe selon lequel un objet est responsable de ses données et doit en contrôler l'accès, je suis .....
    Q3: Je suis une forme d'héritage qui permet à une instance d'une classe enfant de faire appel à une méthode du parent, je suis .......
    Q4: Je suis une forme d'héritage qui permet à un enfant d'avoir plusieur parents, je suis ......
    Q5: Je suis le mécanisme qui permet, à travers une méthode disponible dans la classe ancêtre, de faire appel à une méthode spécifique d'une classe enfant, je suis .....
    Q6: Je suis une classe qu'on ne peut instancier bien que mon constructeur soit public, je suis une classe......................

    Merci pour votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 725
    Par défaut
    Q1: un attribut
    Q2: l'encapsulation (ou notion d'interfaces)
    Q3: le polymorphisme
    Q4: le multi-héritage l'héritage multiple
    Q5: un patron de méthode ("template method pattern") (<- lien wiki français)
    Q6: singleton ou usine

  3. #3
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2018
    Messages : 3
    Par défaut
    merci, j'ai d'autres questions suivantes :

    Q1: Je suis un modèle qui décrit ce qui est commun à plusieurs instance, je suis la ...............
    Q2: Dans une situation d'héritage simple et public, il y'a un cas ou une méthode publique de la classe parent, méthode publique qui n'est pas abstraite, ne pourra etres appelée par le biais d'une instance de la classe enfant. décrivez ce cas
    Q3: À quelle condition une classe dérivée d'une classe abstraite peut-elle etres instanciée ?
    Q4: Une interface abstraite opaque qui n'a pas pour but que de dévoiler les méthodes publiques d'une classe dérivée n'a pas à comporter de constructeur, pourquoi ?

    Merci d'avance les amis(e) !

  4. #4
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 725
    Par défaut
    Attend d'autres réponses, je peux me planter

    Q1: classe abstraite/ classe abstraite pure/ une interface
    Q2: un destructeur
    Q3: si toutes les méthodes abstraites pures ont été redéfinies
    Q4: après recherche , on me dit que l'on peut coder le pImpl avec une classe abstraite. Et donc classe abstraite, pas de pointeur, donc pas de constructeur ->


    Q4 - Source boost:
    Another widely used C++ idiom for separating inteface and implementation is to use abstract base classes and factory functions. The abstract classes are sometimes called "interfaces" and the pattern is known as "interface-based programming". Again, shared_ptr can be used as the return type of the factory functions:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    // X.hpp:
     
    class X {
    public:
     
        virtual void f() = 0;
        virtual void g() = 0;
     
    protected:
     
        ~X() {}
    };
     
    shared_ptr<X> createX();
     
     
    // X.cpp:
     
    class X_impl: public X {
    private:
     
        X_impl(X_impl const &);
        X_impl & operator=(X_impl const &);
     
    public:
     
        virtual void f() {
          // ...
        }
     
        virtual void g() {
          // ...
        }
    };
     
    shared_ptr<X> createX() {
        shared_ptr<X> px(new X_impl);
        return px;
    }
    A key property of shared_ptr is that the allocation, construction, deallocation, and destruction details are captured at the point of construction, inside the factory function. Note the protected and nonvirtual destructor in the example above. The client code cannot, and does not need to, delete a pointer to X; the shared_ptr<X> instance returned from createX will correctly call ~X_impl.

  5. #5
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2018
    Messages : 3
    Par défaut
    THX so much .....merci beaucoup

  6. #6
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 286
    Par défaut
    Qa.3, "forme d'héritage qui permet à une instance d'une classe enfant de faire appel à une méthode du parent"
    Le polymorphisme n'est pas une forme d'héritage. Après tous les héritages permettent d'appeler des fonctions membres des parents (que l'on découpe public/protégé/privé, ou implements/inherits), tant que la fonction membre parente n'est pas privée

    Qa.4 On dit plutôt "héritage multiple" en VF

    Qa.5 De nouveau formulation très floue, je pourrai caser polymorphisme, sous-typage, DP template method, NVI...

    Qa.6 Nope. Un singleton est instaciable, une fois seulement, mais instanciable

    Qb.1 Nope. Pas "commun à plusieurs classes", mais "commun à plusieurs instance"

    Qb.2 Si, on peut appeler le destructeur explicitement (et tout faire planter)

    Qb.3 En vocabulaire C++: si elle n'est plus abstraite. Et par définition une classe est abstraite si elle dispose de fonctions membre virtuelles pures -- qu'elles soient héritées et non supplantées, ou juste nouvellement virtuelles pures.

    Qb.4 Il y a toujours une constructeur. Mais il n'est pas obligatoire qu'il soit public (typiquement pour les classes abstraites qu'un constructeur soit public ou protégé ne va rien changer). Pour les classes de collection de services (qui n'ont pas vocation à être détruites polymorphiquement), on peut même mettre des destructeurs protégés non virtuels.
    Après, tant qu'une classe n'a pas à positionner des invariants non triviaux, il n'est pas nécessaire de lui définir explicitement un constructeur. On peut se contenter des constructeurs générés par défaut qui vont laisser les membres POD dans un état quantique non déterminé, et les autres membres construits avec leur constructeur par défaut.
    Je ne vois pas trop ce que vient rajouter le contexte spécifié dans la question -- hormis impliquer qu'une interface bateau n'a pas de données, donc pas d'invariant positionnable à la construction, et de fait pas besoin d'expliciter un constructeur. Sauf qu'une interface va avoir un destructeur (public et virtuel), sa copie interdite (si, si, c'est nécessaire!), et donc des constructeurs deleted.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  7. #7
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 725
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    Qa.6 Nope. Un singleton est instaciable, une fois seulement, mais instanciable
    C'est l'instance d'une donnée membre statique qui est retournée, mais la classe Singleton n'est pas forcément instanciable puisque tu peux utiliser une méthode statique. Comme l'usine.


    Citation Envoyé par Luc Hermitte Voir le message
    Qb.1 Nope. Pas "commun à plusieurs classes", mais "commun à plusieurs instance"
    Effectivement , mais c'est juste une question de contexte


    Citation Envoyé par Luc Hermitte Voir le message
    Qb.2 Si, on peut appeler le destructeur explicitement (et tout faire planter)
    Effectivement , mais jamais je n'ai vu quelque part un bout de code qui appelle un destructeur explicitement.
    Donc, c'est bien ancré que destructeur == pas d'appel explicite (c'est automatique).
    Contrairement à une méthode statique et/ ou constante, parce que j'ai pensé aussi à ces réponses.

  8. #8
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 286
    Par défaut
    Qa6. La seule chose non instanciable est une classe abstraite.
    Par définition un singleton est instanciable au moins (et au plus) une fois. Donc il est instanciable. Que l'on utilise le pattern de Scott Meyers ou des new en interne.

    Qb1. Le modèle commun à plusieurs instance est la classe :p

    Qb2. On va le faire quand on sépare manuellement allocation et construction -- ce que l'on voit en interne des collections standard via std::allocator::destroy(). i.e., quand on utilise les new de placement.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  9. #9
    Membre Expert
    Avatar de Pyramidev
    Homme Profil pro
    Tech Lead
    Inscrit en
    Avril 2016
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Tech Lead

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 503
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    Sauf qu'une interface va avoir [...] sa copie interdite (si, si, c'est nécessaire!), et donc des constructeurs deleted.
    Une interface ne doit pas avoir de constructeur ou d'affectation de copie ou de mouvement avec la visibilité public, mais je pense qu'il est rarement pertinent de les interdire avec = delete. Personnellement, dans une interface, la majorité du temps, je mets les constructeurs et affectations de copie et de mouvement en protected. Comme ça, dans les classes concrètes qui en héritent, je peux profiter de la génération automatique des opérations de copie et de mouvement, quand les variables membres le permettent.

    +1 pour le reste.

    PS : std::allocator::destroy est déprécié en C++17. std::allocator_traits::destroy appelle directement le destructeur si l'allocateur n'a pas de méthode destroy.

  10. #10
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 286
    Par défaut
    Je pense au contraire qu'il est rarement pertinent de permettre copie et affectation au niveau des interfaces, même protégé. Car:
    1- c'est ouvrir la porte au slicing entre les enfants non abstraits
    2- certaines opérations sont incompatibles avec la copie (hash, comparaison) si on veut respecter symétrie, réflexivité, transitivité et LSP.
    3- et que du coup, héritage et copie sont rarement compatibles et mon défaut est l'interdiction. Faire autrement est rangé dans la catégorie refactoring lourd chez moi.

    Oui, j'avais vu la moitié des infos pour destroy(), mais sans prendre le temps de chercher où c'était passé.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  11. #11
    Membre Expert
    Avatar de Pyramidev
    Homme Profil pro
    Tech Lead
    Inscrit en
    Avril 2016
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Tech Lead

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 503
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    2- certaines opérations sont incompatibles avec la copie (hash, comparaison) si on veut respecter symétrie, réflexivité, transitivité et LSP.
    Quel est le rapport avec la copie ?
    Aurais-tu un petit bout de code pour illustrer le problème avec un constructeur de copie et une affectation de copie en protected dans l'interface ?

  12. #12
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 725
    Par défaut
    Je pense que Luc veut dire , ne pas surcharger les classes mères inutilement et/ ou de façon trop transparente, parce que si les classes filles ne prennent pas le temps de [réfléchir à]/ redéfinir ces méthodes (qui peuvent leur être inutile) cela peut entraîner des effets de bord, comme, par exemple:
    • le "slicing" - lors de la copie seule la partie de la classe mère est prise en compte
    • des méthodes qui font n'importe quoi - lors de la copie, la comparaison de 2 empreintes numériques "hashs"

  13. #13
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 286
    Par défaut
    J'avais écrit trop vite. L'incompatibilité, c'est avec l'héritage. Au temps pour moi.
    Le rapport avec la copie est que la comparabilité est l'autre facette de la sémantique de valeur, même si j'ai l'impression que l'on observe un glissement sémantique, où on va maintenant parler d'objet régulier quand copie et comparabilité sont supportés (même s'il n'y a plus de notion d'ordre que l'on avait dans les définitions précédentes de "régulier").

    En résumé de 150 précédentes discussions
    - copie et héritage (public) ne sont pas techniquement compatible à cause du slicing
    - héritage (public) et comparabilités ne sont pas conceptuellement compatibles à cause de l'impossibilité d'avoir symétrie, réflexivité, transitivité et LSP en même temps sur les opérations de comparaison de type égalité
    - copie et héritage sont rarement nécessaires en même temps (on est de nouveau sur le conceptuel)
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  14. #14
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 633
    Par défaut
    Salut,

    En ce qui concerne la notion d'interface, je crois qu'il y a plusieurs cas à prendre en compte:

    Soit on considère de respecter la notion d'interface telle que décrite, par exemple, en java : une classe qui n'expose que des fonctions membre virtuelles pures et qui ne contient aucune donnée propres (à charge pour les classes qui l'implémentent d'apporter les données nécessaire à la définition des fonctions membre).

    Il semble clair que la copie (et l'affectation) n'a de toute manière aucun intérêt avec cette notion, vu que la copie n'agit que sur les données, et que le fait de l'autoriser n'apportera donc absolument rien.

    Par contre, le fait de l'interdire présente pas mal d'avantage, car elle va empêcher le compilateur de mettre en place les processus de copie (et d'affectation) au niveau des classes dérivées. Cela peut servir de "garde fou" au développeur qui (devrait) se rendre compte que "quelque chose cloche" si sa classe concrète est sensée avoir sémantique de valeur; et cette garantie sera toujours "bonne à prendre"

    Soit on considère la notion d'interface d'une manière "plus souple" (et autorisée par le langage) comme... une classe à part entière, permettant d'exposer des comportements clairement définis (grâce aux données membres qui les composent), mais dont l'instanciation doit être effectuée au travers d'une classe dérivée. Cela pourrait prendre une forme proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    class IPositionnable{
    public:
         Position const & position() const;
    protected:
         IPositionnable(Position const &);
         ~IPositionnable();
         void changePosition(Position const & );
    private:
         Position pos_;
    };
    /* voire même */
    class IMovable{
    public:
         void move(/* paramètres nécessaires*/)
    protected:
         IMovable(Position const &);
         ~IMovable();
    private:
    };
    Finalement, on retombe dans le premier cas que j'ai cité : l'interdiction de la copie apporte certaines garanties qui devraient permettre au développeur de se rendre compte qu'"il fait n'importe quoi" en décidant de faire hériter sa classe ayant sémantique de valeur de notre interface.

    Enfin, il y a la possibilité de créer des interface template.

    Nous sommes toujours dans le cadre d'une classe qui n'a pas vocation à être instanciée sans passer par une classe dérivée, mais dont l'objectif principal est de permettre à plusieurs classes d'exposer des comportements similaires, sans forcément être liées par une relation de substituabilité, car MonInterface<Truc> et MonInterface<Machin> n'auront une classe de base commune que si Truc et Machin ont elles-même une base commune.

    Il n'y a que dans ce dernier cas que les choses sont -- à mon sens -- un peu moins claires, car tout dépend de l'usage auquel nous destinons notre interface

    Notez d'ailleurs qu'il faudrait "pour bien faire" créer des politiques distinctes de manière à prendre les différents cas en compte :

    Soit cette interface est destinée à permettre à une hiérarchie de classe d'exposer certains comportements. Dans ce cas, nous nous retrouvons dans une situation totalement analogue au deux premiers cas que j'ai cité, et l'interdiction de la copie fait tout à fait sens.

    Soit cette interface est destinée à permettre à plusieurs classes qui n'ont aucun point commun (en termes de substituabilité, s'entend) entre elles, si ce n'est qu'elles exposent des comportement identiques (mais potentiellement définis de manière différente). Dans ce cas très particulier, il se peut que notre interface soit pressentie pour servir de base à une relation d'héritage avec... une classe ayant sémantique de valeur.

    Bien sur, nous sommes dans une situation très particulière, et donc particulièrement rare, d'héritage dans laquelle le LSP n'a absolument rien à voir dans l'histoire. Mais, du coup, il peut tout à fait faire sens de laisser la possibilité de créer une copie et / ou d'effectuer une affectation à partir de notre interface, ne serait-ce que pour garantir la sémantique de valeur aux classes qui l'implémenteront.

    Au final, je suis très clairement de l'avis de Luc Hermite: de manière générale, et dans la plupart des cas, il est très certainement bien plus intéressant d'interdire la copie (et l'affecttation) des interfaces, même si les classes qui les implémentent devraient déjà avoir pris soin de le faire de leur coté
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  15. #15
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2016
    Messages : 32
    Par défaut
    Citation Envoyé par DJ reda Voir le message
    je suis nouveau ici et j'ai besoin d'aide les gas

    des question pour test C++
    Q1: Je suis un autre nom que l'on peut donner à une donnée membre, je suis ......
    Q2: Je suis le principe selon lequel un objet est responsable de ses données et doit en contrôler l'accès, je suis .....
    Q3: Je suis une forme d'héritage qui permet à une instance d'une classe enfant de faire appel à une méthode du parent, je suis .......
    Q4: Je suis une forme d'héritage qui permet à un enfant d'avoir plusieur parents, je suis ......
    Q5: Je suis le mécanisme qui permet, à travers une méthode disponible dans la classe ancêtre, de faire appel à une méthode spécifique d'une classe enfant, je suis .....
    Q6: Je suis une classe qu'on ne peut instancier bien que mon constructeur soit public, je suis une classe......................

    Merci pour votre aide
    Ce sont pas des questions pour rentrer à l'UDES à tout hasard ? ^^

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 10/10/2017, 09h22
  2. REST - question simple pour débutant
    Par Koiky dans le forum Services Web
    Réponses: 4
    Dernier message: 06/03/2014, 11h08
  3. petite question toute simple sur les boucles
    Par elmcherqui dans le forum C++
    Réponses: 7
    Dernier message: 21/05/2008, 11h15
  4. petite question de compilation pour débutant
    Par flamant dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 21/09/2007, 16h19
  5. Petit truc tout simple que je comprend pas
    Par Olaf MENJI dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 29/11/2005, 17h56

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