23.1 — Obiekt relacje

Życie jest pełne powtarzających się wzorców, relacji i hierarchii między obiektami. Badając je i rozumiejąc, możemy uzyskać wgląd w zachowanie rzeczywistych obiektów, co pogłębia naszą wiedzę na temat tych obiektów.

Załóżmy na przykład, że pewnego dnia idziesz ulicą i widzisz jasnożółty obiekt przyczepiony do zielonego, krzewiastego obiektu. Prawdopodobnie rozpoznałbyś, że to jasnożółte coś to kwiat, a zielone krzewy to roślina. Nawet jeśli nigdy wcześniej nie widziałeś tego konkretnego rodzaju roślin, wiesz, że zielone rzeczy to liście zbierające światło słoneczne. Wiesz, że kwiat pomaga roślinie się rozmnażać. Wiedziałbyś także, że jeśli zabijesz roślinę, kwiat też umrze.

Ale skąd możesz to wszystko wiedzieć, nie spotkawszy nigdy wcześniej rośliny tego typu? Wiesz o tym, ponieważ rozumiesz abstrakcyjną koncepcję roślin i rozpoznajesz, że ta roślina jest ucieleśnieniem tej abstrakcji. Wiesz, że większość roślin składa się (częściowo) z liści, a niektóre mają kwiaty. Wiesz, że liście oddziałują ze światłem słonecznym (nawet jeśli nie wiesz dokładnie w jaki sposób) i że istnienie kwiatu zależy od rośliny. Ponieważ ogólnie wiesz wszystko o roślinach, możesz wiele wywnioskować na ich temat.

Podobnie programowanie jest również pełne powtarzających się wzorców, relacji i hierarchii. Szczególnie jeśli chodzi o programowanie obiektów, te same wzorce, które rządzą obiektami w prawdziwym życiu, mają zastosowanie do obiektów programowania, które sami tworzymy. Badając je bardziej szczegółowo, możemy lepiej zrozumieć, jak poprawić możliwość ponownego wykorzystania kodu i pisać klasy, które są bardziej rozszerzalne.

W poprzednich rozdziałach omówiliśmy już kilka pomysłów dotyczących powtarzających się wzorców: stworzyliśmy pętle i funkcje, które pozwalają nam wielokrotnie wykonywać określone zadanie. Dodatkowo stworzyliśmy własne wyliczenia, struktury i klasy, które pozwalają nam tworzyć instancje obiektów danego typu.

Zbadaliśmy także niektóre prymitywne formy hierarchii, takie jak tablice (które pozwalają nam grupować elementy w większą strukturę) i rekursję, gdzie funkcja wywołuje pochodną wersję siebie.

Jednak nie skupiliśmy się jeszcze zbytnio na relacjach między obiektami, zwłaszcza jeśli są one powiązane programowanie.

Relacje między obiektami

Istnieje wiele różnych rodzajów relacji, jakie dwa obiekty mogą mieć w prawdziwym życiu, a do opisania tych relacji używamy specyficznych słów „typu relacji”. Na przykład: kwadratowy kształt „jest-a”. Samochód „ma” kierownicę. Programista komputerowy „używa klawiatury”. Zapylanie kwiatu zależy od pszczoły. Uczeń jest „członkiem” klasy. A Twój mózg istnieje jako „część” Ciebie (przynajmniej możemy rozsądnie założyć, jeśli doszedłeś tak daleko).

Wszystkie te typy relacji mają przydatne analogie w C++.

W tym rozdziale zbadamy niuanse typów relacji „część-of”, „ma-a”, „używa-a”, „zależy od” i „członek-of” oraz pokażemy, jak mogą być one przydatne w kontekście Klasy C++. Przeanalizujemy także kilka powiązanych tematów, które nie pasują nigdzie indziej.

Następnie poświęcimy dwa kolejne rozdziały badaniu relacji „jest-a” za pośrednictwem modelu dziedziczenia C++ i funkcji wirtualnych. Tak, to poważna sprawa.

W porządku, wystarczy ustawień kontekstu. Przejdźmy do rzeczy.

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:  
47 Komentarze
Najnowsze
Najstarsze Najczęściej głosowane
Wbudowane opinie
Wyświetl wszystkie komentarze