Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Verwendung Komplexer Klassen | Klassen Fortgeschritten
Java Erweitert
course content

Kursinhalt

Java Erweitert

Java Erweitert

1. Tiefe Java-Struktur
2. Methoden
3. String Advanced
4. Klassen
5. Klassen Fortgeschritten

book
Verwendung Komplexer Klassen

Verwendung von Klassenobjekten in einer anderen Klasse

Nun besprechen wir die komplexere Nutzung von Klassen, insbesondere die Verwendung von Klassenobjekten innerhalb einer anderen Klasse.

Team und Spieler

Stellen wir uns eine Situation vor, in der wir eine Team-Klasse haben. Jedes Team sollte Spieler haben. Wir könnten das Feld players mit einfachen String-Werten füllen, die ihre Namen repräsentieren, aber das wäre nicht die beste Vorgehensweise. Es ist wesentlich besser, eine Player-Klasse mit eigenen Feldern und Methoden zu erstellen und dann ein Array von Player-Objekten innerhalb der Team-Klasse zu verwenden. Betrachten wir ein Beispiel:

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

Wie Sie sehen können, verwenden wir ein Array von Player-Objekten im Feld players der Klasse Team. Daraus lassen sich einige Schlussfolgerungen ziehen:

  1. Es können Objekt-Arrays aus selbst erstellten Klassen erzeugt werden;
  2. Objekte einer Klasse können innerhalb einer anderen Klasse verwendet werden, um die Gesamtlogik zu verbessern.

Es stellt sich jedoch die Frage: Wie füllen wir dieses Array?

Antwort: Dazu müssen mehrere Player-Objekte erstellt und dem Array von Spielern hinzugefügt werden. Im Folgenden wird im Hauptprogramm ein Dream Team erstellt und ein Beispiel gezeigt:

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

Es wurden 3 Objekte der Klasse Player erstellt und deren Felder über den Konstruktor initialisiert. Anschließend wird ein Array vom Typ Player erstellt und Bob, Alice und John hinzugefügt. Danach wird ein Team-Objekt erstellt und dessen Felder über den Konstruktor initialisiert. Das Feld players[] wird mit dem zuvor erstellten Array initialisiert. Das Objekt wird auf der Konsole ausgegeben, wobei im Ergebnis zu sehen ist, dass das Team-Objekt Player-Objekte enthält.

Besitzer und Haustier

Betrachten wir ein weiteres, einfacheres Beispiel. Angenommen, es gibt einen Owner und ein Pet. Für jede Klasse wird eine eigene Klasse erstellt. Die Klasse Pet besitzt nur ein Feld – String name. Die Klasse Owner besitzt zwei Felder – String name und 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; } }

Wie Sie sehen können, sind diese beiden Klassen ebenfalls miteinander verbunden, da die Klasse Owner ein Feld vom Typ Pet besitzt (welches die von uns selbst erstellte Klasse ist!).

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 1

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

course content

Kursinhalt

Java Erweitert

Java Erweitert

1. Tiefe Java-Struktur
2. Methoden
3. String Advanced
4. Klassen
5. Klassen Fortgeschritten

book
Verwendung Komplexer Klassen

Verwendung von Klassenobjekten in einer anderen Klasse

Nun besprechen wir die komplexere Nutzung von Klassen, insbesondere die Verwendung von Klassenobjekten innerhalb einer anderen Klasse.

Team und Spieler

Stellen wir uns eine Situation vor, in der wir eine Team-Klasse haben. Jedes Team sollte Spieler haben. Wir könnten das Feld players mit einfachen String-Werten füllen, die ihre Namen repräsentieren, aber das wäre nicht die beste Vorgehensweise. Es ist wesentlich besser, eine Player-Klasse mit eigenen Feldern und Methoden zu erstellen und dann ein Array von Player-Objekten innerhalb der Team-Klasse zu verwenden. Betrachten wir ein Beispiel:

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

Wie Sie sehen können, verwenden wir ein Array von Player-Objekten im Feld players der Klasse Team. Daraus lassen sich einige Schlussfolgerungen ziehen:

  1. Es können Objekt-Arrays aus selbst erstellten Klassen erzeugt werden;
  2. Objekte einer Klasse können innerhalb einer anderen Klasse verwendet werden, um die Gesamtlogik zu verbessern.

Es stellt sich jedoch die Frage: Wie füllen wir dieses Array?

Antwort: Dazu müssen mehrere Player-Objekte erstellt und dem Array von Spielern hinzugefügt werden. Im Folgenden wird im Hauptprogramm ein Dream Team erstellt und ein Beispiel gezeigt:

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

Es wurden 3 Objekte der Klasse Player erstellt und deren Felder über den Konstruktor initialisiert. Anschließend wird ein Array vom Typ Player erstellt und Bob, Alice und John hinzugefügt. Danach wird ein Team-Objekt erstellt und dessen Felder über den Konstruktor initialisiert. Das Feld players[] wird mit dem zuvor erstellten Array initialisiert. Das Objekt wird auf der Konsole ausgegeben, wobei im Ergebnis zu sehen ist, dass das Team-Objekt Player-Objekte enthält.

Besitzer und Haustier

Betrachten wir ein weiteres, einfacheres Beispiel. Angenommen, es gibt einen Owner und ein Pet. Für jede Klasse wird eine eigene Klasse erstellt. Die Klasse Pet besitzt nur ein Feld – String name. Die Klasse Owner besitzt zwei Felder – String name und 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; } }

Wie Sie sehen können, sind diese beiden Klassen ebenfalls miteinander verbunden, da die Klasse Owner ein Feld vom Typ Pet besitzt (welches die von uns selbst erstellte Klasse ist!).

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 1
some-alt