Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Brug af Komplekse Klasser | Avancerede Klasser
Java Udvidet
course content

Kursusindhold

Java Udvidet

Java Udvidet

1. Dyb Java-Struktur
2. Metoder
3. String Avanceret
4. Klasser
5. Avancerede Klasser

book
Brug af Komplekse Klasser

Brug af klasseobjekter i en anden klasse

Nu vil vi diskutere den mere komplekse anvendelse af klasser, specifikt brugen af klasseobjekter inden for en anden klasse.

Hold og spillere

Lad os forestille os en situation, hvor vi har en Team-klasse. Hvert hold skal have spillere. Vi kunne udfylde players-feltet med simple String-værdier, der repræsenterer deres navne, men det ville ikke være den bedste praksis. Det ville være meget bedre at oprette en Player-klasse med sine egne felter og metoder og derefter oprette et array af Player-objekter inden for Team-klassen. Lad os overveje et eksempel:

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

Som du kan se, bruger vi et array af Player-objekter i players-feltet i Team-klassen. Ud fra dette kan vi drage nogle konklusioner:

  1. Vi kan oprette arrays af objekter fra vores egen definerede klasse;
  2. Vi kan anvende objekter fra én klasse inden for en anden klasse for at forbedre den overordnede logik.

Men spørgsmålet opstår: Hvordan udfylder vi dette array?

Svar: For at gøre dette skal vi oprette flere Player-objekter og tilføje dem til arrayet af spillere. Lad os oprette et Dream Team i main-metoden og se et eksempel:

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

Vi oprettede 3 objekter af Player-klassen og initialiserede deres felter via konstruktøren. Derefter opretter vi et array med typen Player og tilføjer Bob, Alice og John til det. Dernæst opretter vi et Team-objekt og initialiserer dets felter via konstruktøren. Vi initialiserer players[]-feltet med det tidligere oprettede array. Vi udskriver objektet til konsollen og ser, at Team-objektet indeholder Player-objekter i outputtet.

Ejer og kæledyr

Lad os se på et andet, enklere eksempel. Lad os sige, at vi har en Owner og et Pet. Vi opretter en separat klasse for hver. Pet-klassen vil kun have ét felt - String name. Owner-klassen vil have to felter - String name og 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; } }

Som du kan se, er disse to klasser også forbundet, da Owner-klassen har et felt af typen Pet (som er den klasse, vi selv har oprettet!).

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 1

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

course content

Kursusindhold

Java Udvidet

Java Udvidet

1. Dyb Java-Struktur
2. Metoder
3. String Avanceret
4. Klasser
5. Avancerede Klasser

book
Brug af Komplekse Klasser

Brug af klasseobjekter i en anden klasse

Nu vil vi diskutere den mere komplekse anvendelse af klasser, specifikt brugen af klasseobjekter inden for en anden klasse.

Hold og spillere

Lad os forestille os en situation, hvor vi har en Team-klasse. Hvert hold skal have spillere. Vi kunne udfylde players-feltet med simple String-værdier, der repræsenterer deres navne, men det ville ikke være den bedste praksis. Det ville være meget bedre at oprette en Player-klasse med sine egne felter og metoder og derefter oprette et array af Player-objekter inden for Team-klassen. Lad os overveje et eksempel:

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

Som du kan se, bruger vi et array af Player-objekter i players-feltet i Team-klassen. Ud fra dette kan vi drage nogle konklusioner:

  1. Vi kan oprette arrays af objekter fra vores egen definerede klasse;
  2. Vi kan anvende objekter fra én klasse inden for en anden klasse for at forbedre den overordnede logik.

Men spørgsmålet opstår: Hvordan udfylder vi dette array?

Svar: For at gøre dette skal vi oprette flere Player-objekter og tilføje dem til arrayet af spillere. Lad os oprette et Dream Team i main-metoden og se et eksempel:

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

Vi oprettede 3 objekter af Player-klassen og initialiserede deres felter via konstruktøren. Derefter opretter vi et array med typen Player og tilføjer Bob, Alice og John til det. Dernæst opretter vi et Team-objekt og initialiserer dets felter via konstruktøren. Vi initialiserer players[]-feltet med det tidligere oprettede array. Vi udskriver objektet til konsollen og ser, at Team-objektet indeholder Player-objekter i outputtet.

Ejer og kæledyr

Lad os se på et andet, enklere eksempel. Lad os sige, at vi har en Owner og et Pet. Vi opretter en separat klasse for hver. Pet-klassen vil kun have ét felt - String name. Owner-klassen vil have to felter - String name og 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; } }

Som du kan se, er disse to klasser også forbundet, da Owner-klassen har et felt af typen Pet (som er den klasse, vi selv har oprettet!).

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 1
some-alt