Java - Construcuteur sans paramète

Résolu/Fermé
thapipo Messages postés 12 Date d'inscription mercredi 6 juin 2012 Statut Membre Dernière intervention 21 février 2014 - Modifié par thapipo le 21/02/2014 à 17:28
thapipo Messages postés 12 Date d'inscription mercredi 6 juin 2012 Statut Membre Dernière intervention 21 février 2014 - 21 févr. 2014 à 20:24
Bonjour,

Je veux savoir comment doit-je créer mon constructeur sans parametre de ma classe Ecole pour pouvoir aller modifier (ajouter/retirer) des membres de ma liste Ecole.

J'ai pensé alors que je dois créer une instance d'ecole (dans ma classe TEST) pour pouvoir accéder aux méthodes de ma classe École. Cependant, ca ne fonctionne pas.

Dans ma classe test, lorsque je fais un

Ecole ecole = new Ecole();

Individus e1 = new Etudiant ();

ecole.ajouterMembre(e1); // <--- Ce bout de code ne fonctionne pas, je n,ai pas acces aux méthodes de ma classe Ecole. Je crois que mon constructeur sans parametres de ma classe Ecole est la cause du problème.

Je veux pouvoir aller ajouter quand je veux des membres qui peuvent être de type Etudiant ou Professeurs.


J'ai une autre classe Individus qui est abstraites et oblige la définition d'autres méthodes mais je sais que ce n'est pas a cet endroit mon problème. Il est dans ma définition de ma classe Ecole.

Merci !

==============================================================


Si j'ai par exemple un code suivant :

Public class Etudiant extends Individus{

String nom;
String prenom;

}

public Etudiant(){
nom = "etudiant"
prenom = "etudiant";
}

=======================
Public class Professeurs extends Individus{

String nom;
String prenom;

}

public b(){
nom = "professeur";
prenom = "professeur";
}
=======================

Ensuite je creer une nouvelle classe public class Ecole

Public class Ecole {

public static Arraylist <Individus> listeMembreEcole;

}


// Ensuite je crer un constructeur sans parametres de ma classe Ecole pour pouvoir accéder aux méthodes de ma classe Ecole

public Ecole(){
}

// Méthodes d'instances


public void ajouterMembre (Individus unIndividus ){

listeMembreEcole.add(unIndividus);

}
A voir également:

2 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
21 févr. 2014 à 18:49
Pour utiliser la liste listeMembreEcole il faut que celle ci soit initialisée, par défaut sa valeur est null ce qui provoquera un NullPointerException.

Il faut donc initialiser la liste, par exemple en faisant
listeMembreEcole = new ArrayList<Individus>();


Attention :

Tu as déclaré listeMembreEcole comme étant static ce qui est faux, car chaque école devra avoir sa propre liste d'individus.

De plus tu l'as mis public, ce qui peux poser d'autres problèmes, notamment laisser la possibilité à n'importe quelle autre classe de modifier sa valeur sans passer par les méthodes de la classe Ecole, ce qui est mal.

Enfin, il est généralement conseillé de ne pas déclarer les objets par leurs classes, mais par leurs interfaces, cela laisse plus de choix quant à l'implémentation (tu pourrais avoir un constructeur qui utilise un ArrayList et un second constructeur qui utiliserait une LinkedList par exemple.

Remarque : il est possible aussi de déclarer ta liste finale, si son contenu est amené à évoluer, il y aurait peut d'intérêt à modifier la liste en elle même.

La bonne déclaration de ta classe Ecole serait donc :

public class Ecole
{ 
    private final List<Individus> listeMembreEcole;

    public Ecole()
    {
        listeMembreEcole = new ArrayList<Individus>();
    }

    public void ajouterMembre(Individus unIndividus)
    {
        listeMembreEcole.add(unIndividus);
    }
}

Remarque : pour des questions logiques, il serait préférable de mettre tes classes au singulier, et ainsi avoir
Individu unIndividu
, ce qui se comprend mieux que
Individus unIndividus
.
0
thapipo Messages postés 12 Date d'inscription mercredi 6 juin 2012 Statut Membre Dernière intervention 21 février 2014 2
21 févr. 2014 à 20:24
Tout est réglé.

Merci pour la réponse et des précieux conseils !
0