Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Bruk av Komplekse Klasser | Avanserte Klasser
Java Utvidet
course content

Kursinnhold

Java Utvidet

Java Utvidet

1. Dyp Java-struktur
2. Metoder
3. Avansert Streng
4. Klasser
5. Avanserte Klasser

book
Bruk av Komplekse Klasser

Bruk av klasseobjekter i en annen klasse

Nå skal vi se på mer avansert bruk av klasser, spesielt bruk av klasseobjekter innenfor en annen klasse.

Lag og spillere

La oss tenke oss en situasjon der vi har en Team-klasse. Hvert lag bør ha spillere. Vi kunne ha fylt players-feltet med enkle String-verdier som representerer navnene deres, men det ville ikke vært beste praksis. Det er mye bedre å lage en Player-klasse med egne felter og metoder, og deretter opprette et array av Player-objekter i Team-klassen. La oss se på 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, bruker vi et array av Player-objekter i players-feltet til Team-klassen. Ut fra dette kan vi trekke noen konklusjoner:

  1. Det er mulig å opprette arrayer av objekter fra egenutviklede klasser;
  2. Objekter fra én klasse kan brukes i en annen klasse for å forbedre den overordnede logikken.

Men spørsmålet oppstår: Hvordan fyller vi dette arrayet?

Svar: For å gjøre dette må vi opprette flere Player-objekter og legge dem til i arrayet av spillere. La oss opprette 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 opprettet 3 objekter av Player-klassen og initialiserte feltene deres via konstruktøren. Deretter oppretter vi et array med Player-typen og legger til Bob, Alice og John i det. Deretter oppretter vi et Team-objekt og initialiserer feltene via konstruktøren. Vi initialiserer players[]-feltet med det tidligere opprettede arrayet. Vi skriver ut objektet til konsollen og ser at Team-objektet inneholder Player-objekter i utdataene.

Eier og kjæledyr

La oss se på et annet, enklere eksempel. La oss si at vi har en Owner og et Pet. Vi lager en egen klasse for hver av dem. Pet-klassen vil kun ha ett felt – String name. Owner-klassen vil ha to felt – 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 klassene også koblet sammen, ettersom Owner-klassen har et felt av typen Pet (som er klassen vi selv har laget!).

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 1

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

course content

Kursinnhold

Java Utvidet

Java Utvidet

1. Dyp Java-struktur
2. Metoder
3. Avansert Streng
4. Klasser
5. Avanserte Klasser

book
Bruk av Komplekse Klasser

Bruk av klasseobjekter i en annen klasse

Nå skal vi se på mer avansert bruk av klasser, spesielt bruk av klasseobjekter innenfor en annen klasse.

Lag og spillere

La oss tenke oss en situasjon der vi har en Team-klasse. Hvert lag bør ha spillere. Vi kunne ha fylt players-feltet med enkle String-verdier som representerer navnene deres, men det ville ikke vært beste praksis. Det er mye bedre å lage en Player-klasse med egne felter og metoder, og deretter opprette et array av Player-objekter i Team-klassen. La oss se på 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, bruker vi et array av Player-objekter i players-feltet til Team-klassen. Ut fra dette kan vi trekke noen konklusjoner:

  1. Det er mulig å opprette arrayer av objekter fra egenutviklede klasser;
  2. Objekter fra én klasse kan brukes i en annen klasse for å forbedre den overordnede logikken.

Men spørsmålet oppstår: Hvordan fyller vi dette arrayet?

Svar: For å gjøre dette må vi opprette flere Player-objekter og legge dem til i arrayet av spillere. La oss opprette 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 opprettet 3 objekter av Player-klassen og initialiserte feltene deres via konstruktøren. Deretter oppretter vi et array med Player-typen og legger til Bob, Alice og John i det. Deretter oppretter vi et Team-objekt og initialiserer feltene via konstruktøren. Vi initialiserer players[]-feltet med det tidligere opprettede arrayet. Vi skriver ut objektet til konsollen og ser at Team-objektet inneholder Player-objekter i utdataene.

Eier og kjæledyr

La oss se på et annet, enklere eksempel. La oss si at vi har en Owner og et Pet. Vi lager en egen klasse for hver av dem. Pet-klassen vil kun ha ett felt – String name. Owner-klassen vil ha to felt – 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 klassene også koblet sammen, ettersom Owner-klassen har et felt av typen Pet (som er klassen vi selv har laget!).

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 1
some-alt