Merci beaucoup pour ta réponse. Ok, je vais les mettre en private et faire des méthodes get et set pour pouvoir y accéder, ça sera plus propre. Oui il me faut y faire des les règles de l'art, j'y fais pour moi en ce moment mais le but est que j'apprenne le Java (ça fait une semaine que je suis dessus environ) pour un futur emploi où je devrais faire des applications pour smartphone qui communique avec d'autres appareils (p. ex. une montre connectée qui mesurerait certains paramètres vitaux et les mesures seront traitées et affiché sur smartphone), donc autant prendre les bonnes habitudes directement.
Alors pour les actions entre les class, je vais te donner un exemple :
Je crée des objets Team. Ensuite je veux en faire jouer 2 entre elles. Je crée un objet Match m1 = new Match(Team tA, Team tB) ; par exemple.
Ensuite le constructeur va initialiser les variables Team de m1 avec les équipes que je lui ai données et va attribuer un terrain en fonction du nombre de match créer et du nombre d'équipe enregistrée au tournoi. L'initiation se fait sans "new" dans le constructeur :
teamA = tA ;
teamB = tB ;
Dans ma class Match, j'ai une méthode "result" qui permet de donner les scores une fois le match terminé et c'est là que j'ai peur sur l'encapsulation. En gros, suivant le score, j'incrémente le nombre de match gagné à l'équipe, les statistiques de score (points marqué, reçu, moyenne etc). J'utilise les objets Team que j'ai référencé dans mon constructeur et incrémente directement leur attribut. Donc une ligne de code pour incrémenter le nombre de matchs gagné dans ma méthode result de la class Match s'écrit :
TeamA.gameWon++ ;
gameWon est déclarée protected dans la class Team, pour ça que ça fonctionne. Si j'y mets en private, je devrais utiliser une méthode dans ma class Team du genre : incrementGameWon() ;
Donc voilà, en référencent mes Team dans un Match, je peux, grâce à la méthode "result" dans Match (Pour donner un résultat d'un match créer, j'utilise la méthode dans mon main du genre : m1.result(4, 9) ; pour donner le résultat), agir directement sur les statistiques (donc attributs) de Team qui sont protected. Parce que donner le résultat d'un match doit se traiter dans Match selon moi, mais ceci impliquera de mettre à jour les données des équipes une fois le résultat connu, c'est comme ça que j'ai pensé mais je me demande si c'est bien de faire ainsi. Aucune class n'hérite d'une autre mais comme une class est constituée d'objets d'une autre class j'arrive à travailler directement avec les attributs protected et je trouve ça moyennement propre. Je pensais que protected rendait accessible uniquement les attributs d'une class dans sa class et les class qui en hérite mais dans mon cas, je n'ai pas d' "extends", juste une class composée d'objet d'une autre class.
Pour l'instant l'idée était la suivante :
- J'enregistre toutes les Team,
- Je créer un objet GroupeStage qui me donnera un tableau 2D constitué de Match et qui représentera tout les matchs de pool.
- Une fois les résultats connus, on agira sur les objets Match un à un avec la méthode result. Cette méthode mettra chaque fois à jour les attributs de chaque Team.
- Une fois tout les matchs terminé, les objets Team auront leur statistiques. Il suffira de faire un tri (j'ai déjà fait une méthode dans Team compareTo qui utilise l'interface Comparable pour donner mon ordre de tri) et ainsi savoir quelles équipes pourront accédé au second tour.
J'espère que c'était plus ou moins clair! Merci encore!
---------------
Intel Core i7 2600K / Corsair H60 / Asus P8P67 Deluxe / Asus GTX 580 DirectCUII / Corsair Vengeance 1866 MHz 2x4 Go CAS9 / NZXT Phantom rouge et blanc / Seasonic X-850 / Corsair Force Series GT 240 Go / Western Digital Caviar Blue 1 To SATA III / Lite-On