Java Academy · Lektion

Objektsammensætning

Opbyg større objekter ved at kombinere mindre. Sammensætning modellerer har-en-relationer, f.eks. en Car, der har en Engine.

Lektion 2 af 38 trin

Objektsammensætning er en gratis Java Academy-lektion på CoddyKit. Dette er lektion 2 af 3. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Java Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Java Academy-kurset indeholder 3 lektioner i alt.

Definition

Komposition betyder, at du bygger et større objekt af mindre objekter, som det ejer. Det er en har-en-relation: En Car har en Engine. Det holder klasser små og fokuserede, og det store objekt uddelegerer arbejdet til sine dele.

Fordele

Komposition gør det lettere at genbruge kode: Du kan udskifte en del uden at ændre helheden. Det forbedrer også testbarheden, fordi hver del kan testes separat. Begynd enkelt: Lad én klasse afhænge af en anden gennem felter.

Komposition kontra nedarvning

Nedarvning er en er-en-relation (En Square er en Shape). Komposition er en har-en-relation (En Car har en Engine). Foretræk komposition først, og brug kun nedarvning, når en ægte er-en-relation passer naturligt.

Ejerskab og livscyklus

Når et objekt ejer sine dele, er det ansvarligt for at oprette og bruge dem. Delene lever normalt ikke alene; de findes, fordi helheden findes. Denne idé gør ansvarsområderne tydelige.

Trin i udformningen

Vælg helheden (Car) og delene (Engine). Skriv ned, hvad hver del ved og gør. Gør derefter delobjekterne til felter i helheden, og skriv små metoder, der bruger delene til at udføre arbejdet.

Kode: eksempel på har-en-relation

Kode: Car ejer en Engine og kalder dens metode. Hvis du opretter delen først og sender den ind, bliver koden enkel og fleksibel.

public class Main {
  // Very small classes to show composition (has-a)
  static class Engine {
    int horsepower;
    Engine(int hp) { horsepower = hp; }
    String info() { return horsepower + " HP engine"; }
  }

  static class Car {
    String model;
    Engine engine; // Car has an Engine (composition)
    Car(String m, Engine e) {
      model = m;
      engine = e; // store the part
    }
    void printSpecs() {
      // Use the part to build a message
      System.out.println(model + " with " + engine.info());
    }
  }

  public static void main(String[] args) {
    // Create part first
    Engine e = new Engine(90);
    // Assemble whole with the part
    Car c = new Car("CityCar", e);
    // Use the whole, which delegates to its part
    c.printSpecs();
  }
}

Kontrol af komposition

Hurtigt tjek: Hvilket udsagn beskriver bedst, hvad komposition er?

Opsummering

Opsummering: Komposition modellerer har-en-relationer. Begynd med en lille del, giv den en tydelig opgave, og lad helhedsobjektet bruge den gennem enkle metodekald.

Gratis at komme i gang

Lær Java med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
104
Lektioner
374

Ofte stillede spørgsmål

Er lektionen “Objektsammensætning” gratis?

Ja — hele teksten til “Objektsammensætning” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Java Academy-kurset, skal du opgradere til CoddyKit PRO. Java Academy-kurset indeholder 3 lektioner i alt.

Hvad lærer jeg i “Objektsammensætning”?

Opbyg større objekter ved at kombinere mindre. Sammensætning modellerer har-en-relationer, f.eks. en Car, der har en Engine. Du øver dig i Java Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Java Academy?

Der kræves ingen tidligere erfaring. Java Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 3.

Hvor lang tid tager lektionen “Objektsammensætning”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Java Academy-lektion?

Ja. Alle Java Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. this og toString/equals/hashCode
  2. Objektsammensætning
  3. Modellering af et domæne (UML→kode)
← Tilbage til Java Academy