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 :

package en JAVA


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 4
    Par défaut package en JAVA
    Salut tout le monde, Alors j'ai un problème concernant la compréhension des packages en JAVA.
    J'arrive pas à comprendre leur concept par exemple dans la classe le prof nous a fait un exemple de plusieurs packages déclarés en même temps dans un fichier .java, et après l'exécution dans le CMD j'ai pas compris la règle qu'il ont suit ces packages. Merci si quelqu'un peut m'expliquer l'exemple suivant:
    code de MyClass1.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    package pc1.pc2.pc3.pc4;
    import pc1.pc2.*; 
    public class MyClass1 {
        public static void main (String[] args) {
        System.out.println("Welcome to the JAVA World!");
        pc1.pc2.MyClass2.MyMethod1();
        }
        public static void MyMethod2() {
        System.out.println("Methode classe 1");
        }
    }
    code de MyClass2.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    package pc1.pc2;
    public class MyClass2 {
       public static void MyMethod1() {
       System.out.println("Methode class 2");
       pc1.pc2.pc3.pc4.MyClass1.MyMethod2();
       }
    }
    lors de la création des packages j'ai pas compris la hiérarchie suivie !!??

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Une classe a un nom court (ex: MaClasse). Mais elle a aussi et surtout nom long constitué du nom du package parent + du nom court de la classe (ex : mon.package.a.moi.MaClasse) qui permet de l'identifier de manière unique. Ce nom long permet de distinguer deux classes qui auraient un même nom court (ex : un.autre.package.MaClasse). Ici, bien que portant le même nom court, mon.package.a.moi.MaClasse et un.autre.package.MaClasse sont deux classes bien distinctes. C'est l’équivalent des espaces de nommage de C++ ou de C#, ça sert à éviter la collision des noms de classe.

    De plus, le package peut permettre de définir en quelque sorte une unité de compilation en définissant un niveau de visibilité autre que public, private ou protected. Ainsi, si on met aucun accesseur devant une variable ou un nom de classe, alors toutes les autres classes dans le même package peuvent y accéder. C'est ce qu'on appelle assez couramment l’accessibilité package protected. De plus, les packages sont totalement indépendant de leurs sous-packages : mon.package.a et mon.package.a.moi sont deux packages bien distincts et le package parent ne voit pas les choses en accessibilité package protected dans son package enfant et inversement l'enfant ne voit pas ceux de sont parent. Donc, on a tendance à regrouper les classes ayant des dépendances fortes dans le même package car elles font partie de la même unité (il suffit de voir le découpage et l'organisation des packages dans le JDK).

    Contrairement à C++ ou C#, Java impose que le code source de MaClasse, le fichier MaClasse.java soit stocké dans une arborescence de répertoires qui a exactement le même chemin que le package (ex : mon.package.a.moi -> arborescence mon/package/a/moi/ sur Linux, Unix ou Mac OS X, mon\package\a\moi\ sous Windows). Lorsque la classe est compilée, le fichier MaClasse.class se trouvera egalement dans une arborescence de répertoires similaire. Donc, dans ton cas MyClass1 doit se trouver dans un répertoire pc1/pc2/pc3/pc4/ et MyClass2 doit se trouver dans un répertoire pc1/pc2/.

    L'import en Java, ne fonctionne pas comme le #include en C ou en C++, il fonctionne plutôt comme le using namespace en C++ et C# : il te permet à toi d’utiliser le nom court des classes dans ton code. Tu pourrais tout aussi bien coder sans faire aucun import mais en utilisant partout le nom long de toute les classes ; c'est possible mais fastidieux. Donc on préfère faire des import et coder en écrivant le nom court. Lors de la compilation, le compilateur remplacera tous les noms courts par les noms longs appropriés dans le code. Quand tu fais import pc1.pc2.*; tu peux alors utiliser le nom court de toutes les classes du package pc1.pc2 dans ton code ; si tu avais fait import pc1.pc2.MyClass2; tu aurais pu seulement utiliser le nom court de pc1.pc2.MyClass2 et tu aurais du écrire le nom long pour toutes les autres classes en provenance de ce package.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 4
    Par défaut Package en JAVA
    Merci pour votre réponse.
    j'ai vu l’emplacement de chaque classe comme tu l'a dit. Mais, j'ai trouvé aussi MyClass2 dans le package pc2 et je n'ai pas trouvé MyClass1 Mais dans le package pc3 j'ai trouvé les 2 classes même on n'a pas déclaré pc3 dans la deuxième classe et ça ce que j'ai pas compris encore. Quelle est la règle suivie dans cette arborescence ??

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    une classe doit se trouver dans un dossier qui correspond à sa directive package en tête de fichier.

    une classe qui contient "package pc1.pc2" doit se trouver dans le dossier pc1/pc2
    une classe qui contient "package pc1.pc2.pc3" doit se trouver dans le dossier pc1/pc2/pc3

    Si cela ne correspond pas, c'est une erreur. Le compilateur acceptera de compiler (en fait il s'en fou), mais en pratique la classe sera inaccessible. Exemple si je déclare dans ma classe A "package pc1.pc2.pc3", et que je la met dans pc1/pc2

    Soit j'importe dans une autre classe "import pc1.pc2.A" => alors il trouvera la classe à l'exécution et lancera une exception car il attendais pc1.pc2.A mais a obtenu pc1.pc2.pc3.A
    Soit j'importe "import pc1.pc1.pc3.A" => alors il ne trouvera pas la classe à l'exécution (pas de fichier pc1/pc2/pc3/A.class) et ça déclenchera aussi une erreur.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 4
    Par défaut package en JAVA
    Merci beaucoup Maintenant que j'ai refait l'exemple; c'était juste.
    Il y avait qq chose qui ça ne va pas.
    Merci encore

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 4
    Par défaut exécution code JAVA
    Salut, stp j'ai travaillé sur certains exemples mais maintenant je suis bloqué dans un truc.
    Alors, j'ai créée une classe MyClass3.java dans le dossier sources le résultat je l'ai posé dans le dossier classes
    dans mon code j'ai utilisé MyClass2 qui se trouve dans un package pc1 stocké dans le dossier lib.
    La question c'est quel est le code qu'il faut utilisé dans l'invite de commande cmd pour exécuter MyClass.java pour voir le résultat ??

Discussions similaires

  1. [wsimport] ne pas générer package-info.java
    Par afrikha dans le forum Services Web
    Réponses: 1
    Dernier message: 13/09/2008, 14h14
  2. les packages en java
    Par sisna dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 22/08/2008, 16h17
  3. [Packaging] projet java ou ejbjar ?
    Par lbillon dans le forum Spring
    Réponses: 1
    Dernier message: 08/08/2008, 22h33
  4. package en java
    Par denzelboy dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 26/05/2008, 16h43
  5. Réutilisation de packages en java
    Par dmeignen dans le forum Forms
    Réponses: 1
    Dernier message: 09/07/2007, 16h27

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