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

Langage Java Discussion :

Connaître les classes filles


Sujet :

Langage Java

  1. #1
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut Connaître les classes filles
    Salut,
    ca me paraît impossible mais je me demandais s'il y avait un moyen de connaître toutes les classes filles d'une classe mère ?
    Merci d'avance.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 47
    Par défaut
    En effet, il n'y a pas de moyens simples de déterminer les sous classes d'une classe donnée. Néanmoins, il semble que ce soit possible en parcourant toutes les classes ; ce qui n'est vraiment pas optimisé...
    tu peux lire ceci : http://forum.java.sun.com/thread.jsp...sageID=9680662
    et cela :
    http://forum.java.sun.com/thread.jsp...sageID=1816373

  3. #3
    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,

    tu as une idee derriere la tete? je suis curieux, quel est le besoin?

  4. #4
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Hello,
    merci bien pour les liens ^^. Effectivement sans avoir tout détaillé ca me paraît très laborieux et peu efficace.

    Le but est d'éviter des tests de collision/intersection dans un moteur physique entre certaines classes.
    Ex pour un shoot'em up : classes :
    Shot <- PlasmaShot
    Shot <- LaserShot
    Shot <- MissileShot
    Shot <- etc.

    Les tests ne doivent pas être évalués entre les différentes instances de ces classes. La soluce que j'utilise pour l'instant est de stocker une liste de classes à ne pas évaluer le souci et que je dois le faire pour chaque classe et ce n'est pas très pratique en plus ca implique une recherche dans les listes à chaque cycle qui peut être relativement coûteuse.
    ex, pour les constructeurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    PlasmaShot() {
    this.addUncollidableClass(LaserShot.class);
    this.addUncollidableClass(MissileShot.class);
    this.addUncollidableClass(etc.);
    }
     
    LaserShot() {
    this.addUncollidableClass(PlasmaShot.class);
    this.addUncollidableClass(MissileShot.class);
    this.addUncollidableClass(etc.);
    }
    et dans le cycle du moteur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(!solid1.isUncollidableClass(solid2)) {
    // Tests d'intersections
    }
    Je fonctionne également avec un test d'exclusivité plutôt qu'un test d'exclusion mais le problème est le même (addCollidableClass()).
    Il y a sans doute un problème de conception mais je n'ai pas trouvé mieux pour l'instant.

    (D'ailleurs je m'aperçois qu'il faut que je stocke cette liste en statique plutôt que dans chaque instance)

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Pourquoi ne pas utiliser un fichier de configuration qui ferait tout ça ?

    Un zouli petit fichier XML genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <shot type="plasma" class="my.package.PlasmaShot">
      <uncollides type="laser" />
      <uncollides type="missile" />
      ...
    </shot>
    <shot type="laser" class="my.package.LaserShot">
      <uncollides type="plasma" />
      <uncollides type="missile" />
      ...
    </shot>
    Après, tu peux même gérer les autres données directement dans ton fichier de configuration (les dégâts, l'ampleur) et délaisser la partie de gestion de ces données à la classe liée.

  6. #6
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Salut,

    Comment gères tu tes collisions ?

    J'avais fait un jeu de shoot et on avait utilisé des instanceof tout simplement, si c'est un shoot ca peut pas entrer en collision avec un autre shoot

    donc j'avais une fonction collide(Element e) et tout dérivait d'élément (acteurs, tirs, bonus), et je faisais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if(e instanceof Shoot); // ne rien faire
    else
    {
       // traiter la collision selon les autres instanceof
    }
    F.

  7. #7
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Effectivement ca peut être une idée de gérer ca dans un fichier externe, merci pour la réponse, en revanche je devrai stocker ca dans une liste de String comme pour les Class et je ne suis pas sur que cela ait un intérêt flagrant.

    Au sujet de la gestion j'utilise à peu près le même principe j'appelle un onCollideWith(Solid solid) dans le moteur physique, méthode abstraite qui doit être implémentée dans chaque classe mais quand la méthode est appelée les tests d'intersection on déjà été fait donc c'est trop tard.

  8. #8
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Finalement j'ai causé un peu vite je peux en effet utiliser ce système. J'ajoute seulement les classes mères, Shot par exemple et plutôt que de tester comme je le faisais pour la liste des classes à exclure avec uncollidableClasses.contains(Classe), je parcours toute la liste en testant les types avec instanceof.
    Merci pour la soluce ^^

  9. #9
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Salut,

    De rien

    Au passage pour tes collisions, la classe Rectangle2D a une fonction intersects(Rectangle2D) toute faite, y'a plus qu'à mettre des rectangles invisibles autour de tes sprites et utiliser la fonction dans tes collide

    F.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/05/2011, 14h15
  2. Lister toutes les classes filles
    Par Loceka dans le forum Général Java
    Réponses: 3
    Dernier message: 01/04/2010, 12h46
  3. [PHP 5.2] [POO] Propriétés statiques non partagées par les classes filles
    Par gege2061 dans le forum Langage
    Réponses: 5
    Dernier message: 08/09/2009, 16h25
  4. Connaître les classes
    Par gmailex dans le forum Framework .NET
    Réponses: 2
    Dernier message: 22/10/2007, 08h57
  5. Connaître les classes définies dans un fichier
    Par Tournevyks dans le forum Langage
    Réponses: 2
    Dernier message: 16/10/2006, 17h21

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