Un objet qui en crée un autre et reste lié

Résolu
seichan94 Messages postés 38 Date d'inscription mardi 29 octobre 2013 Statut Membre Dernière intervention 6 novembre 2014 - 27 nov. 2013 à 16:56
seichan94 Messages postés 38 Date d'inscription mardi 29 octobre 2013 Statut Membre Dernière intervention 6 novembre 2014 - 28 nov. 2013 à 13:33
Bonjour les gens !

petite question

j'ai une classe Joueur qui crée un objet Joueur :

Joueur J1 = new Joueur(String nom, String type, new Score());

info :
type est un String simple pour définir quel joueur est l'humain/Com.
Score est une classe qui crée des objets scores(point, set, Manche).

Question : est il possible de dire que l'obj score crée ici appartient a humain
est ainsi l'utilisé :
J1.score.setPoint();
J2.score.setPoint(); lobjet score est different pour J1 et J2

affiche J1 = 1 à J2 = 0

Ce qui me gène c'est de devoir donné une ref a chaque obj score.

Merci d'avance
Bonne soirée à tous

2 réponses

BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
27 nov. 2013 à 17:06
Hello,
Vu l'appel de ton constructeur, c'est le joueur qui porte l'objet Score. Donc, si tu as 2 joueurs, tu auras 2 objet Score distincts...
C'est ce fonctionnement que tu veux?
0
seichan94 Messages postés 38 Date d'inscription mardi 29 octobre 2013 Statut Membre Dernière intervention 6 novembre 2014
27 nov. 2013 à 18:31
Bonsoir BunoCS

oui c'est bien cela que je souhaite.
je vais tester je vais bien voir si cela fonctionne.

mais comment l'objet score sait qu'il appartient a J1 et pas à J2 ???

le fait de le créer par l'objet joueur ajoute une ref a cet objet ?
si oui peut ont la retrouver ?

Merci pour ton aide
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
27 nov. 2013 à 18:44
"comment l'objet score sait qu'il appartient a J1 et pas à J2 ??"
L'attribut "score" que tu as mis dans ta classe Joueur est spécifique à chaque objet. Donc J1.score et J2.score sont différents et appartiennent respectivement à J1 et J2.
Mais l'objet "score" ne sait pas s'il appartient à J1 ou J2, et c'est rarement utile qu'il le sache.
0
seichan94 Messages postés 38 Date d'inscription mardi 29 octobre 2013 Statut Membre Dernière intervention 6 novembre 2014
27 nov. 2013 à 22:54
Merci KX

en revanche je ne parvient pas a récupérer les valeurs de mon objet score, j ai ma classe main ma classe joueur et ma classe score je vous montre :

main :
public static void main(String[] args) {
	Joueur J1 = new Joueur("KX");
	System.out.println(J1.score.getPoint());
}


Joueur :
public class Joueur {

	// varaible
	String name;
	
	// constructeur
	public Joueur() {
		this.name = "anonyme";
		Score score = new Score();
	}

	// constructeur avec p
	public Joueur(String name) {
		this.name = name;
		Score score = new Score();
	}
	
}


Score :
public class Score {

	protected int point;

	/// constructeur
	public Score() {
		this.point = 0;
	}

	public void setPoint() {
		this.point += 1;
	}
}


La ce code ne fonctionne pas il doit y avoir un truc que je n'ai pas zapé.
Merci pour votre aide
0
seichan94 Messages postés 38 Date d'inscription mardi 29 octobre 2013 Statut Membre Dernière intervention 6 novembre 2014
27 nov. 2013 à 22:56
il manque cela dans ce que je vous donne mais avec ça ne fonctionne pas quand même.
public int getPoint() {
return this.point;
}
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
Modifié par KX le 27/11/2013 à 23:03
Le problème ici c'est que
score
est décrite comme une variable locale dans le constructeur alors qu'elle devrait être un attribut au même titre que
name
:

public class Joueur 
{
    public String name;
    public Score score;
    
    public Joueur() 
    {
        this.name = "anonyme";
        this.score = new Score();
    }
    
    public Joueur(String name)
    {
        this.name = name;
        this.score = new Score();
    }
}
0
seichan94 Messages postés 38 Date d'inscription mardi 29 octobre 2013 Statut Membre Dernière intervention 6 novembre 2014
27 nov. 2013 à 23:26
Merci beaucoup !
ça fonctionne très bien :)

j'ai une dernière question pour la conception
je m'explique sur le principe :

1) je créer une partie de jeu pour cela je créer un objet partie avec les paramètre (nbr de coup jouer, nbr de joueur, ...)
2) l'objet partie ce construit avec les paramètre et crée les objet
- Joueurs
3) qui eux vont crée les objet
--Score

conclusion pour modifier mon score je fait partie.J1.score.setPoint();
par la suite je souhaite ajouter un écouteur sur score pour actualisé l'affichage des points.

pour le moment ça fonctionne (grâce vous) mais est ce que c'est la bonne solution

je garde le code comme ça ?
ou
il vaut mieux séparer l'objet partie de Joueur et score ?
ou
les rendre tous individuel ?
ou
Faire autrement ???

encore merci pour votre aide
(a l'issus je clôture le poste)
0
Rejoignez-nous