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

Entrée/Sortie Java Discussion :

ça se passe comment l'organisation des fichiers source en java


Sujet :

Entrée/Sortie Java

  1. #1
    Débutant Avatar de razily
    Inscrit en
    Février 2009
    Messages
    376
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 376
    Points : 154
    Points
    154
    Par défaut ça se passe comment l'organisation des fichiers source en java
    Bonjour à tous ,
    suis un vrai débutant en java et j'ai assez de connaissance en C et C++ mais j'ai quelque problème sur l'organisation des fichiers !! i-e en C et en C++ il y a une séparation distincte des fichiers .h (prototypes) et .c(cpp) des définitions !!
    i n'y a qu'un seul fichier main et pour inclure on fait include "nom_dufichier.h"!!
    mais en java , j'au dû mal à comprendre !!
    voici un exemple simple :

    premier code et dans un même fichier :
    a noter que Cercle hérite de la classe Point !!

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
     
     
    public class Point  {
     
    		public Point(double x, double y){this.x = x ; this.y = y ;}
     
    	public void deplace(double dx , double dy){this.x += dx;this.y +=dy;}
     
    	public double getX(){return x;}
    	public double getY(){return y;}
     
    	public void affiche()
    	{
    		System.out.println("Point de Cordonnés :" + x +","+ y);
    	}
     
    		private double x, y;
     
     
    		 public static void main(String[] args) {
    				// TODO Raccord de méthode auto-généré
     
     
    					Cercle c = new Cercle(3 , 8, 2.5);
    					c.affiche();
    					c.deplaceCentre	(1, 0.5);
    					c.changeRayon(5.25);
    					c.affiche();
    					Point a = c.getCentre();
    					a.affiche();
     
     
     
     
     
     
    			}
     
     
     
     
    	public class Cercle extends Point
    	{
    	public Cercle(double a,double b,double r) {super(a,b); this.rayon = r;}
    		public void deplaceCentre(double dx,double dy)
    		{
    			super.deplace(dx, dy);
    		}
    		public void changeRayon(double r)
    		{
    			rayon = r ;
    		}
     
    		public Point getCentre()
    		{
    			Point Centre = new Point(getX(),getY()) ;
     
    			return Centre;
    		}
     
    		public void affiche()
    		{
    			System.out.println("Cercles de Centre :" + getX() +","+ getY() + "de rayon"+ rayon);
    		}
     
     
     
    		 private double rayon ;
     
     
     
    	}
     
     
     
    }
    Autre remarque c'est que la classe Cercle est inclu dans l'accolade englobante de la classe Point !!!
    resultat : on m'affiche çà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Aucune instance englobante du type Point n'est accessible. Vous devez qualifier l'affectation avec une instance englobante du type Point (par exemple, x.new A(), où x correspond à une instance de Point).  8O
    deuxième tentative en faisant de la classe Cercle exteriuer i-e détaché de l'accolade fermante de la Classe Point !!
    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
     
     
    public class Point  {
     
     
     
    		 public static void main(String[] args) {
    				// TODO Raccord de méthode auto-généré
     
     
    					Cercle c = new Cercle(3 , 8, 2.5);
    					c.affiche();
    					c.deplaceCentre	(1, 0.5);
    					c.changeRayon(5.25);
    					c.affiche();
    					Point a = c.getCentre();
    					a.affiche();
     
     
     
     
     
     
    			}
     
     
     
    }
    	public class Cercle extends Point
    	{
     
    		 private double rayon ;
     
    	}
    le resultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    le type public Cercle doit être défini dans son propre fichier 8O

    merci d'avance pour vos réponses !!


  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Points : 480
    Points
    480
    Par défaut
    Bonjour,

    Je pense qu'il est plus simple et plus correct de faire deux fichiers séparés.
    Je ne pense pas que l'utilisation d'une Inner class dans ton cas soit judicieux.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut,

    Il ne peut y avoir qu'une seule déclaration de classe publique dans un fichier Java. Ici tu en as deux.
    L'organisation en Java est totalement différente d'en C++ étant donné que tu n'as pas de fichier headers. Pour une classe, déclaration et implémentation se font en même temps en Java.

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    En général, a moins de besoin spécifique ou de classe internes faisant partie d'une implémentation cachée à l'utilisateur de l'API, on fait du une classe=un fichier. Puis on répartit les classe en package afin d'éviter de concentrer toutes les classes d'un projet dans un même répertoire et afin d'avoir un projet/une API dans laquelle on se repère rapidement.

  5. #5
    Débutant Avatar de razily
    Inscrit en
    Février 2009
    Messages
    376
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 376
    Points : 154
    Points
    154
    Par défaut
    çà y est j'ai trouvé en s'appuyant sur vos réponses il est possible mettre plusieurs classe dans un fichier mais en mettant un seul "public" sur l'un des fichier et pus exactement sur le fichier adéquat au nom défini ! et le reste on mettra class !!

    c'est -à dire : dans le fichier A.java :

    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
    public class A {
     
    public A()  // constructeur 
     
    public static main ....{
    ici on peut utiliser A et C
     
    }
    }// fin de la classe A
     
     
    class B {
    }
     
    class C {
    }


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

Discussions similaires

  1. [Système] Organisation des fichiers
    Par Prosis dans le forum Langage
    Réponses: 12
    Dernier message: 11/02/2008, 00h30
  2. Réponses: 2
    Dernier message: 20/12/2007, 18h47
  3. Comment modifier l'encodage des fichiers sources ?
    Par ChPr dans le forum NetBeans
    Réponses: 2
    Dernier message: 01/05/2007, 22h16
  4. Organisation des fichiers du programme
    Par greg13 dans le forum Linux
    Réponses: 2
    Dernier message: 16/03/2007, 16h25

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