Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Uso de Clases Complejas | Clases Avanzadas
Java Avanzado
course content

Contenido del Curso

Java Avanzado

Java Avanzado

1. Estructura Profunda de Java
2. Métodos
3. String Avanzado
4. Clases
5. Clases Avanzadas

book
Uso de Clases Complejas

Uso de objetos de clase en otra clase

Ahora discutiremos el uso más complejo de las clases, específicamente el uso de objetos de clase dentro de otra clase.

Equipo y jugadores

Imaginemos una situación en la que tenemos una clase Team. Cada equipo debe tener jugadores. Podríamos llenar el campo players con valores String simples que representen sus nombres, pero esa no sería la mejor práctica. Sería mucho mejor crear una clase Player con sus propios campos y métodos y luego crear un arreglo de objetos Player dentro de la clase Team. Consideremos un ejemplo:

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 puedes ver, estamos utilizando un arreglo de objetos Player en el campo players de la clase Team. A partir de esto, podemos sacar algunas conclusiones:

  1. Es posible crear arreglos de objetos a partir de una clase propia;
  2. Es posible utilizar objetos de una clase dentro de otra clase para mejorar la lógica general.

Pero surge la pregunta: ¿Cómo llenamos este arreglo?

Respuesta: Para ello, es necesario crear varios objetos Player y agregarlos al arreglo de jugadores. Creemos un Dream Team en el método principal y veamos un ejemplo:

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

Creamos 3 objetos de la clase Player e inicializamos sus campos a través del constructor. Luego creamos un arreglo de tipo Player y agregamos a Bob, Alice y John. A continuación, creamos un objeto Team e inicializamos sus campos mediante el constructor. Inicializamos el campo players[] con el arreglo previamente creado. Imprimimos el objeto en la consola y observamos que el objeto Team contiene objetos Player en la salida.

Propietario y mascota

Veamos otro ejemplo más sencillo. Supongamos que tenemos un Owner y un Pet. Crearemos una clase separada para cada uno. La clase Pet tendrá solo un campo: String name. La clase Owner tendrá dos campos: String name y 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 puedes observar, estas dos clases también están conectadas, ya que la clase Owner tiene un campo de tipo Pet (¡que es la clase que creamos nosotros mismos!).

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 5. Capítulo 1

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

course content

Contenido del Curso

Java Avanzado

Java Avanzado

1. Estructura Profunda de Java
2. Métodos
3. String Avanzado
4. Clases
5. Clases Avanzadas

book
Uso de Clases Complejas

Uso de objetos de clase en otra clase

Ahora discutiremos el uso más complejo de las clases, específicamente el uso de objetos de clase dentro de otra clase.

Equipo y jugadores

Imaginemos una situación en la que tenemos una clase Team. Cada equipo debe tener jugadores. Podríamos llenar el campo players con valores String simples que representen sus nombres, pero esa no sería la mejor práctica. Sería mucho mejor crear una clase Player con sus propios campos y métodos y luego crear un arreglo de objetos Player dentro de la clase Team. Consideremos un ejemplo:

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 puedes ver, estamos utilizando un arreglo de objetos Player en el campo players de la clase Team. A partir de esto, podemos sacar algunas conclusiones:

  1. Es posible crear arreglos de objetos a partir de una clase propia;
  2. Es posible utilizar objetos de una clase dentro de otra clase para mejorar la lógica general.

Pero surge la pregunta: ¿Cómo llenamos este arreglo?

Respuesta: Para ello, es necesario crear varios objetos Player y agregarlos al arreglo de jugadores. Creemos un Dream Team en el método principal y veamos un ejemplo:

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

Creamos 3 objetos de la clase Player e inicializamos sus campos a través del constructor. Luego creamos un arreglo de tipo Player y agregamos a Bob, Alice y John. A continuación, creamos un objeto Team e inicializamos sus campos mediante el constructor. Inicializamos el campo players[] con el arreglo previamente creado. Imprimimos el objeto en la consola y observamos que el objeto Team contiene objetos Player en la salida.

Propietario y mascota

Veamos otro ejemplo más sencillo. Supongamos que tenemos un Owner y un Pet. Crearemos una clase separada para cada uno. La clase Pet tendrá solo un campo: String name. La clase Owner tendrá dos campos: String name y 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 puedes observar, estas dos clases también están conectadas, ya que la clase Owner tiene un campo de tipo Pet (¡que es la clase que creamos nosotros mismos!).

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 5. Capítulo 1
some-alt