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
1234567891011121314151617181920212223242526class 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 questo possiamo trarre alcune conclusioni:
- È possibile creare array di oggetti dalla propria classe creata;
- È possibile utilizzare oggetti di una classe all'interno di un'altra classe per migliorare la logica complessiva.
Ma sorge la domanda: Come si riempie questo array?
Risposta: Per farlo, è necessario creare diversi oggetti Player e aggiungerli all'array di giocatori. Creiamo una Dream Team nel metodo main e vediamo un esempio:
Main.java
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465package 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.
Successivamente, creiamo un oggetto Team e inizializziamo i suoi campi tramite il costruttore. Inizializziamo il campo players[] con l'array creato precedentemente.
Stampiamo l'oggetto sulla console e vediamo che l'oggetto Team contiene oggetti Player nell'output.
Proprietario e Animale domestico
Consideriamo un altro esempio più semplice. Supponiamo di avere un Owner e un Pet. Creeremo una classe separata per ciascuno.
La classe Pet avrà solo un campo - String name.
La classe Owner avrà due campi - String name e Pet pet.
Pet.java
123456789101112131415161718class 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!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 2.63
Utilizzo di Classi Complesse
Scorri per mostrare il menu
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
1234567891011121314151617181920212223242526class 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 questo possiamo trarre alcune conclusioni:
- È possibile creare array di oggetti dalla propria classe creata;
- È possibile utilizzare oggetti di una classe all'interno di un'altra classe per migliorare la logica complessiva.
Ma sorge la domanda: Come si riempie questo array?
Risposta: Per farlo, è necessario creare diversi oggetti Player e aggiungerli all'array di giocatori. Creiamo una Dream Team nel metodo main e vediamo un esempio:
Main.java
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465package 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.
Successivamente, creiamo un oggetto Team e inizializziamo i suoi campi tramite il costruttore. Inizializziamo il campo players[] con l'array creato precedentemente.
Stampiamo l'oggetto sulla console e vediamo che l'oggetto Team contiene oggetti Player nell'output.
Proprietario e Animale domestico
Consideriamo un altro esempio più semplice. Supponiamo di avere un Owner e un Pet. Creeremo una classe separata per ciascuno.
La classe Pet avrà solo un campo - String name.
La classe Owner avrà due campi - String name e Pet pet.
Pet.java
123456789101112131415161718class 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!