Java Academy · Lektion

Objektkomposition

Bygg större objekt genom att kombinera mindre. Komposition modellerar has-a-relationer, till exempel en Car som har en Engine.

Lektion 2 av 38 steg

Objektkomposition är en gratis lektion i Java Academy på CoddyKit. Detta är lektion 2 av 3. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Java Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Java Academy innehåller totalt 3 lektioner.

Definition

Komposition innebär att bygga ett större objekt av mindre objekt som det äger. Det är en has-a-relation: en Car har en Engine. Det håller klasser små och fokuserade, och det större objektet delegerar arbete till sina delar.

Fördelar

Komposition underlättar återanvändning: ni kan byta ut en del utan att ändra helheten. Det förbättrar också testbarheten eftersom varje del kan testas separat. Börja enkelt: låt en klass vara beroende av en annan genom fält.

Komposition jämfört med arv

Arv är en is-a-relation (en Square är en Shape). Komposition är en has-a-relation (en Car har en Engine). Föredra komposition först och använd arv endast när en verklig is-a-relation passar naturligt.

Ägarskap och livscykel

När ett objekt äger sina delar ansvarar det för att skapa och använda dem. Delarna lever vanligtvis inte själva; de finns eftersom helheten finns. Denna idé håller ansvarsområdena tydliga.

Designsteg

Välj helheten (Car) och delarna (Engine). Lista vad varje del känner till och gör. Lägg sedan delobjekten som fält i helheten och skriv små metoder som använder delarna för att utföra arbete.

Kod: has-a-exempel

Kod: Car äger en Engine och anropar dess metod. Att skapa delen först och skicka in den håller koden enkel och flexibel.

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

Kompositionskontroll

Snabb kontroll: Vilket påstående beskriver komposition bäst?

Sammanfattning

Sammanfattning: Komposition modellerar has-a. Börja med en liten del, ge den en tydlig uppgift och låt helheten använda den genom enkla metodanrop.

Gratis att börja

Lär dig Java med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
104
Lektioner
374

Vanliga frågor

Är lektionen ”Objektkomposition” gratis?

Ja – hela texten till ”Objektkomposition” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Java Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Java Academy innehåller totalt 3 lektioner.

Vad lär jag mig i ”Objektkomposition”?

Bygg större objekt genom att kombinera mindre. Komposition modellerar has-a-relationer, till exempel en Car som har en Engine. Ni övar på Java Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Java Academy?

Du behöver inga förkunskaper. Utbildningen i Java Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 3.

Hur lång tid tar lektionen ”Objektkomposition”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Java Academy-lektionen?

Ja. Varje Java Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. this och toString/equals/hashCode
  2. Objektkomposition
  3. Modellera en domän (UML→kod)
← Tillbaka till Java Academy