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 :

Utiliser une méthode non-static dans une autre classe?


Sujet :

avec Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Septembre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Septembre 2015
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Utiliser une méthode non-static dans une autre classe?
    Bonjour! Je suis débutant, donc je ne comprend pas encore tout ce que je fait, j'ai peut-être fait une erreur vraiment simple, ou peut-être que ce que je veux faire n'est juste pas possible...

    J'ai d'abord une classe "Cours" dans laquel je créer les résultats scolaires d'un élève pour un cours X, j'ai donc, dans mon constructeur: Nom, Note 1, Note 2, Note 3 et Niveau de difficulté du cours (qui est dans une class Enum à part).
    À la fin j'ai une méthode "getSucces()" que je vais devoir utiliser dans une autre classe, par contre, je dois le laisser public et non-static (obligation du professeur..).
    Classe "Cours.java"
    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
     
    package cours;
     
    public class Cours {
     
    	public final static float PONDERATION_1 = 0.3f;
    	public final static float PONDERATION_2 = 0.45f;
    	public final static float PONDERATION_3 = 0.25f;
    	public final static float POURCENTAGE_DE_PASSAGE = 0.6f;
    	public final static Niveau NIVEAU_DEFAUT = Niveau.BONBON;
    	public final static String NOM_COURS_DEFAUT = "Un cours bonbon";
    	public final static int NOTE_DEFAUT = 0;
    	public final static int NOTE_MIN = 0;
    	public final static int NOTE_MAX = 100;
     
     
    	private String nom = null;
    	private int note1 = 0;
    	private int note2 = 0;
    	private int note3 = 0;
    	private Niveau niveau = null;
     
    	public Cours() {
    		nom = NOM_COURS_DEFAUT;
    		niveau = NIVEAU_DEFAUT;
    		note1 = NOTE_DEFAUT;
    		note2 = NOTE_DEFAUT;
    		note3 = NOTE_DEFAUT;
    	}
     
    	public Cours(String pNom, int pNote1, int pNote2, int pNote3,
    			Niveau pNiveau) {
    		if (validerNom(pNom) && validerNote(pNote1) && validerNote(pNote2)
    				&& validerNote(pNote3) && validerNiveau(pNiveau)) {
    			setNom(pNom);
    			setNote1(pNote1);
    			setNote2(pNote2);
    			setNote3(pNote3);
    			setNiveau(pNiveau);
    		}
     
    		else {
    			setNom(NOM_COURS_DEFAUT);
    			setNote1(NOTE_DEFAUT);
    			setNote2(NOTE_DEFAUT);
    			setNote3(NOTE_DEFAUT);
    			setNiveau(NIVEAU_DEFAUT);
     
    		}
    	}
     
    	public String getNom() {
    		return nom;
    	}
     
    	public void setNom(String pNom) {
    		if (validerNom(pNom)) {
    			this.nom = pNom;
    		}
    	}
     
    	public static boolean validerNom(String pNom) {
    		return ((pNom != null) && (pNom != ""));
    	}
     
    	public double getNote1() {
    		return note1;
    	}
     
    	public void setNote1(int pNote1) {
    		if (validerNote(pNote1)) {
    			this.note1 = pNote1;
    		}
    	}
     
    	public double getNote2() {
    		return note2;
    	}
     
    	public void setNote2(int pNote2) {
    		if (validerNote(pNote2)) {
    			this.note2 = pNote2;
    		}
    	}
     
    	public double getNote3() {
    		return note3;
    	}
     
    	public void setNote3(int pNote3) {
    		if (validerNote(pNote3)) {
    			this.note3 = pNote3;
    		}
    	}
     
    	public static boolean validerNote(int pNote) {
    		return ((pNote >= NOTE_MIN) && (pNote <= NOTE_MAX));
    	}
     
    	public Niveau getNiveau() {
    		return niveau;
    	}
     
    	public void setNiveau(Niveau pNiveau) {
    		if (validerNiveau(pNiveau)) {
    			this.niveau = pNiveau;
    		}
    	}
     
    	public static boolean validerNiveau(Niveau pNiveau) {
    		return (pNiveau != null);
    	}
     
    	public double getNoteFinale() {
    		return note1 * PONDERATION_1 + note2 * PONDERATION_2 + note3
    				* PONDERATION_3;
    	}
     
    	public boolean getSucces() {
    		if (getNoteFinale() <= POURCENTAGE_DE_PASSAGE) {
    			return false;
    		} else {
    			return true;
    		}
    	}
     
    	public String toString() {
    		return "le cours \"" + getNom() + "\" de niveau \"" + getNiveau()
    				+ "\", les notes sont (" + getNote1() + ", " + getNote2()
    				+ ", " + getNote3() + ") et la note finale est de "
    				+ getNoteFinale() + "%";
    	}
     
    }
    Dans une deuxième classe, j'ai créer un Étudiant (avec Nom, Prenom, Date de Naissance, Sexe, et Cours(qui fait référence à la classe précédente)).
    Le "toString()" final affiche un message qui dépend du sexe et de si l'Étudiant à passé ou pas son cours. C'est dans ma classe "Cours" que je créer ma méthode "getSucces", mais j'ai besoin de l'utiliser dans un "if" de ma méthode "toString" de ma classe "Étudiant", mais ça ne marche pas..
    Ma classe "Etudiant.java":
    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    package etudiant;
     
    import cours.Cours;
     
    import java.util.Calendar;
     
     
    public class Etudiant {
     
    	public final static String NOM_DEFAUT = "Unnom";
    	public final static String PRENOM_DEFAUT = "Unprenom";
    	public final static Sexe SEXE_DEFAUT = Sexe.MASCULIN;
    	public final Cours COURS_DEFAUT = new Cours();
    	public final static short JOUR_DEFAUT = 1;
    	public final static short MOIS_DEFAUT = 1;
    	public final static short MOIS_MIN = 1;
    	public final static short MOIS_MAX = 12;
    	public final static short ANNEE_DEFAUT = 1999;
    	public final static short ANNEE_MIN = 1900;
     
    	private String nom = null;
    	private String prenom = null;
    	private short jourDeN = 0;
    	private short moisDeN = 0;
    	private short anneeDeN = 0;
    	private Sexe sexe;
    	private Cours cours = null;
     
    	public Etudiant() {
    		nom = NOM_DEFAUT;
    		prenom = PRENOM_DEFAUT;
    		jourDeN = JOUR_DEFAUT;
    		moisDeN = MOIS_DEFAUT;
    		anneeDeN = ANNEE_DEFAUT;
    		sexe = SEXE_DEFAUT;
    		cours = COURS_DEFAUT;
     
    	}
     
    	public Etudiant(String pNom, String pPrenom, Sexe pSexe, short pJour, short pMois, short pAnnee, Cours pCours) {
    		if (validerPrenom(pPrenom) && validerNom(pNom) && validerDateDeN(pAnnee, pMois, pJour) && validerSexe(pSexe)
    				&& validerCours(pCours)) {
    			setNom(pNom);
    			setPrenom(pPrenom);
    			setDateDeN(pJour, pMois, pAnnee);
    			setSexe(pSexe);
    			setCours(pCours);
    		}
     
    		else {
    			setNom(NOM_DEFAUT);
    			setPrenom(PRENOM_DEFAUT);
    			setDateDeN(JOUR_DEFAUT, MOIS_DEFAUT, ANNEE_DEFAUT);
    			setSexe(SEXE_DEFAUT);
    			setCours(COURS_DEFAUT);
     
    		}
    	}
     
    	public String getNom() {
    		return nom;
    	}
     
    	public void setNom(String pNom) {
    		if (validerNom(pNom)) {
    			this.nom = pNom;
    		}
    	}
     
    	public static boolean validerPrenom(String pPrenom) {
    		return !(pPrenom == null || pPrenom == "");
     
    	}
     
    	public String getPrenom() {
    		return prenom;
    	}
     
    	public void setPrenom(String pPrenom) {
    		if (validerPrenom(pPrenom)) {
    			this.prenom = pPrenom;
    		}
    	}
     
    	public static boolean validerNom(String pNom) {
    		return !(pNom == null || pNom == "");
    	}
     
    	public void setJourDeN(short pJour) {
    		this.jourDeN = pJour;
    	}
     
    	public void setDateDeN(short pJour, short pMois, short pAnnee) {
    		if (validerDateDeN(pAnnee, pMois, pJour)) {
    			this.anneeDeN = pAnnee;
    			this.moisDeN = pMois;
    			this.jourDeN = pJour;
    		}
    	}
     
    	public static boolean validerDateDeN(short pAnnee, short pMois, short pJour) {
     
    		Calendar dateCourante = Calendar.getInstance();
    		int annee = dateCourante.get(Calendar.YEAR);
    		if (pAnnee >= ANNEE_MIN && pAnnee <= annee) {
    			if (pMois >= MOIS_MIN && pMois <= MOIS_MAX) {
    				if (pMois == 1 || pMois == 3 || pMois == 5 || pMois == 6 || pMois == 8 || pMois == 10 || pMois == 12) {
    					if (pJour >= 0 && pJour <= 31) {
    						return true;
    					} else
    						return false;
    				} else if (pMois == 4 || pMois == 7 || pMois == 9 || pMois == 11) {
    					if (pJour >= 0 && pJour <= 30) {
    						return true;
    					} else
    						return false;
    				} else if (pMois == 2 && pAnnee % 4 == 0) {
    					if (pJour >= 0 && pJour <= 29) {
    						return true;
    					} else
    						return false;
    				} else if (pMois == 2 && pAnnee % 4 != 0) {
    					if (pJour >= 0 && pJour <= 28) {
    						return true;
    					} else
    						return false;
    				} else
    					return false;
    			} else
    				return false;
    		}
     
    		else
    			return false;
    	}
     
    	public short getAnneeDeN() {
    		return anneeDeN;
    	}
     
    	public short getMoisDeN() {
    		return moisDeN;
    	}
     
    	public short getJourDeN() {
    		return jourDeN;
    	}
     
    	public Sexe getSexe() {
    		return sexe;
    	}
     
    	public void setSexe(Sexe pSexe) {
    		if (validerSexe(pSexe)) {
    			this.sexe = pSexe;
    		}
    	}
     
    	public static boolean validerSexe(Sexe pSexe) {
    		return (pSexe != null);
    	}
     
    	public Cours getCours() {
    		return cours;
    	}
     
    	public void setCours(Cours pCours) {
    		if (validerCours(pCours)) {
    			this.cours = pCours;
    		}
    	}
     
    	public static boolean validerCours(Cours pCours) {
    		return (pCours != null);
    	}
     
    	public String toStringDate() {
    		String moisTexte = "";
    		switch (moisDeN) {
    		case 1:
    			moisTexte = "janvier";
    			break;
    		case 2:
    			moisTexte = "fevrier";
    			break;
    		case 3:
    			moisTexte = "mars";
    			break;
    		case 4:
    			moisTexte = "avril";
    			break;
    		case 5:
    			moisTexte = "mai";
    			break;
    		case 6:
    			moisTexte = "juin";
    			break;
    		case 7:
    			moisTexte = "juillet";
    			break;
    		case 8:
    			moisTexte = "aout";
    			break;
    		case 9:
    			moisTexte = "septembre";
    			break;
    		case 10:
    			moisTexte = "octobre";
    			break;
    		case 11:
    			moisTexte = "novembre";
    			break;
    		case 12:
    			moisTexte = "decembre";
    			break;
     
    		default:
    			moisTexte = "Invalide";
    			break;
    		}
    		return moisTexte;
    	}
     
    	public short getAge() {
    		int age = 0;
     
    		Calendar dateCourante = Calendar.getInstance();
    		int annee = dateCourante.get(Calendar.YEAR);
    		int mois = (dateCourante.get(Calendar.MONTH) + 1);
    		int jour = dateCourante.get(Calendar.DAY_OF_MONTH);
     
    		age = annee - getAnneeDeN();
     
    		if (mois < getMoisDeN()) {
    			age = age - 1;
    		} else if (mois == getMoisDeN() && jour < getJourDeN()) {
    			age = age - 1;
    		}
     
    		return (short) age;
    	}
     
    	public String toString() {
     
    		if(Cours.getSucces())
     
    		{
    			if (getSexe() == Sexe.MASCULIN) {
    				return getPrenom() + " " + getNom() + ", est né le " + getJourDeN() + " " + toStringDate() + " "
    						+ getAnneeDeN() + " et il a échoué " + getCours();
    			}
     
    			else {
    				return getPrenom() + " " + getNom() + ", est née le " + getJourDeN() + " " + toStringDate() + " "
    						+ getAnneeDeN() + " et elle a échoué " + getCours();
    			}
     
    		}
     
    		else
     
    		{
    			if (getSexe() == Sexe.MASCULIN) {
    				return getPrenom() + " " + getNom() + ", est né le " + getJourDeN() + " " + toStringDate() + " "
    						+ getAnneeDeN() + " et il a réussi " + getCours();
    			}
     
    			else {
    				return getPrenom() + " " + getNom() + ", est née le " + getJourDeN() + " " + toStringDate() + " "
    						+ getAnneeDeN() + " et elle a réussi " + getCours();
    			}
    		}
     
    	}
    }
    Comment faire? Merci!

  2. #2
    Membre chevronné
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    Citation Envoyé par trexiic Voir le message
    À la fin j'ai une méthode "getSucces()" que je vais devoir utiliser dans une autre classe, par contre, je dois le laisser public et non-static (obligation du professeur..).
    C'est surtout que ça ne serait pas cohérent de rendre la méthode statique.
    Une méthode statique, c'est une méthode qui est liée à la classe, et pas une instance. Une méthode statique ne peut pas voir les valeurs des variables d'une instance (et pour une bonne raison : une méthode statique n'est pas liée à une seule instance, et tu peux en avoir plein).

    Est-ce que tu fais bien la différence entre une classe et une instance? C'est des concepts importants en POO donc n'hésites pas à demander si tu veux qu'on détaille.



    Dans une deuxième classe, j'ai créer un Étudiant (avec Nom, Prenom, Date de Naissance, Sexe, et Cours(qui fait référence à la classe précédente)).
    Le "toString()" final affiche un message qui dépend du sexe et de si l'Étudiant à passé ou pas son cours. C'est dans ma classe "Cours" que je créer ma méthode "getSucces", mais j'ai besoin de l'utiliser dans un "if" de ma méthode "toString" de ma classe "Étudiant", mais ça ne marche pas..
    Ma classe "Etudiant.java"
    Tu as posté la classe "Cours" à nouveau ^^


    Détaille point par point ce qui "ne marche pas" (je pense que tu peux trouver la solution, mais on peut t'orienter pour la trouver), et poste ta classe Etudiant et on regarde
    Je ne suis pas mort, j'ai du travail !

  3. #3
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Septembre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Septembre 2015
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Voilà j'ai mis ma classe Etudiant

    Est-ce que tu fais bien la différence entre une classe et une instance?
    -Je ne suis vraiment pas sur, mais je pense qu'une instance c'est lorsque je créer une classe, par exemple dans ma classe "EtudiantTest" :
    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    package tests;
     
    import cours.Cours;
    import cours.Niveau;
    import etudiant.Etudiant;
    import etudiant.Sexe;
     
    public class EtudiantTest {
     
    	public static void testerValiderSexe() {
    		System.out.println("\nTest validerSexe invalide");
    		System.out.println((Etudiant.validerSexe(null) == false));
    		System.out.println("\nTest validerSexe valide");
    		System.out.println((Etudiant.validerSexe(Sexe.FEMININ) == false));
     
    	}
     
    	public static void testerValiderCours() {
    		System.out.println("\nTest validerCours invalide");
    		System.out.println((Etudiant.validerCours(null) == false));
    		System.out.println("\nTest validerCours valide");
    		Cours cours1 = new Cours("fuck off", 60, 80, 90, Niveau.EXTREME);
    		System.out.println((Etudiant.validerCours(cours1) == false));
     
    	}
     
    	public static void testerValiderDateDeN() {
    		System.out.println("\nTest validerDateDeN invalide");
    		System.out.println((Etudiant.validerDateDeN((short) 2016, (short) 13, (short) 0) == false));
    		System.out.println("\nTest validerDateDeN valide");
    		System.out.println((Etudiant.validerDateDeN((short) 1998, (short) 5, (short) 6) == false));
     
    	}
     
    	public static void testerValiderPrenom() {
    		System.out.println("\nTest validerPrenom invalide");
    		System.out.println((Etudiant.validerPrenom(null) == false));
    		System.out.println("\nTest validerPrenom valide");
    		System.out.println((Etudiant.validerPrenom("Patrice-Jésus") == false));
     
    	}
     
    	public static void testerValiderNom() {
    		System.out.println("\nTest validerNom invalide");
    		System.out.println((Etudiant.validerNom("") == false));
    		System.out.println("\nTest validerNom valide");
    		System.out.println((Cours.validerNom("AfterBurner") == false));
    	}
     
    	public static void testerContructeur() {
    		Cours cours1 = new Cours("POO II", 60, 80, 90, Niveau.EXTREME);
    		System.out.println("\nTest constructeur avec parametres invalides");
    		Etudiant etudiant1 = new Etudiant("Patrice", "", Sexe.FEMININ, (short) 6, (short) 5, (short) 1998, cours1);
    		System.out.println(etudiant1);
    		System.out.println("\nTest constructeur avec parametres valides");
    		Etudiant etudiant2 = new Etudiant("Bonnelly", "Fred", Sexe.MASCULIN, (short) 6, (short) 5, (short) 1998,
    				cours1);
    		System.out.println(etudiant2);
    	}
     
    	public static void testerGetAge() {
    		Cours cours1 = new Cours("POO II", 60, 80, 90, Niveau.EXTREME);
    		Etudiant etudiant1 = new Etudiant("Bonnelly", "Fred", Sexe.MASCULIN, (short) 6, (short) 5, (short) 1998,
    				cours1);
    		short age = etudiant1.getAge();
    		System.out.println("\nTest getAge()");
    		System.out.println(age);
    	}
     
    	public static void testerInjection() {
    		Cours cours1 = new Cours("POO II", 60, 80, 90, Niveau.EXTREME);
    		Etudiant etudiant1 = new Etudiant("Fournier", "Patrice", Sexe.MASCULIN, (short) 6, (short) 5, (short) 1998,
    				cours1);
    		etudiant1.setSexe(Sexe.FEMININ);
    		System.out.println("\nTest setSexe()");
    		System.out.println(etudiant1);
    	}
     
    	public static void main(String[] args) {
    		testerGetAge();
    		testerValiderDateDeN();
    		testerValiderCours();
    		testerValiderSexe();
    		testerValiderPrenom();
    		testerValiderNom();
    		testerContructeur();
    		testerInjection();
    	}
     
    }
    La ligne "Cours cours1 = new Cours("POO II", 60, 80, 90, Niveau.EXTREME);" créer une instance de la classe Cours.
    La ligne "Etudiant etudiant1 = new Etudiant("Patrice", "", Sexe.FEMININ, (short) 6, (short) 5, (short) 1998, cours1);" créer une instance de la classe Etudiant.
    C'est bien ca?

  4. #4
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Septembre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Septembre 2015
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par eulbobo Voir le message
    Détaille point par point ce qui "ne marche pas" (je pense que tu peux trouver la solution, mais on peut t'orienter pour la trouver)
    Dans mon toString() de ma classe Etudiant, je dois afficher un message en fonction de si l'étudiant à passé ou échoué son cours. Pour ce faire, j'ai une méthode dans la classe Cours qui évalue l'échec/passage, cette méthode s'appelle "getSucces()" et compare la note finale de l'élève avec la note de passage. Le problème, c'est que dans le toString de ma classe Etudiant, si je créer mon if/else ainsi:
    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
    if(getSucces()){
    	if(getSexe() == Sexe.MASCULIN){
    		écrire le message "a passé" au "masculin";
    	}
    	else{
    		écrire le message "a passé" au "féminin";
    	}
    }
    else{
    	if(getSexe() == Sexe.MASCULIN){
    		écrire le message "a passé" au "masculin";
    	}
    	else{
    		écrire le message "a passé" au "féminin";
    	}
     
    }
    Il ne comprend pas le "getSucces" car il est non-statique dans une autre classe, alors que le "getSexe()" fonctionne sans problème.. la seul différence entre les deux étant qu'un est dans la même classe, l'autre dans une autre.

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Dans ta classe Etudiant, tu as une variable cours, de type Cours, qui désigne le cours suivi par l'étudiant (je suppose que c'est pour simplifier qu'un étudiant ne suive qu'un seul cours). Dans la classe Etudiant, tu dois faire tester le succès du cours suivi par l'étudiant, à l'aide de la méthode getSucces() de la classe Cours. C'est donc par l'intermédiaire de cette variable cours dans Etudiant que tu peux accéder à cette méthode.

    Donc tout simplement, dans le code de la méthode de Etudiant où tu dois faire cette évaluation :
    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
    public class Etudiant {
     
               /* ... */
     
               private Cours cours = null; // au passage, le = null est inutile, il est implicite.
     
               /* ... */
     
               public void jeNeSaisPasQuelleMethode() {
     
                    if( cours.getSucces()) { // on appelle la méthode sur la variable qui contient la référence à l'instance pour laquelle on veut appeler cette méthode...
    	            if(getSexe() == Sexe.MASCULIN){
    		        écrire le message "a passé" au "masculin";
    	            }
    	            else{
    		        écrire le message "a passé" au "féminin";
    	            } 
                    }
                    else{
    	           if(getSexe() == Sexe.MASCULIN){
    		        écrire le message "a passé" au "masculin";
    	           }
    	           else{
    	                écrire le message "a passé" au "féminin";
    	           }
     
                    }
     
               }
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Septembre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Septembre 2015
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Oh wow, j'avais essayer avec Cours, mais pas avec cours
    Ça marche, merci beaucoup!!

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par trexiic Voir le message
    Oh wow, j'avais essayer avec Cours, mais pas avec cours
    Ça marche, merci beaucoup!!
    Tu vois la différence entre l'instance et la classe maintenant ! La classe est juste une description de ce qu'un objet de cette classe doit faire et comment. L'instance, c'est vraiment l'entité que le programme manipule pour faire ses traitements. Ainsi il peut y avoir plusieurs instances différentes de Cours dans une application, et pour agir sur chacune des ces instances, on invoquera l'une de ses méthodes sur l'instance, par l'intermédiaire d'une variable qui la stocke par exemple.

    Un exemple moins Java : la classe c'est comme le plan d'une maison, qui décrit où sont les murs, les fenêtres, les portes, etc. On peut construire plusieurs maisons à partir de ce plan : chacune de ces maisons est une instance. Si on veut aller dans l'une de ces maisons, on ouvre la porte de la maison, pas du plan de la maison. En Java, on pourrait faire des actions directement sur la plan : c'est ça les méthodes statiques. Elle appartiennent au plan de maison, pas aux maisons.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/07/2015, 10h06
  2. Réponses: 3
    Dernier message: 02/07/2013, 21h49
  3. Utiliser une méthode non-static dans une méthode static
    Par mcfly37 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 18/08/2010, 12h41
  4. [Thread] appel de méthodes non-synchronized dans une méthode synchronized
    Par dr23fr dans le forum Concurrence et multi-thread
    Réponses: 1
    Dernier message: 24/06/2008, 23h47
  5. Réponses: 20
    Dernier message: 21/06/2006, 21h44

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