Java : utilisation bizarre de toString

Fermé
Chido - 17 oct. 2008 à 19:26
BadGuitarist Messages postés 367 Date d'inscription dimanche 12 octobre 2008 Statut Membre Dernière intervention 20 octobre 2013 - 18 oct. 2008 à 00:26
Bonjour,
Bonsoir, mon problème est donc que je souhaite faire apparaitre le toString de ma classe CarteSIM dans celui de ma classe TelephonePortable. Est ce que cela est possible si oui comment ?
J'aimerai que lorsque je fais mon System.out d'un new TelephonePortable sa m'affiche a la suite les deux texte. Je sais qu'il serait beaucoup plus simple de ne faire que le toString de ma classe TelephonePortable. Mais c'est pour un devoir et je dois donc laisser le toString dans ma classe CarteSIM et j'aimerai tant qu'a faire reussir a reexploiter le premier toString plutot que de le retaper dans le deuxieme.


Merci d'avance

Voici mon code source :

public class TelephonePortable
{
private CarteSIM simtelephone;
private String nomproprietaire;

public TelephonePortable(String nomproprio)
{
CarteSIM simtelephone = new CarteSIM(5000,500);
nomproprietaire=nomproprio;
}

public TelephonePortable(int capacitemax,int nbnumeromax,String nomproprio)
{
CarteSIM simtelephone = new CarteSIM(capacitemax,nbnumeromax);
nomproprietaire=nomproprio;
}

public CarteSIM getCarteSIM()
{
return simtelephone;
}

public String getNomProprietaire()
{
return nomproprietaire;
}

public void ajustementCapaciteMemoire()
{
int capacitemini=simtelephone.getNbNumeroMax()*10;
if (simtelephone.getCapaciteMax()<capacitemini) {
simtelephone.setCapaciteMax(capacitemini);
}
}

public void ajouterNumeroTelephone(int n)
{
simtelephone.addNumeroTel(n);
simtelephone.oqpCapacite(n*10);
}

public void effacerNumeroTelephone(int n)
{
simtelephone.addNumeroTel(-n);
simtelephone.oqpCapacite(-n*10);
}

public String toString()
{
return "Le proprietaire est : "+this.getNomProprietaire()+" Et : " +this.getCarteSIM();
}
}



public class CarteSIM
{
private String identifiant;
private int capacitemax;
private int nbnumeromax;
private int capaciteactuelle;
private int nbnumeroenregistre;

public CarteSIM()
{
capacitemax=5000;
nbnumeromax=500;
capaciteactuelle=0;
nbnumeroenregistre=0;
identifiant="defautsim";
}

public CarteSIM(int capamax,int nummax)
{
capacitemax=capamax;
nbnumeromax=nummax;
capaciteactuelle=0;
nbnumeroenregistre=0;
identifiant="defautsim";
}

public CarteSIM(int capamax,int nummax,String id)
{
capacitemax=capamax;
nbnumeromax=nummax;
capaciteactuelle=0;
nbnumeroenregistre=0;
identifiant=id;
}

public CarteSIM(int capamax,int nummax,int capaactu,int nbnumenr,String id)
{
capacitemax=capamax;
nbnumeromax=nummax;
capaciteactuelle=capaactu;
nbnumeroenregistre=nbnumenr;
identifiant=id;
}

public int getCapaciteMax()
{
return capacitemax;
}

public int getNbNumeroMax()
{
return nbnumeromax;
}

public int getCapaciteActuelle()
{
return capaciteactuelle;
}

public int getNbNumeroEnregistre()
{
return nbnumeroenregistre;
}

public String getIdentifiant()
{
return identifiant;
}

public void setCapaciteMax(int capamax)
{
capacitemax=capamax;
}

public boolean depassementAnnuaire()
{
if (capaciteactuelle>capacitemax) {
return true;}
else {return false;}
}

public boolean depassementCapacite()
{
if (nbnumeromax<nbnumeroenregistre) {
return true;}
else {return false;}
}

public void addNumeroTel(int n)
{
nbnumeroenregistre+=n;
if (depassementCapacite()) {
System.out.println("Nombre de numero de telephone maximum atteint.");
nbnumeroenregistre-=n;
}
}

public void oqpCapacite(int c)
{
capaciteactuelle+=c;
if (depassementAnnuaire()) {
System.out.println("Capacite maximum atteinte.");
capaciteactuelle-=c;
}
}

public String toString()
{
int pourcentageutilise=100*this.getCapaciteActuelle()/this.getCapaciteMax();
int nbnumerorestant=this.getNbNumeroMax()-this.getNbNumeroEnregistre();
return "La carte SIM "+this.getIdentifiant().substring(0,4)+" occupe "+pourcentageutilise+" pour cent de la capacité maximale et peut encore enregistrer "+nbnumerorestant+" n° de telephone";
}
}





public class Test
{
public static void main(String []args)
{
System.out.println(new CarteSIM(1000,100,50,95,"sim543"));
System.out.println(new TelephonePortable(5000, 500,"Dery"));
}
}
A voir également:

2 réponses

yakuzayang Messages postés 6 Date d'inscription mardi 14 octobre 2008 Statut Membre Dernière intervention 18 octobre 2008
18 oct. 2008 à 00:04
ba dans ton toString de ta classe telephone tu fais un appel au toString de ta classe carte sim.

un truc du genre

res=""
res+=maSim.toString()
res+="nomproprietaire"
return res
-1
BadGuitarist Messages postés 367 Date d'inscription dimanche 12 octobre 2008 Statut Membre Dernière intervention 20 octobre 2013 27
18 oct. 2008 à 00:26
Bonjour,
C'est vraiment pas propre ce que tu veux faire ou je n'ai pas bien compris ta demande.
Dans le constructeur de TelephonePortable, tu veux faire appel au toString() d'une autre classe, classe dont tu ne sais même pas si elle a déjà été instanciée !

Est-ce que cela ne te conviendrait pas d'avantage :

  public class Test 
  { 
      public static void main(String []args) 
      { 
         System.out.println( (new CarteSIM(1000,100,50,95,"sim543"   )).toString()); 
         System.out.println( (new TelephonePortable(5000, 500,"Dery")).toString()); 
      } 
   }


Bon courage.
-1