Uso de Classes Complexas
Utilizando objetos de classe em outra classe
Agora será discutido o uso mais complexo de classes, especificamente a utilização de objetos de classe dentro de outra classe.
Equipe e jogadores
Imagine uma situação em que existe uma classe Team
. Cada equipe deve ter jogadores. Poderíamos preencher o campo players
com valores simples do tipo String
representando seus nomes, mas essa não seria a melhor prática. É muito melhor criar uma classe Player
com seus próprios campos e métodos e, em seguida, criar um array de objetos Player
dentro da classe Team
.
Vamos analisar um exemplo:
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"); } }
Como pode ser visto, estamos utilizando um array de objetos Player
no campo players
da classe Team
. A partir disso, podemos tirar algumas conclusões:
- É possível criar arrays de objetos a partir de nossas próprias classes criadas;
- É possível utilizar objetos de uma classe dentro de outra classe para aprimorar a lógica geral.
Mas surge a seguinte questão: Como preencher esse array?
Resposta: Para isso, é necessário criar vários objetos Player
e adicioná-los ao array de jogadores. Vamos criar um Dream Team no método principal e ver um exemplo:
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 + '}'; } }
Foram criados 3 objetos da classe Player
e seus campos foram inicializados por meio do construtor. Em seguida, é criado um array do tipo Player
e adicionados Bob, Alice e John a ele.
Depois, é criado um objeto Team
e seus campos são inicializados pelo construtor. O campo players[]
é inicializado com o array criado anteriormente.
O objeto é impresso no console e é possível ver que o objeto Team
possui objetos Player
na saída.
Owner and pet
Vamos analisar outro exemplo mais simples. Suponha que temos um Owner
e um Pet
. Será criada uma classe separada para cada um.
A classe Pet
terá apenas um campo - String name
.
A classe Owner
terá dois campos - 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; } }
Como pode ser observado, essas duas classes também estão conectadas, pois a classe Owner
possui um campo do tipo Pet
(que é a classe que criamos!).
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Can you show me the code examples for these classes?
How do I create and link Owner and Pet objects in practice?
What are the benefits of using objects of one class inside another?
Awesome!
Completion rate improved to 2.63
Uso de Classes Complexas
Deslize para mostrar o menu
Utilizando objetos de classe em outra classe
Agora será discutido o uso mais complexo de classes, especificamente a utilização de objetos de classe dentro de outra classe.
Equipe e jogadores
Imagine uma situação em que existe uma classe Team
. Cada equipe deve ter jogadores. Poderíamos preencher o campo players
com valores simples do tipo String
representando seus nomes, mas essa não seria a melhor prática. É muito melhor criar uma classe Player
com seus próprios campos e métodos e, em seguida, criar um array de objetos Player
dentro da classe Team
.
Vamos analisar um exemplo:
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"); } }
Como pode ser visto, estamos utilizando um array de objetos Player
no campo players
da classe Team
. A partir disso, podemos tirar algumas conclusões:
- É possível criar arrays de objetos a partir de nossas próprias classes criadas;
- É possível utilizar objetos de uma classe dentro de outra classe para aprimorar a lógica geral.
Mas surge a seguinte questão: Como preencher esse array?
Resposta: Para isso, é necessário criar vários objetos Player
e adicioná-los ao array de jogadores. Vamos criar um Dream Team no método principal e ver um exemplo:
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 + '}'; } }
Foram criados 3 objetos da classe Player
e seus campos foram inicializados por meio do construtor. Em seguida, é criado um array do tipo Player
e adicionados Bob, Alice e John a ele.
Depois, é criado um objeto Team
e seus campos são inicializados pelo construtor. O campo players[]
é inicializado com o array criado anteriormente.
O objeto é impresso no console e é possível ver que o objeto Team
possui objetos Player
na saída.
Owner and pet
Vamos analisar outro exemplo mais simples. Suponha que temos um Owner
e um Pet
. Será criada uma classe separada para cada um.
A classe Pet
terá apenas um campo - String name
.
A classe Owner
terá dois campos - 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; } }
Como pode ser observado, essas duas classes também estão conectadas, pois a classe Owner
possui um campo do tipo Pet
(que é a classe que criamos!).
Obrigado pelo seu feedback!