Objektsammensetning
Bygg større objekter ved å kombinere mindre objekter. Sammensetning modellerer har-en-relasjoner, for eksempel en Car som har en Engine.
Objektsammensetning er en gratis leksjon i Java Academy på CoddyKit. Dette er leksjon 2 av 3. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Java Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Java Academy inneholder totalt 3 leksjoner.
Definisjon
Komposisjon betyr å bygge et større objekt av mindre objekter som det eier. Det er en has-a-relasjon: en Car har en Engine. Dette holder klassene små og fokuserte, og det større objektet delegerer arbeidet til delene.
Fordeler
Komposisjon gjør gjenbruk enklere: De kan bytte ut en del uten å endre helheten. Det forbedrer også testbarheten, fordi hver del kan testes separat. Start enkelt: la én klasse avhenge av en annen gjennom felt.
Komposisjon mot arv
Arv er en is-a-relasjon (en Square er en Shape). Komposisjon er en has-a-relasjon (en Car har en Engine). Foretrekk komposisjon først, og bruk bare arv når en ekte is-a-relasjon passer naturlig.
Eierskap og livssyklus
Når et objekt eier delene sine, har det ansvar for å opprette og bruke dem. Delene eksisterer vanligvis ikke uavhengig; de finnes fordi helheten finnes. Denne ideen holder ansvarsområdene tydelige.
Utformingssteg
Velg helheten (Car) og delene (Engine). List opp hva hver del vet og gjør. Legg deretter delobjektene som felt inne i helheten, og skriv små metoder som bruker delene til å utføre arbeid.
Kode: has-a-eksempel
Kode: Car eier en Engine og kaller metoden dens. Ved å opprette delen først og sende den inn holdes 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();
}
}
Komposisjonssjekk
Rask sjekk: Hvilket utsagn beskriver komposisjon best?
Oppsummering
Oppsummering: Komposisjon modellerer has-a. Start med en liten del, gi den en tydelig oppgave, og la helhetsobjektet bruke den gjennom enkle metodekall.
Lær deg Java med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 104
- Leksjoner
- 374
Ofte stilte spørsmål
Er leksjonen «Objektsammensetning» gratis?
Ja – hele teksten i «Objektsammensetning» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Java Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Java Academy inneholder totalt 3 leksjoner.
Hva lærer jeg i «Objektsammensetning»?
Bygg større objekter ved å kombinere mindre objekter. Sammensetning modellerer har-en-relasjoner, for eksempel en Car som har en Engine. Du øver på Java Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Java Academy?
Ingen tidligere erfaring er nødvendig. Java Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 3.
Hvor lang tid tar leksjonen «Objektsammensetning»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Java Academy-leksjonen?
Ja. Alle Java Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- this og toString/equals/hashCode
- Objektsammensetning
- Modellering av et domene (UML→kode)