La méthode to string

Résolu/Fermé
DevGl Messages postés 136 Date d'inscription samedi 23 novembre 2013 Statut Membre Dernière intervention 16 mai 2015 - Modifié par 00lina00 le 1/11/2014 à 22:29
DevGl Messages postés 136 Date d'inscription samedi 23 novembre 2013 Statut Membre Dernière intervention 16 mai 2015 - 2 nov. 2014 à 19:12
Bonjour,

je suis entrain de faire un exercice en java , c'est un exercice qui est si simple comme mon prof l'avais dit :o , en tout cas je n'ai aucun idée que c que je dois faire :( ! j'ai cherché mais sans résultats :/ ,
voila une des question que je veux si pouvez m'aider :

Ecrire une class Liquide , contenant simplement la méthode toString() qui retourne le message << je suis un liquide >>
comment le faire ?
c'est quoi la méthode tostring() ? ce que je sais pour le moment c'est la méthode qui nous permet de convertir vers une chaine de caracteres ! mais comment ? je n'ai vrement aucun idée !
est ce que vous pouvez me donner la solution ? s'ils vous plait et avec une explication si vous pouvez ! Et merci D'avance !!
PS : un débutant en java :/ !
A voir également:

3 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
1 nov. 2014 à 21:40
Bonjour,

Toutes les classes en Java héritent de la classe Object, celle-ci définit 11 méthodes, même si en pratique on n'en utilises que 4 : equals, hashCode, toString et getClass.

Voir la documentation :
https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html

Lorsque tu fais un System.out.println(Object obj) c'est obj.toString() qui est affiché.
Sans action de ta part c'est la méthode toString de la classe Object qui est utilisée, ce qui va faire un affichage comme ça : Liquide@123456
Ce que l'on te demande c'est de redéfinir la méthode toString, pour remplacer la méthode par défaut, ainsi en faisant un System.out.println, tu devras obtenir l'affichage << je suis un liquide >>
1
DevGl Messages postés 136 Date d'inscription samedi 23 novembre 2013 Statut Membre Dernière intervention 16 mai 2015
Modifié par DevGl le 1/11/2014 à 21:45
Merci beaucoup KX , c'est la toisiéme fois que vous m'aidez ! vrement je vous remercie !!
j'ai compris maintenant , mais est ce que vous avez une idée comme le faire?
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
1 nov. 2014 à 21:52
Il faut écrire une méthode toString exactement de la même manière que celle de Object, c'est à dire sans argument et qui renvoie un String :
public String toString()


Voir aussi : Overriding and Hiding Methods
0
DevGl Messages postés 136 Date d'inscription samedi 23 novembre 2013 Statut Membre Dernière intervention 16 mai 2015
1 nov. 2014 à 21:58
mais d'aprés ce que vous avez dit au debut ca peut me donne Liquide@123456 comment faire pour avoir ce message << je suis un liquide >> sera affiché??
c'est comme ca System.out.println("je suis un ",obj.toString() ) ?? ; mais ca va me donner Liquide@klk chose . ??
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
1 nov. 2014 à 22:06
Fais un test, tout simple.

public class Liquide // extends Object <-- implicite
{
}

public class Test
{
    public static void main(String...args)
    {
        Liquide lq = new Liquide();
        System.out.println(lq); // Liquide@123456
    }
}
0
DevGl Messages postés 136 Date d'inscription samedi 23 novembre 2013 Statut Membre Dernière intervention 16 mai 2015
Modifié par DevGl le 1/11/2014 à 22:20
Ouii KX ca m'a donnée Liquide@1db7242
mais pour afficher le message on doit redefinier la methode tostring dans la class Liquide n'est ce pas ??


class Liquide { // extends Object <-- implicite


public String toString() {
return " je suis un "+ koi mettre ici ???
}

}

quoi mettre dedant s'il vous plait ?? :(
0
DevGl Messages postés 136 Date d'inscription samedi 23 novembre 2013 Statut Membre Dernière intervention 16 mai 2015
1 nov. 2014 à 23:05
Aaah bon , je vous remercie KX , prenant l'exercice que j'ai , je dois faire 2 autres classes , class Café , class Lait , de la meme maniére qu'on a fait la class Liquide , et enfin la 4éme class Tasse.
alors les 2 classes Café , Lait héritent de la class Liquide ,
et la class Tasse ?? il hérite quelle classe ? ?
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
1 nov. 2014 à 23:08
D'un point de vue mécanique, elle héritera forcément de la classe Object, mais ce n'est pas la peine de le préciser, c'est le comportement par défaut.
0
DevGl Messages postés 136 Date d'inscription samedi 23 novembre 2013 Statut Membre Dernière intervention 16 mai 2015
1 nov. 2014 à 23:11
Aaah bon , par ce que personnelemnt j'ai pensé qu'elle n"hérite ni de la class Lait , liquide , ou bien café , alors comme vous dites , c'est la class Objet ! Merciiiiii grave KX ! enfin c'est résolu !
0
DevGl Messages postés 136 Date d'inscription samedi 23 novembre 2013 Statut Membre Dernière intervention 16 mai 2015
1 nov. 2014 à 23:17
la derniére question s'il vous plaaaait : dans la class Tasse je dois définier un attribut de type Liquide ! et l'initialiser à l'aide d"un constructeur , dites moi : c'est un attribut de type class alors ??! ce n'est pas bizzard??
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
1 nov. 2014 à 23:25
Attention de ne pas confondre classe et objet.

Non ce n'est pas bizarre, lorsque tu fais un attribut de type String c'est un objet de la classe String, de même qu'un tableau est un objet aussi (d'une classe un peu particulière).
Il n'y a que 8 types primitifs en Java (boolean, byte, char, short, int, long, float, double), tout le reste ce sont des objets, cela permet d'augmenter l'expressivité du langage. Si on devait dans toutes les classes ne manipuler que des types primitifs on ne s'en sortirait pas.
0
DevGl Messages postés 136 Date d'inscription samedi 23 novembre 2013 Statut Membre Dernière intervention 16 mai 2015
Modifié par DevGl le 1/11/2014 à 23:41
Aaaah bon , alors quand je veux l'initialiser , quel valeur je dois le donner ???
par exemple :
Tasse T = new Tasse ( ) ? ?? mettre quoi entre les parentheses alors? si elle est de type liquide
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
1 nov. 2014 à 23:49
C'est à toi de choisir. Ça dépend de ton constructeur (tu peux en faire plusieurs d'ailleurs).
Par défaut, si tu ne définis pas de constructeur, tu hérites du constructeur de Object, qui ne prends aucun paramètre et ne fais rien. Donc
new Tasse()
créé un objet Tasse.
Si tu définis un constructeur Tasse(Liquide) par exemple, alors tu dois passer en argument un objet de la classe Liquide ou d'une de ses classes filles (Lait, Cafe, etc.)
Éventuellement, mais ça dépasse peut-être le cadre de ton exercice, rien ne t'empêche de rajouter plusieurs liquides dans une tasse, pour un café au lait par exemple, dans ce cas il faudra préciser quelle quantité tu mets de chaque liquide, et par extension, définir la capacité de la tasse.
Pour moi le principal paramètre à passer au constructeur d'un objet Tasse ce serait sa contenance. Mais ça pourrait également être sa matière, sa couleur, son poids, sa forme, etc.
Il n'y a pas qu'une seule manière de faire, cela dépend de l'utilisation que tu en as derrière.
0
DevGl Messages postés 136 Date d'inscription samedi 23 novembre 2013 Statut Membre Dernière intervention 16 mai 2015
Modifié par DevGl le 2/11/2014 à 00:14
avant votre reponse j'ai envoye comme parametre la valeur 2 , puis un char , puis float , mais dans tout les cas il m'a donnée des erreurs disant que c'est impossible d'affecter valeurs comme ca pour un objet de type liquide , maintenant j'ai envoyé un objet qui reference la class Liquide
comme ca
Liquide L = new Liquide() ;
aprés :
Tasse T = new Tasse(L) ;
et il m'a pas donnée des erreurs , alors c'est just comme ca??
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
2 nov. 2014 à 11:33
Ca peut être correct, à condition que la classe Liquide ait un constructeur sans argument, et l classe Tasse ait un constructeur avec un argument de la classe Liquide.
Cependant tu ne devrais pas instancier directement un Liquide, mais plutôt instancier un objet Cafe ou Lait qui hérite de la classe Liquide.
0