Ko jeste burrito, vsak vaš okusni receptor poje od veselja. Vsak ugriz prinaša kombinacijo različnih vrst okusov, kot so slano, sladko, začinjeno in umami. Vsak ugriz po tem je nekoliko drugačen, saj nova zbirka sestavin združuje svoje okuse.
Morda ste prebrali sestavine z jedilnika, vendar ne veste natančno, kako nastane salsa. Začimbe, ki jih uporabljajo za svojo zelenjavo, so lahko skrita mešanica. Vendar vam ni treba poznati vsake natančne sestavine. Dovolj je vedeti, da je okusno.
Sestavine, ki jih poznate, kot je navaden beli riž, so konkretne. Ostali elementi so abstraktni. Veš, da je salsa, ampak kakšna? Ali pa, če vam nekdo kar od nikoder poda burrito, potem je celoten burrito abstrakten.
Abstrakcija v abstraktnem
Skupaj z dedovanjem, je abstrakcija pomemben koncept v objektno usmerjenem programiranju. Teorija je, da mora vsak predmet dati preproste in predvidljive rezultate. Objekti naj si delijo samo tisto, kar je treba deliti.
Burrito si lahko predstavljate kot predmet. Znotraj burrita imate še nekaj drugih predmetov, kot so fižol, riž, sir in pekoča omaka. Fižol je bil morda začinjen. Sir je lahko mešanica. In pekoča omaka je lahko kombinacija paprike, starane v kisu.
Ni vam treba vedeti, kako so bile narejene vse sestavine za burrito. In v primeru hrenovk verjetno ne želite vedeti. Pomembno je le, da se ne razpade, ko ga poješ in da je super okusen.
Abstrakcija je tesno povezana z inkapsulacijo
Enako je s programskimi objekti. Ko ustvarite predmet (ustvarite ga iz razreda), je to kot naročiti burrito na pultu tovornjaka s hrano. Imate dostop do nekaterih podatkov, vendar ne vseh. Ni vam treba vedeti, kako objekt deluje, če funkcije vrnejo pravilne podatke. Tukaj je burrito v JavaScript/Typescript:
Naveden jezik: tsx ne obstaja'Generiranje kode ni uspelo!!
'
Ti lahko igrajte se s to kodo v peskovniku TypeScript.
V zgornjem primeru so sestavine salsa in sira odvzete. Najprej so kapsulirani, da skrijejo posebne sestavine. Nato se dodajo getterji za dostop do sestavin. Toda sestavine vrnejo le abstraktno predstavo o tem, kaj v resnici so.
Abstrakcija v betonu
Vendar je abstrakcija več kot koncept. Pouk je lahko tudi abstrakten. To pomeni, da lahko definirajo druge razrede. Vendar jih ni mogoče ustvariti sami.
Zakaj bi morali biti pouk včasih abstrakten
Predstavljajte si, da greste v restavracijo in se usedete. Natakar vam izroči meni. Odprete ga in ugotovite, da obstaja samo en predmet: hrana.
To je precej abstraktno. Bi ga naročili? Bi ga pojedli? Verjetno ne bi. Reči, da je nekaj hrana, ni dovolj. Treba ga je razbiti na nekaj bolj konkretnega.
Kaj pa testenine? No, to je bolj specifična vrsta hrane. In vemo, da ima verjetno rezance in omako. Toda tam je veliko različnih vrst testenin, zato je še vedno abstraktno.
Kaj je abstraktno in kaj konkretno?
Fettuccine Alfredo je konkreten primer hrane in testenin. Enako velja za razrede. Vsak razred ne bi smel biti instanciran. Nekateri razredi bi morali definirati samo strukturo drugih razredov.
Tukaj je primer z povzetkom Hrana razred in otrok makadamski oreščki razred:
Naveden jezik: tsx ne obstaja'Generiranje kode ni uspelo!!
'
Tukaj je koda.
Abstraktni razredi povedo drugim razredom, kako naj bi se obnašali. V zgornjem primeru, če želite biti razred živil, morate imeti funkcije, ki omogočajo dostop do vašega imena, okusa, opisa in kalorij.
Upoštevajte, da je makadamski oreščki razredu raztezaHrana. To pomeni to makadamski oreščki se strinja, da bo upošteval pravila Hrana. Upoštevajte tudi, da konstruktor kliče super. Ta ukaz ustvari primer nadrejenega razreda, preden konstruktor ustvari primer makadamski oreščki.
Če se učiš programirati, lahko zabavajte se s temi programskimi igrami.
Praksa abstrakcije
- Obiščite zgornjo povezavo in uporabite peskovnik za ustvarjanje abstraktnega razreda z imenom Juha.
- Ustvarite konkretnega otroka Juha razred, imenovan Žitarice.
- Uporaba console.log da preizkusite svojo kodo. Kaj se zgodi, če vaš Žitarice razredu manjka ena od funkcij, definiranih v Juha?
Toda kaj je smisel razreda, ki ga ne morete ustvariti?
Sprva se morda zdijo abstraktni razredi nepotrebni. Konec koncev jih dejansko ne morete uporabiti za izdelavo predmeta. In ni tako, da prenašajo svoje funkcije. Funkcije je treba prepisati v vsakem otroškem razredu.
Obstajata dva glavna razloga, zakaj potrebujete abstraktne razrede. Vašo kodo ohranjajo dosledno in poskrbijo, da tudi drugi razvijalci napišejo dosledno kodo. Ne boste vedno delali sami. Celotna ekipa mora upoštevati enaka pravila. Več se lahko naučite od dokumentacijo TypeScript o abstraktnih razredih.
Kako organizirati svojo objektno usmerjeno kodo z dedovanjem
Preberite Naprej
Povezane teme
- Programiranje
- Programiranje
- Objektno usmerjeno programiranje
O avtorju
Lee je nomad s polnim delovnim časom in polimat s številnimi strastmi in interesi. Nekatere od teh strasti se vrtijo okoli produktivnosti, osebnega razvoja in pisanja.
Naročite se na naše novice
Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e-knjige in ekskluzivne ponudbe!
Kliknite tukaj, da se naročite