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 :

A quoi sert-il d'avoir deux constructeurs ?


Sujet :

Langage Java

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Points : 41
    Points
    41
    Par défaut A quoi sert-il d'avoir deux constructeurs ?
    Bonjour tout le monde,

    J'ai ce code
    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
    public class Client {
     
    	private int no_clt;
    	private String nom;
    	private String adresse;
     
    	public  Vector <Commande> commandes;
     
    	public void setCommandes(Vector<Commande> commandes) {
    		this.commandes = commandes;
    	}
     
    	// ce constructeur contient le vecteur de commande 
    	public Client(int no_clt, String nom, String adresse,Vector <Commande> commandes ) {
    		this.no_clt = no_clt;
    		this.nom = nom;
    		this.adresse = adresse;
    		this.commandes=commandes;
    	}
     
    	public Client(int no_clt, String nom, String adresse) {
    		this.no_clt = no_clt;
    		this.nom = nom;
    		this.adresse = adresse;
    	}
     
    	public Vector<Commande> getCommandes() {
    		return commandes;
    	}
     
    	public String getAdresse() {
    		return adresse;
    	}
     
    	public int getNo_clt() {
    		return no_clt;
    	}
     
    	public String getNom() {
    		return nom;
    	}
     
    	public void setAdresse(String adresse) {
    		this.adresse = adresse;
    	}
     
    	public void setNo_clt(int no_clt) {
    		this.no_clt = no_clt;
    	}
     
    	public void setNom(String nom) {
    		this.nom = nom;
    	}
    }
    Ma question est : puisqu'on a déjà un constructeur qui contient (tout les atributs + le vecteur de commande) est-ce qu'on peut supprimer l'autre constructeur qui ne contient pas le vecteur de commande ?

    Sinon, à quoi sert-il ?

    Merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 25
    Points : 32
    Points
    32
    Par défaut
    Oui, on peut n'utiliser qu'un seul constructeur si on veut.

    On peut même ne mettre aucun constructeur, ou un unique constructeur sans aucun paramètre, et utiliser les "set...(...)" pour alimenter tous les champs un a un.

    A partir du moment où il y a des "set" pour tous les champs, c'est juste pour raccourcir le code d'un utilisateur de la classe Client que tu peux ajouter des constructeurs.

    D'une manière générale, si il y a des champs qui sont obligatoires, ou qui sont rarement laissés à null (comme no_clt je suppose), c'est bien de les proposer dans le constructeur. Ca évitera à l'utilisateur de la classe Client d'écrire une série de "set...(...)" après chaque instanciation d'un client.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Points : 653
    Points
    653
    Par défaut
    Il est important de comprendre que le rôle du constructeur est d'initialiser les attributs.

    Si le vecteur de commande est indispensable, alors il est préférable d'obliger le client d'en passer un au constructeur.

    En revanche, si ce vecteur est optionnel, l'ajout d'un constructeur avec un vecteur en paramètre est juste une facilité qui permet d'initialiser le vecteur si on veut le faire.

Discussions similaires

  1. a quoi sert le constructeur
    Par chek0v dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 02/11/2009, 19h44
  2. A quoi sert XML-Schema
    Par Community Management dans le forum Valider
    Réponses: 20
    Dernier message: 26/01/2009, 09h52
  3. A quoi sert un constructeur ???
    Par jbidou88 dans le forum Langage
    Réponses: 2
    Dernier message: 03/05/2006, 08h48
  4. [info] A quoi sert ImageObserver ?
    Par FrigoAcide dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 22/03/2004, 17h20

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