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 :

Accessibilité des membres au sein d'une application


Sujet :

Langage Java

  1. #1
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 341
    Points : 1 577
    Points
    1 577
    Par défaut Accessibilité des membres au sein d'une application
    Bonjour,

    Je construis une application basée sur
    * une classe principale qui instancie:
    - une classe gérant les données de toute l'application
    - des classes faisant des traitements spécifiques sur ces données.

    Q1: Comment faire en sorte que les classes de traitement de données puissent accéder à la classe possédant toutes les données ?

    Q2: Est-il possible que les classes de traitement puissent accéder à certains membres de la classe principale, sans utiliser un mécanisme de copie de chaque membres de la classe principale vers ceux de la classe secondaire ?

    Merci & @ bientôt...

  2. #2
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut
    voici un exemple de code répondant à ton besoin :

    Voici la classe de données de l'application :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Model {
     
    	private String data = null;
     
    	public String getData() {
    		return data;
    	}
     
    	public void setData(String data) {
    		this.data = data;
    	}
    }
    voici la classe gérant les données de l'application
    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
    public class Controller {
     
    	private Model model; 
     
    	public Controller(Model model) {
    		this.model = model;
    	}
     
    	public void faireQuelqueChose()
    	{
    		// Récupération des données de l'application
    		String data = this.model.getData();
     
    		/* Traitement des données */
     
    		/* Stockage des données de l'application */
    		this.model.setData(data);
    	}
    }
    Voici la classe principale :
    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
    public class Main {
     
    	private Model model;
    	private Controller controller;
     
     
    	public Main() {
    		model = new Model();
    		controller = new Controller(model);
    	}
     
    	public void executerTraitements()
    	{
    		/* ... */
    		controller.faireQuelqueChose();
    		/* ... */
    	}
     
    	public static void main(String[] args) {
    		Main main = new Main();
    		main.executerTraitements();
    	}
     
    }
    Bien entendu ce n'est qu'un exemple et il existe mille et une facon de faire ce que tu veux.

    Tu peux remarquer que la classe principale instancie les deux autres classe
    Pour que la classe de traitement accède aux données du remarquera que j'ai passé l'objet contenant les données aux constructeur de la classe de traitement. Elle peux donc y accéder par délégation.

    Pour répondre à la deuxième question, tu peux modifier le constructeur afin qu'il prenne en paramètre la classe principale et puisse ainsi accèder à toutes les méthodes publique de cette classe :
    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
    public class Controller {
     
    	private Model model; 
     
    	public Controller(Model model, Main main) {
    		this.model = model;
    		/* Tu peux maintenant acceder a ta classe principale */
    	}
     
    	public void faireQuelqueChose()
    	{
    		// Récupération des données de l'application
    		String data = this.model.getData();
     
    		/* Traitement des données */
     
    		/* Stockage des données de l'application */
    		this.model.setData(data);
    	}
    }
    Et il faut bien sur changer l'instanciation de ta classe de traitement :
    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
    public class Main {
     
    	private Model model;
    	private Controller controller;
     
     
    	public Main() {
    		model = new Model();
    		controller = new Controller(model, this);
    	}
     
    	public void executerTraitements()
    	{
    		/* ... */
    		controller.faireQuelqueChose();
    		/* ... */
    	}
     
    	public static void main(String[] args) {
    		Main main = new Main();
    		main.executerTraitements();
    	}
     
    }

  3. #3
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 341
    Points : 1 577
    Points
    1 577
    Par défaut
    Merci beaucoup pour ces exemples bien détaillés et très clairs.

    Je constate que finallement ce n'est pas si compliqué que cela ( lorsqu'on a de l'ordre dans sa tête )

    S'il existe d'autres solutions, c'est bien, en tout cas je vais mettre celle-ci en pratique, je crois qu'elle me conviendra parfaitement

    Merci encore & @ bientôt.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/02/2008, 12h23
  2. Afficher des bitmaps à haute vitesse dans une application fenêtrée
    Par acanicio dans le forum Développement 2D, 3D et Jeux
    Réponses: 9
    Dernier message: 27/10/2006, 23h35
  3. Afficher des bitmaps à haute vitesse dans une application
    Par acanicio dans le forum API graphiques
    Réponses: 1
    Dernier message: 27/10/2006, 11h03
  4. Réponses: 7
    Dernier message: 27/10/2005, 15h24

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