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
- this oraz toString/equals/hashCode
- Kompozycja obiektów
- Modelowanie dziedziny (UML→kod)