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
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 puedes ver, estamos utilizando un arreglo de objetos Player en el campo players de la clase Team. De esto, podemos sacar algunas conclusiones:
- Podemos crear arreglos de objetos a partir de nuestra propia clase creada;
- Podemos usar 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 hacer esto, necesitamos 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
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 + '}'; } }
Creamos 3 objetos de la clase Player e inicializamos sus campos a través del constructor. Luego creamos un arreglo del 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 creado previamente.
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 una 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
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 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!).
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 2.63
Uso de Clases Complejas
Desliza para mostrar el menú
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
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 puedes ver, estamos utilizando un arreglo de objetos Player en el campo players de la clase Team. De esto, podemos sacar algunas conclusiones:
- Podemos crear arreglos de objetos a partir de nuestra propia clase creada;
- Podemos usar 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 hacer esto, necesitamos 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
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 + '}'; } }
Creamos 3 objetos de la clase Player e inicializamos sus campos a través del constructor. Luego creamos un arreglo del 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 creado previamente.
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 una 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
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 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!).
¡Gracias por tus comentarios!