Kiedy jesz burrito, każdy z Twoich receptorów smakowych śpiewa z radością. Każdy kęs przynosi kombinację różnych rodzajów smaków, takich jak słony, słodki, pikantny i umami. Każdy kolejny kęs smakuje nieco inaczej, ponieważ nowa kolekcja składników łączy ich smaki.
Być może przeczytałeś składniki z menu, ale nie wiesz dokładnie, jak powstaje salsa. Przyprawa, której używają do warzyw, może być tajną mieszanką. Nie musisz jednak znać każdego dokładnego składnika. Wystarczy wiedzieć, że jest pyszny.
Składniki, które znasz, takie jak zwykły biały ryż, są z betonu. Pozostałe elementy są abstrakcyjne. Wiesz, że to salsa, ale jakiego rodzaju? Albo, jeśli ktoś po prostu wręcza ci burrito znikąd, to całe burrito jest abstrakcyjne.
Abstrakcja w abstrakcji
Wraz ze spadkiem, abstrakcja jest ważną koncepcją w programowaniu obiektowym. Teoria mówi, że każdy obiekt powinien dawać proste i przewidywalne wyniki. Obiekty powinny również udostępniać tylko to, co należy udostępnić.
Możesz myśleć o burrito jako o przedmiocie. Wewnątrz burrito znajduje się kilka innych przedmiotów, takich jak fasola, ryż, ser i ostry sos. Ziarna mogły być przyprawione. Ser może być mieszanką. A ostry sos może być połączeniem papryki dojrzewającej w occie.
Nie musisz wiedzieć, jak powstały wszystkie składniki burrito. A w przypadku hot dogów prawdopodobnie nie chcesz wiedzieć. Liczy się tylko to, że nie rozpada się podczas jedzenia i że jest super smaczny.
Abstrakcja jest ściśle powiązana z hermetyzacją
To samo dotyczy obiektów programistycznych. Kiedy tworzysz instancję obiektu (tworzysz go z klasy), przypomina to zamawianie burrito z lady food truck. Masz dostęp do niektórych danych, ale nie do wszystkich. Nie musisz wiedzieć, jak działa obiekt, o ile funkcje zwracają poprawne dane. Oto burrito w JavaScript/Typescript:
Określony język: tsx nie istnieje'Generowanie kodu nie powiodło się!!
'
Możesz bawić się tym kodem w piaskownicy TypeScript.
W powyższym przykładzie składniki salsy i sera są oddzielone. Najpierw są kapsułkowane, aby ukryć specjalne składniki. Następnie dodawane są gettery, aby uzyskać dostęp do składników. Ale składniki zwracają tylko abstrakcyjną reprezentację tego, czym naprawdę są.
Abstrakcja w betonie
Abstrakcja to jednak coś więcej niż koncepcja. Klasy mogą być również abstrakcyjne. Oznacza to, że mogą definiować inne klasy. Ale nie mogą być tworzone same.
Dlaczego klasy powinny być czasami abstrakcyjne
Wyobraź sobie, że idziesz do restauracji i siadasz. Kelner wręcza ci menu. Otwierasz go i okazuje się, że jest tylko jeden przedmiot: jedzenie.
To dość abstrakcyjne. Zamówiłbyś to? Zjesz to? Prawdopodobnie nie. Nie wystarczy powiedzieć, że coś jest jedzeniem. To wymaga rozbicia na coś bardziej konkretnego.
A co z makaronem? Cóż, to jest bardziej specyficzny rodzaj jedzenia. A wiemy, że prawdopodobnie ma makaron i sos. Ale istnieje wiele różnych rodzajów makaronów, więc nadal jest to abstrakcyjne.
Co to jest abstrakcja, a co beton?
Fettuccine Alfredo to konkretny przykład zarówno jedzenia, jak i makaronu. To samo dotyczy zajęć. Nie każda klasa powinna mieć instancję. Niektóre klasy powinny jedynie definiować strukturę innych klas.
Oto przykład z abstraktem Żywność klasa i dziecko Orzechy makadamia klasa:
Określony język: tsx nie istnieje'Generowanie kodu nie powiodło się!!
'
Oto kod.
Klasy abstrakcyjne mówią innym klasom, jak mają się zachowywać. W powyższym przykładzie, jeśli zamierzasz być klasą żywności, musisz mieć funkcje, które umożliwiają dostęp do twojego imienia, smaku, opisu i kalorii.
Zauważ, że Orzechy makadamia klasa rozciąga sięŻywność. To znaczy, że Orzechy makadamia zgadza się przestrzegać zasad Żywność. Zauważ też, że konstruktor wywołuje super. To polecenie tworzy instancję klasy nadrzędnej przed utworzeniem instancji konstruktora Orzechy makadamia.
Jeśli uczysz się programować, możesz baw się lepiej z tymi grami programistycznymi.
Praktyka abstrakcji
- Odwiedź powyższy link i użyj piaskownicy, aby utworzyć klasę abstrakcyjną o nazwie Zupa.
- Stwórz konkretne dziecko zupa klasa, zwana Zboże.
- Posługiwać się konsola.log aby przetestować twój kod. Co się stanie, jeśli twój Zboże w klasie brakuje jednej z funkcji zdefiniowanych w zupa?
Ale jaki jest sens klasy, której nie można stworzyć?
Początkowo klasy abstrakcyjne mogą wydawać się niepotrzebne. W końcu nie można ich użyć do stworzenia przedmiotu. I to nie tak, że przekazują swoje funkcje. Funkcje muszą zostać przepisane w każdej klasie potomnej.
Istnieją dwa główne powody, dla których potrzebujesz klas abstrakcyjnych. Utrzymują spójny kod i zapewniają, że inni programiści również piszą spójny kod. Nie zawsze będziesz pracować sam. Cały zespół musi przestrzegać tych samych zasad. Możesz dowiedzieć się więcej od dokumentacja TypeScript na temat klas abstrakcyjnych.
Jak uporządkować kod obiektowy za pomocą dziedziczenia
Czytaj dalej
Powiązane tematy
- Programowanie
- Programowanie
- Programowanie obiektowe
O autorze
Lee jest pełnoetatowym nomadą i erudytą z wieloma pasjami i zainteresowaniami. Niektóre z tych pasji obracają się wokół produktywności, rozwoju osobistego i pisania.
Zapisz się do naszego newslettera
Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!
Kliknij tutaj, aby zasubskrybować