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

avec Java Discussion :

Les classes internes, utilité ?


Sujet :

avec Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 83
    Points : 0
    Points
    0
    Par défaut Les classes internes, utilité ?
    Bonjour,

    Je me pose une question toute bête, qu'elles sont les raisons d'utilisé une classe interne ?
    Car je trouve, surement à tord, que cela alourdit grandement la compréhension du code.

    Merci d'avance

  2. #2
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Bonsoir,

    Je te l'accorde sa allourdi et tu as peut être vu sur wiki et forum que l'avantage c'est que la classe interne à un accès total aux attributs de la classe au dessus.

    Pour ma part je peux te dire que j'utilise ce mécanisme en graphique. Par exemple dans l'un de mes projets je faisais des cartes, donc j'ai fais une classe carte et une classe interne pour l'intérieur de la carte ou je changeais l'image.

    Donc je te dirais que c'est bien quand les 2 classes sont très très liées. Au lieu d'avoir une classe CarteJeuet une classe InterieurCarte j'ai une seule classe CarteJeu.

    Mais c'est une vision dans le cadre d'une utilisation, je n'ai pas une théorie précise et si sa se trouve mon exemple à peut être mieux comme solution mais à l'époque sa fonctionnait .
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Personnellement j'utilise assez souvent les classes internes privées. Ça m'évite d'exposer des classes qui ne servent que pour la bidouille interne d'une autre classe.
    Mais bon, ça a aussi ses limites. Au-delà d'une certaine complexité, il faut éclater en plusieurs classes distinctes.

    Sinon, l'accès direct aux méthodes et membres internes de la classe englobante, est assez pratique pour garder un code concis. Là c'est le contraire d'alourdir, en fait.

    Je pense notamment à l'implémentation d'une Collection, il faut son Iterator avec, et cet Iterator n'est pas utile en dehors de la classe qui le déclare.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Points : 2 657
    Points
    2 657
    Par défaut
    Je dirais que c'est assez utilisé quand tu fais du graphique, pour faire des ecouteurs, sorter ou autre.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 83
    Points : 0
    Points
    0
    Par défaut
    merci de vos réponses

  6. #6
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    une classe interne permet aussi d'exprimer un couplage fort.
    tu as deux principes antagonistes: séparer les fonctions (chaque classe correspond à un comportement) ... mais les deux codes sont intimement liés et interdépendants.
    nota: java différencie les "inner classes" (classe membre d'instance) et les "nested" classes (types statiques enchassés)

    Il y a bien sûr le cas des partages de données ... mais voici un exemple plus surprenant de type enchassé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public abstract class Produit {
      public static class ExceptionStock {
           Produit produitManquant ;
           // etc ...
      }
      //....
      public void achat(int nb) throws ExceptionStock {
      }
    }
    bon on peut discuter de la pertinence de la chose ... mais la classe Produit "utilise" ExceptionStock .... qui utilise "Produit"!
    Les deux classes sont liées (on ne peut compiler l'une sans compiler l'autre) on peut les mettre dans deux codes à part ou dans une classe enchassée.
    Je ne dis pas que la classe enchassée s'impose ici, mais elle a aussi quelques aspects pratiques (on traite des Produit.ExceptionStock).
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Août 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    bjr moi j'utilise les classes internes pour le bricolage de mon application
    que j'ai besoin des traitements en plus je créer une classe interne dédiée ;

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

Discussions similaires

  1. Classes internes locales, pourquoi pas les enums?
    Par OrigineDeLaVie dans le forum Général Java
    Réponses: 10
    Dernier message: 31/10/2013, 09h32
  2. [PHP 5.2] Documentation sur les classes internes PHP
    Par dychentrus dans le forum Langage
    Réponses: 5
    Dernier message: 10/12/2008, 13h55
  3. Comment modeliser les classes internes en UML
    Par Sfaxiano dans le forum UML
    Réponses: 6
    Dernier message: 03/09/2008, 08h34
  4. Uml et les classes internes
    Par sandytarit dans le forum UML
    Réponses: 6
    Dernier message: 15/01/2007, 10h33
  5. Réponses: 31
    Dernier message: 30/03/2006, 16h57

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