Contenuti del Corso
Java Avanzato
Java Avanzato
Utilizzo di Classi Complesse
Utilizzo di oggetti di classe in un'altra classe
Ora discuteremo l'uso più complesso delle classi, in particolare l'utilizzo di oggetti di classe all'interno di un'altra classe.
Squadra e giocatori
Immaginiamo una situazione in cui abbiamo una classe Team
. Ogni squadra dovrebbe avere dei giocatori. Potremmo riempire il campo players
con semplici valori String
che rappresentano i loro nomi, ma non sarebbe la pratica migliore. Sarebbe molto meglio creare una classe Player
con i propri campi e metodi e poi creare un array di oggetti Player
all'interno della classe Team
.
Consideriamo un esempio:
Team.java
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"); } }
Come puoi vedere, stiamo utilizzando un array di oggetti Player
nel campo players
della classe Team
. Da ciò possiamo trarre alcune conclusioni:
- È possibile creare array di oggetti a partire da una classe creata da noi;
- È possibile utilizzare oggetti di una classe all'interno di un'altra classe per migliorare la logica complessiva.
Ma sorge una domanda: Come si riempie questo array?
Risposta: Per farlo, è necessario creare diversi oggetti Player
e aggiungerli all'array di giocatori. Creiamo un Dream Team nel metodo main e vediamo un esempio:
Main.java
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 + '}'; } }
Abbiamo creato 3 oggetti della classe Player
e inizializzato i loro campi tramite il costruttore. Successivamente creiamo un array di tipo Player
e vi aggiungiamo Bob, Alice e John.
Poi creiamo un oggetto Team
e inizializziamo i suoi campi tramite il costruttore. Inizializziamo il campo players[]
con l'array creato in precedenza.
Stampiamo l'oggetto sulla console e vediamo che l'oggetto Team
contiene oggetti Player
nell'output.
Proprietario e animale domestico
Vediamo un altro esempio più semplice. Supponiamo di avere un Owner
e un Pet
. Creeremo una classe separata per ciascuno.
La classe Pet
avrà un solo campo - String name
.
La classe Owner
avrà due campi - String name
e Pet pet
.
Pet.java
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; } }
Come puoi vedere, queste due classi sono anch'esse collegate, poiché la classe Owner
possiede un campo di tipo Pet
(che è la classe che abbiamo creato noi stessi!).
Grazie per i tuoi commenti!