Exécution de prg java (serialisation)

Fermé
julia - 30 nov. 2003 à 10:02
Nettogrof Messages postés 521 Date d'inscription lundi 29 septembre 2003 Statut Membre Dernière intervention 8 décembre 2005 - 1 déc. 2003 à 17:00
Bonjour
je rencontre un problemen à l'exécution de ces classes. Pourriez vous me dire ce qu'elle affiche?
Merci

Local.java
public class Local{
public void inc(Entier x){
x.n++;
}

public void main (String[] args){
Local l = new Local();
Entier y = new Entier(2);
System.out.println(y.n);
l.inc(y);
System.out.println(y.n);
}
}

Entier.java :
import java.io.Serializable;
public class Entier implements Serializable{
public int n;
public Entier (int p){
n=p;
}
}
A voir également:

3 réponses

Nettogrof Messages postés 521 Date d'inscription lundi 29 septembre 2003 Statut Membre Dernière intervention 8 décembre 2005 672
1 déc. 2003 à 15:58
Salut

je ne suis pas le meilleur à propos de la sérialisation, mais

Dans ta classe, Local il te faudrait un constructeur :
public Local(){

}


Et le résultat devrait être
2
3




Nettogrof tseb era seiromem emoS
0
rubidium Messages postés 95 Date d'inscription jeudi 13 novembre 2003 Statut Membre Dernière intervention 16 juillet 2006
1 déc. 2003 à 16:29
Salut,
Malheureusement je ne peux tester de classes java maintenant. J'essaierai ce soir, mais il y a une chose qui me semble contraire aux bons principes de programmation que j'ai pu apprendre.

D'apres ce que j'ai pu comprendre a la programmation objet, il n'est pas tres correct d'avoir des attributs publics (public int n; )et de les manipuler directement depuis une autre classe (n.x++, n.Y ....). Normalement on fait des accesseurs (getn() et setn() )et n reste privé.
Je suis d'accord avec nettogrof pour le constructeur.
@tchao
ps : serais tu la Julia que je connais???
0
Nettogrof Messages postés 521 Date d'inscription lundi 29 septembre 2003 Statut Membre Dernière intervention 8 décembre 2005 672
1 déc. 2003 à 17:00
Je suis d'accord avec rubidium, selon le concept d'objet, il n'est pas très bon que faire public int n; il faudrait qu'elle soit private.

et au lieu que ta méthode inc(Entier x) soit dans la classe Local,

Il faudrait dans la classe Entier, une méthode:
   public inc(){
       n++;
   }


et dans ton main, tu ferais y.inc();

Nettogrof tseb era seiromem emoS
0