0Pricing
Java Academy · Lekcja

Kompozycja obiektów

Zbudują Państwo większe obiekty, łącząc mniejsze. Kompozycja odwzorowuje relacje has-a, na przykład Car, który ma Engine.

Kompozycja obiektów to bezpłatna lekcja Java Academy na CoddyKit. To lekcja 2 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Java Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Java Academy zawiera 3 lekcji w sumie.

Definicja

Kompozycja oznacza budowanie większego obiektu z mniejszych obiektów, które posiada. Jest to relacja has-a: Car ma Engine. Dzięki temu klasy pozostają małe i skoncentrowane na konkretnych zadaniach, a większy obiekt deleguje pracę swoim częściom.

Korzyści

Kompozycja ułatwia ponowne wykorzystanie kodu: można wymienić część bez zmieniania całości. Poprawia także testowalność, ponieważ każdą część można testować osobno. Należy zacząć prosto: sprawić, aby jedna klasa zależała od drugiej za pośrednictwem pól.

Kompozycja a dziedziczenie

Dziedziczenie opisuje relację is-a (Square jest Shape). Kompozycja opisuje relację has-a (Car ma Engine). W pierwszej kolejności należy wybierać kompozycję, a dziedziczenie stosować tylko wtedy, gdy relacja is-a pasuje w naturalny sposób.

Własność i cykl życia

Gdy obiekt posiada swoje części, odpowiada za ich tworzenie i używanie. Części zwykle nie istnieją samodzielnie; istnieją dlatego, że istnieje całość. Ta zasada pomaga jasno określić odpowiedzialności.

Kroki projektowania

Należy wybrać całość (Car) i części (Engine). Następnie trzeba wypisać, co każda część wie i robi. Potem należy umieścić obiekty części jako pola wewnątrz całości oraz napisać małe metody, które wykorzystują te części do wykonywania pracy.

Kod: przykład relacji has-a

Kod: Car posiada Engine i wywołuje jego metodę. Utworzenie części wcześniej i przekazanie jej do obiektu upraszcza kod oraz zwiększa jego elastyczność.

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

Sprawdzenie kompozycji

Szybkie sprawdzenie: Które stwierdzenie najlepiej opisuje kompozycję?

Podsumowanie

Podsumowanie: Kompozycja modeluje relację has-a. Należy zacząć od małej części, przypisać jej jasno określone zadanie i pozwolić, aby cały obiekt korzystał z niej za pomocą prostych wywołań metod.

Często zadawane pytania

Czy lekcja „Kompozycja obiektów” jest bezpłatna?

Tak — pełny tekst „Kompozycja obiektów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Java Academy, przejdź na CoddyKit PRO. Kurs Java Academy zawiera 3 lekcji w sumie.

Co nauczysz się w „Kompozycja obiektów”?

Zbudują Państwo większe obiekty, łącząc mniejsze. Kompozycja odwzorowuje relacje has-a, na przykład Car, który ma Engine. Ćwiczysz Java Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Java Academy?

Nie wymagamy żadnego doświadczenia. Java Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 3.

Ile czasu zajmuje lekcja „Kompozycja obiektów”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Java Academy?

Tak. Każda lekcja Java Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. this oraz toString/equals/hashCode
  2. Kompozycja obiektów
  3. Modelowanie dziedziny (UML→kod)
← Powrót do Java Academy