Contenu du cours
Java Étendu
Java Étendu
Utilisation des Classes Complexes
Utilisation des objets de classe dans une autre classe
Nous allons maintenant discuter de l'utilisation plus complexe des classes, en particulier l'utilisation des objets de classe au sein d'une autre classe.
Équipe et joueurs
Imaginons une situation où nous avons une classe Team
. Chaque équipe devrait avoir des joueurs. Nous pourrions remplir le champ players
avec de simples valeurs String
représentant leurs noms, mais ce ne serait pas la meilleure pratique. Il serait bien mieux de créer une classe Player
avec ses propres champs et méthodes puis de créer un tableau d'objets Player
au sein de la classe Team
.
Considérons un exemple :
Team
class Team { String title; String country; Player[] players; void play() { System.out.println("Team " + title + "is playing!"); } } class Player { String name; int age; int yearsOfExperience; public Player(String name, int age, int yearsOfExperience) { this.name = name; this.age = age; this.yearsOfExperience = yearsOfExperience; } void introduce() { System.out.println("Hi, my name is " + name + ", I am " + age + " years old and have " + yearsOfExperience + " years of experience"); } }
Comme vous pouvez le voir, nous utilisons un tableau d'objets Player
dans le champ players
de la classe Team
. À partir de cela, nous pouvons tirer quelques conclusions :
- Nous pouvons créer des tableaux d'objets à partir de notre propre classe créée ;
- Nous pouvons utiliser des objets d'une classe dans une autre classe pour améliorer la logique globale.
Mais la question se pose : Comment remplir ce tableau ?
Réponse : Pour ce faire, nous devons créer plusieurs objets Player
et les ajouter au tableau de joueurs. Créons une Dream Team dans la méthode principale et voyons un exemple :
Main
package com.example; import java.util.Arrays; public class Main { public static void main(String[] args) { Player bob = new Player("Bob", 32, 5); Player alice = new Player("Alice", 28, 8); Player john = new Player("John", 41, 20); Player[] players = {bob, alice, john}; Team dreamTeam = new Team("Dream Team", "USA", players); System.out.println(dreamTeam); } } class Team { String title; String country; Player[] players; public Team(String title, String country, Player[] players) { this.title = title; this.country = country; this.players = players; } void play() { System.out.println("Team " + title + "is playing!"); } @Override public String toString() { return "Team{" + "title='" + title + '\'' + ", country='" + country + '\'' + ", players=" + Arrays.toString(players) + '}'; } } class Player { String name; int age; int yearsOfExperience; public Player(String name, int age, int yearsOfExperience) { this.name = name; this.age = age; this.yearsOfExperience = yearsOfExperience; } void introduce() { System.out.println("Hi, my name is " + name + ", I am " + age + " years old and have " + yearsOfExperience + " years of experience"); } @Override public String toString() { return "Player{" + "name='" + name + '\'' + ", age=" + age + ", yearsOfExperience=" + yearsOfExperience + '}'; } }
Nous avons créé 3 objets de la classe Player
et initialisé leurs champs via le constructeur. Ensuite, nous créons un tableau avec le type Player
et y ajoutons Bob, Alice et John.
Ensuite, nous créons un objet Team
et initialisons ses champs via le constructeur. Nous initialisons le champ players[]
avec le tableau précédemment créé.
Nous imprimons l'objet sur la console et voyons que l'objet Team
a des objets Player
dans la sortie.
Propriétaire et animal de compagnie
Regardons un autre exemple plus simple. Disons que nous avons un Owner
et un Pet
. Nous allons créer une classe séparée pour chacun.
La classe Pet
n'aura qu'un seul champ - String name
.
La classe Owner
aura deux champs - String name
et Pet pet
.
Pet
class Pet { String name; public Pet(String name) { this.name = name; } } class Owner { String name; Pet pet; public Owner(String name, Pet pet) { this.name = name; this.pet = pet; } }
Comme vous pouvez le voir, ces deux classes sont également connectées, car la classe Owner
a un champ de type Pet
(qui est la classe que nous avons créée nous-mêmes !).
Merci pour vos commentaires !