Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Uso de Classes Complexas | Classes Avançadas
Java Avançado
course content

Conteúdo do Curso

Java Avançado

Java Avançado

1. Estrutura Profunda do Java
2. Métodos
3. String Avançado
4. Classes
5. Classes Avançadas

book
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

Team.java

copy
1234567891011121314151617181920212223242526
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"); } }

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:

  1. É possível criar arrays de objetos a partir de nossas próprias classes criadas;
  2. É 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

Main.java

copy
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
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 + '}'; } }

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

Pet.java

copy
123456789101112131415161718
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; } }

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!).

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 5. Capítulo 1

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

course content

Conteúdo do Curso

Java Avançado

Java Avançado

1. Estrutura Profunda do Java
2. Métodos
3. String Avançado
4. Classes
5. Classes Avançadas

book
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

Team.java

copy
1234567891011121314151617181920212223242526
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"); } }

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:

  1. É possível criar arrays de objetos a partir de nossas próprias classes criadas;
  2. É 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

Main.java

copy
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
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 + '}'; } }

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

Pet.java

copy
123456789101112131415161718
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; } }

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!).

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 5. Capítulo 1
some-alt