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 :

Question générale sur la POO


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 15
    Par défaut Question générale sur la POO
    Bonjour,
    Je débute en Java et je me pose une question (elle doit même être assez générale à la POO).
    J'ai une classe A.
    J'ai une classe B qui a une champ arraylist d'objet A et plusieurs méthodes susceptibles d'instancier des objets A et de les placer dans cette liste.
    Je me dis que ce serait pas mal que dans le constructeur de A, il y est une instruction qui fasse l'insertion directement dans la liste de l'objet B. Mais pour ça il faut que dans le constructeur de A je passe en paramètre une référence à l'objet B qui crée l'objet A. Mais je ne trouve pas ça beau.
    Une autre solution serait de définir la classe comme classe interne de B, mais ça ne va pas non plus car A doit être publique.
    Y a il une autre solution? ou bien est-ce une hérésie de vouloir faire une chose pareille en POO? (je débute aussi en POO).
    Merci

  2. #2
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonjour,
    Citation Envoyé par Jdubernat Voir le message
    Je me dis que ce serait pas mal que dans le constructeur de A, il y est une instruction qui fasse l'insertion directement dans la liste de l'objet B.
    Très très mauvaise idée : la classe A n'a pas à savoir comment elle sera utilisé et c'est plutôt B qui a une vue plus large, donc B est le mieux placer pour créer autant de A qu'il en a besoin et de les renseigner correctement.

  3. #3
    Membre chevronné
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2007
    Messages : 301
    Par défaut
    Cela ressemble effectivement à une hérésie.

    Tu dis vouloir ajouter dans le constructeur de A l'insertion de l'élément dans B. A ce moment là, cela veut dire que l'on ne peut manipuler A uniquement avec un B et que A n'a de sens que si on travaille avec B.

    Dans ce cas, il serait effectivement judicieux de faire en sorte que A soit masqué dans B où alors qu'il ne puisse être accessible que via B et que ça soit construction soit contrôlé par B.

    Tu pourrais faire quelque chose comme ça :

    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
    public class B {
     
    	private List<A> cA;
     
    	public B() {
    		this.cA = new ArrayList<A>();
    	}
     
    	public void ajouterA() {
    		this.cA.add(new A());
    	}
     
    	public A getA(int ref) {
    		return this.cA.get(ref);
    	}
     
    	public class A {
    		private A() {
    		}
    	}
    }

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 15
    Par défaut
    Bonjour,
    Merci de vos réponses, c'est effectivement ce que je pensais, mais étant débutant, il y avait peut être un aspect de la POO ou de Java que je n'avais pas vu. Par exemple, il y aurait pu avoir un lien qui se crée entre un objet et l'objet qui le crée avec accès à l'objet créateur par un mot clé (genre "super"). Je trouve ce langage tellement beau que je m'attends toujours à trouver une nouvelle pépite cachée.

  5. #5
    Membre chevronné
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2007
    Messages : 301
    Par défaut
    super est un mot clé existant qui est une référence sur la classe que l'on hérite (la super-classe) qui permet d'accéder aux méthodes, constructeurs et membres de celle-ci.

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

Discussions similaires

  1. Question générales sur les IG en Java
    Par link182 dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 18/02/2006, 11h42
  2. [LDAP] Questions générales sur LDAP
    Par guiguisi dans le forum Autres SGBD
    Réponses: 5
    Dernier message: 25/05/2005, 10h05
  3. questions générales sur Java Web Start
    Par Shiryu44 dans le forum JWS
    Réponses: 12
    Dernier message: 11/04/2005, 15h33
  4. question générale sur les conteneurs
    Par tut dans le forum C++
    Réponses: 6
    Dernier message: 01/09/2004, 10h11
  5. Question générale sur les affectations ?
    Par Clemaster dans le forum C++
    Réponses: 5
    Dernier message: 09/08/2004, 17h03

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