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

avec Java Discussion :

que signifie "THIS"("message",nom de classe)


Sujet :

avec Java

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Points : 52
    Points
    52
    Par défaut que signifie "THIS"("message",nom de classe)
    Bonjour,

    que signifie l'expression : "this("message",nom de classe)"...s'il vous plaît.


    Je sais juste que this.attribut renvoie l'attribut de l'instance courante.

    par exemple pour ce constructeur, on a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     public BoitePleineException(Boite boite) {
        this("Boite pleine", boite);

    Je ne comprends pas; je vous remercie pour votre aide

  2. #2
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    C'est un appel à un autre constructeur de la classe dans laquelle tu te trouves.
    Ta classe doit comporter un contructeur du type BoitePleineException(String s,Boite boite)

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Points : 52
    Points
    52
    Par défaut
    Ok, je te remercie, mais quel est l'intérêt d'avoir ce constructeur avec (this) alors que j'ai, en effet,déjà un constructeur qui prend les même paramètres , celui-ci :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     BoitePleineException(String s,Boite boite)

  4. #4
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    Ba dans ton cas l'intérêt c'est d'avoir un message par défaut

  5. #5
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Points : 52
    Points
    52
    Par défaut
    Voici le code complet :


    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
    public class BoitePleineException extends Exception {
      private Boite boite; 
     
      public BoitePleineException() {
      }
     
      public BoitePleineException(String message) {
        super(message);
      }
     
      public BoitePleineException(String message, Boite boite) {
        super(message);
        this.boite= boite;
      }
     
      public BoitePleineException(Boite boite) {
        this("Boite pleine", boite);
      }
     
      public Boite getBoite() {
        return boite;
      }
    }

    Aussi, pourquoi faut il un constructeur sans paramètre et un qui prend un message en paramètre lorsqu'on crée une classe exception.

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,



    Cela permet d'avoir un seul et unique constructeur qui initialise tous les champs (généralement le constructeur qui prend tous les paramètres), et tous les autres constructeurs qui se contente de l'appeler en lui passant toutes les valeurs (en utilisant donc des valeur par défaut pour les paramètres manquant).

    Cela permet d'éviter de dupliquer du code. Par exemple :
    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
    class MaClasse {
     
    	private final int id;
    	private final String name;
    	private int count;
     
    	public MaClasse(int id, String name, int count) {
    		this.id = id;
    		this.name = name;
    		this.count = count;
     
    		// + éventuellement d'autres codes...
    	}
     
    	public MaClasse(int id, String name) {
    		this(id, name, 0);
    	}
     
    	public MaClasse(int id) {
    		this(id, "No name", 0);
    	}
     
    }

    L'intérêt étant que si tu as une modif quelconque à faire lors de la construction, tu n'as qu'à modifier le constructeur MaClasse(int, String, int) et cela impactera automatiquement tous les autres constructeurs : aucun risque d'oubli


    a++

    a++

  7. #7
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Points : 52
    Points
    52
    Par défaut
    Bonjour,

    ok, je comprends maintenant,

    je vous remercie pour toutes vos réponses

  8. #8
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Points : 52
    Points
    52
    Par défaut
    Bonjour,

    j'ai une autre question :

    dans le code que j'ai mis ci dessus, concernant la méthode getBoite...je n'ai pas compris ce qu'elle renvoyait au juste...j'ai testé et ça me donne le message : "boite 1 sur 2"...message que je ne comprends pas...


    J'espère que vous pourriez m'éclairer,

    merci.

  9. #9
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    La méthode te renvoie un objet Boite, a priori on a redéfini la méthode toString pour cette classe, ce qui te donne cet affichage.

  10. #10
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Points : 52
    Points
    52
    Par défaut
    Bonjour,

    tu veux dire que la méthode "getBoite" me retourne la description de la
    classe "boite" dans "toString" ?

    Autre question :

    Je ne comprends pas pourquoi ce code ne marche pas;ça ne m'affiche pas ce message ("erreur,cette boite est pleine "), lorsque j'ajoute une cassette dans une boite pleine...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      public void ajouter(Cassette c) throws BoitePleineException {
       if( getNbCassetteMax()==getNbCassettes())
         throw new BoitePleineException("erreur,cette boite est pleine :",this);
       cassettes[nbCassettes++] = l;
     
      }

  11. #11
    Nouveau Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut quel est l'utilité de "this" et "equals"
    salut à tous
    je suis en train d'apprendre java et je rencontre quelque
    ambiguïtés sur quelque notions et maintenant j'ai besoin
    d'aide pour comprendre la notion de "this" et la notion "equals" et quand les utilisées ??
    et merci

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 22
    Points : 11
    Points
    11
    Par défaut REPONSE DE L'UTILISATION DE THIS
    ZEIDOUN A DIT:
    maintenant j'ai besoin
    d'aide pour comprendre la notion de "this" et la notion "equals" et quand les utilisées ??

    voici un exemple concret:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class xCompte{
    int solde=0;
     
    void affiche() {
    Terminal.ecrireStringln(" "+this.solde") ;
    plus loin dans le main ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class testcompte {
    public static void main(String[]args ) {
    Compte c1=new Compte();
    Compte c2=new Compte();
    c1.affiche();
    c2.affiche();
    ;
    lors du premier appel a la methode affiche this designera c1,
    lors du second appel a la methode affiche this designera c2 ,
    Donc en clair this designe l'objet courant sur lequel la methode est appellé

    Pour equals..cette methode sert a comparer 2 chaines de caractere exemple
    String t="toto";
    String p="paul"
    if(p.equals.(t)) { //renvoie true si les chaines sont identique,donc execute le if

    } else { // a renvoye false et ne sont donc pas indentique

    j'espere que ca ta eclaire ,hesite pas pour plus de question
    @+

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/09/2009, 10h00

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