23.x — Podsumowanie i quiz rozdziału 23

W tym rozdziale poznaliśmy różne rodzaje relacji między dwoma obiektami.

Streszczenie

Proces budowania złożonych obiektów z prostszych nazywa się kompozycją obiektu. Istnieją dwa typy kompozycji obiektów: kompozycja i agregacja.

Kompozycja istnieje, gdy członek klasy ma częściową relację z klasą. W relacji kompozycji klasa zarządza istnieniem jej członków. Aby zakwalifikować się jako kompozycję, obiekt i część muszą pozostawać w następującej relacji:

  • Część (element) jest częścią obiektu (klasa)
  • Część (element) może należeć tylko do jednego obiektu (klasy) w danym momencie
  • Część (element) ma swoje istnienie zarządzane przez obiekt (klasę)
  • Część (element) nie wie o istnieniu obiektu (klasy)

Kompozycja jest zwykle implementowana za pomocą normalnych zmiennych składowych lub wskaźników, gdzie klasa zarządza całą alokacją i dezalokacją pamięci. Jeśli możesz zaimplementować klasę jako kompozycję, powinieneś zaimplementować klasę jako kompozycję.

Agregacje istnieją, gdy klasa ma relację ma z członkiem. W relacji agregacji klasa nie zarządza istnieniem członków. Aby zakwalifikować się jako agregacja, obiekt i jego części muszą pozostawać w następującej relacji:

  • Część (element) jest częścią obiektu (klasa)
  • Część (element) może należeć do więcej niż jednego obiektu (klasy) naraz
  • Część (element) nie jego istnieniem nie zarządza obiekt (klasa)
  • Część (element) nie wie o istnieniu obiektu (klasy)

Agregacje są zazwyczaj realizowane za pomocą wskaźnika lub referencji.

Skojarzenia to luźniejszy typ relacji, w którym klasa wykorzystuje obiekt w przeciwnym razie niepowiązany. Aby zakwalifikować się jako skojarzenie, obiekt i skojarzony obiekt muszą pozostawać w następującej relacji:

  • Powiązany obiekt (element) nie jest w żaden sposób powiązany z obiektem (klasą)
  • Powiązany obiekt (element) może należeć do więcej niż jednego obiektu (klasy) naraz
  • Powiązany obiekt (członek) nie jego istnieniem nie zarządza obiekt (klasa)
  • Powiązany obiekt (członek) może wiedzieć o istnieniu obiektu (klasy) lub nie.

Skojarzenia mogą być implementowane poprzez wskaźnik lub odwołanie, albo w sposób bardziej pośredni (taki jak trzymanie indeksu lub klucza skojarzonego obiektu).

W zależności jedna klasa używa innej klasy do wykonania zadania. Klasa zależna zazwyczaj nie jest członkiem klasy, która z niej korzysta, lecz jest tymczasowo tworzona, używana, a następnie niszczona lub przekazywana do funkcji składowej ze źródła zewnętrznego.

W klasą kontenera jedna klasa zapewnia kontener do przechowywania wielu obiektów innego typu. Pojemnik na wartości to kompozycja przechowująca kopie przechowywanych w nim obiektów. Kontener referencyjny to agregacja przechowująca wskaźniki lub odniesienia do obiektów znajdujących się poza kontenerem.

std::initializer_list może służyć do implementowania konstruktorów, operatorów przypisania i innych funkcji, które akceptują parametr inicjujący listę. std::initializer_list znajduje się w nagłówku <initializer_list>.

Właściwość\TypKompozycjaAgregacjaStowarzyszenieDependency
Typ powiązaniaCała/częśćCała/częśćW inny sposób niepowiązanyW inny sposób niepowiązany
Członkowie mogą należeć do wielu klasyNieTakTakTak
Istnienie członków zarządzane przez klasęTakNieNieNie
KierunkowośćJednokierunkowaJednokierunkowaJednokierunkowa lub dwukierunkowaJednokierunkowa
Zależność czasownikCzęśćMa-aUżywa-aDepends-on

Czas quizu

Ten rozdział jest całkiem prosty i nieco bardziej abstrakcyjny niż poprzednie, więc ten quiz będzie krótki i treściwy punkt.

  1. Jaki typ relacji (skład, agregacja, powiązanie lub zależność) opisują poniższe?

1a) Klasa Animal zawierająca typ zwierzęcia (enum) i nazwę (string).
Pokaż rozwiązanie

1b) Klasa edytora tekstu z funkcją save(), która przyjmuje funkcję save() Obiekt pliku jako argument. Funkcja save() zapisuje zawartość edytora na dysk.
Pokaż rozwiązanie

1c) Klasa Poszukiwacza Przygód, która może przenosić różnego rodzaju Przedmioty, takie jak miecze, różdżki, mikstury czy księgi zaklęć. Przedmioty te mogą być upuszczane i zbierane przez innych Poszukiwaczy Przygód.
Pokaż rozwiązanie

1d) Gracz modli się w Kaplicy (aby otrzymać nową moc).
Pokaż rozwiązanie

1e) Klasa komputera zawierająca klasę procesora. Procesor można wyjąć z komputera i przetestować samodzielnie.
Pokaż rozwiązanie

1f) Kowal ma specyficzne kowadło, którego używa do wykonywania swojej pracy.
Pokaż rozwiązanie

  1. Wybierz jedno: Jeśli możesz zaprojektować klasę za pomocą (wybierz jedną: kompozycję, agregację, powiązanie lub zależność), powinieneś to zrobić.

Pokaż rozwiązanie

guest
Twój adres e-mail nie zostanie wyświetlony
Znalazłeś błąd? Zostaw komentarz powyżej!
Komentarze związane z poprawkami zostaną usunięte po przetworzeniu, aby pomóc zmniejszyć bałagan. Dziękujemy za pomoc w ulepszaniu witryny dla wszystkich!
Awatary z https://gravatar.com/ są połączone z podanym adresem e-mail.
Powiadamiaj mnie o odpowiedziach:  
87 Komentarze
Najnowsze
Najstarsze Najczęściej głosowane
Wbudowane opinie
Wyświetl wszystkie komentarze