Kui sööte burritot, laulab kõik teie maitseretseptorid rõõmust. Iga suupistega on kombineeritud erinevaid maitsetüüpe, nagu soolane, magus, vürtsikas ja umami. Iga suupiste pärast seda maitseb veidi erinevalt, kuna uus koostisosade kollektsioon ühendab oma maitsed omavahel.
Võib-olla olete lugenud menüüst koostisosi, kuid te ei tea täpselt, kuidas salsa valmib. Maitseained, mida nad oma köögiviljadel kasutavad, võib olla salajane segu. Siiski ei pea te teadma kõiki täpseid koostisosi. Piisab teadmisest, et see on maitsev.
Koostisosad, mida teate, nagu tavaline valge riis, on betoonist. Ülejäänud elemendid on abstraktsed. Teate, et see on salsa, aga missugune? Või kui keegi ulatab sulle lihtsalt eikuskilt burrito, siis on kogu burrito abstraktne.
Abstraktsioon abstraktselt
Koos pärandiga, abstraktsioon on objektorienteeritud programmeerimises oluline mõiste. Teooria on, et iga objekt peaks andma lihtsaid ja etteaimatavaid tulemusi. Ka objektid peaksid jagama ainult seda, mida on vaja jagada.
Võite mõelda burritost kui objektist. Burrito sees on mitu muud objekti, nagu oad, riis, juust ja kuum kaste. Oad võivad olla maitsestatud. Juust võiks olla segu. Ja kuum kaste võib olla äädikas laagerdunud paprikate kombinatsioon.
Sa ei pea teadma, kuidas kõik burrito koostisosad valmistati. Ja hot dogide puhul sa ilmselt ei tahagi teada. Tähtis on vaid see, et see süües laiali ei läheks ja et see oleks ülimaitsev.
Abstraktsioon on tihedalt seotud kapseldamisega
Programmeerimisobjektidega on sama lugu. Kui loote objekti (loote selle klassist), on see nagu burrito tellimine toiduautode letist. Teil on juurdepääs teatud andmetele, kuid mitte kõigile. Te ei pea teadma, kuidas objekt töötab, kui funktsioonid tagastavad õiged andmed. Siin on burrito JavaScriptis/Typescriptis:
Määratud keel: tsx ei eksisteeri"Koodi genereerimine ebaõnnestus!!
'
Sa saad mängida selle koodiga TypeScripti liivakastis.
Ülaltoodud näites on salsa ja juustu koostisosad ära võetud. Esiteks on need spetsiaalsete koostisosade peitmiseks kapseldatud. Seejärel lisatakse koostisainetele juurdepääsu saamiseks getterid. Kuid koostisosad annavad ainult abstraktse esituse sellest, mis nad tegelikult on.
Abstraktsioon betoonis
Abstraktsioon on siiski midagi enamat kui kontseptsioon. Klassid võivad olla ka abstraktsed. See tähendab, et nad saavad määratleda teisi klasse. Kuid neid ei saa ise luua.
Miks peaksid klassid mõnikord olema abstraktsed?
Kujutage ette, et lähete restorani ja istud maha. Kelner ulatab teile menüü. Avate selle ja leiate, et seal on ainult üks toode: toit.
See on üsna abstraktne. Kas telliksite selle? Kas sa sööksid seda? Sa ilmselt ei teeks. Ei piisa sellest, kui öelda, et midagi on toit. See tuleb jagada millekski konkreetsemaks.
Aga pasta? Noh, see on spetsiifilisem toit. Ja me teame, et sellel on tõenäoliselt nuudlid ja kaste. Kuid seal on palju erinevat tüüpi pastasid, nii et see on ikkagi abstraktne.
Mis on abstraktne ja mis on konkreetne?
Fettuccine Alfredo on konkreetne näide nii toidust kui ka pastast. Sama kehtib ka klasside kohta. Iga klassi ei tohiks instantseerida. Mõned klassid peaksid määratlema ainult teiste klasside struktuuri.
Siin on näide koos abstraktiga Toit klass ja laps Makadaamiapähklid klass:
Määratud keel: tsx ei eksisteeri"Koodi genereerimine ebaõnnestus!!
'
Siin on kood.
Abstraktsed klassid räägivad teistele klassidele, kuidas nad peaksid käituma. Ülaltoodud näites, kui kavatsete olla toiduklass, peavad teil olema funktsioonid, mis võimaldavad juurdepääsu teie nimele, maitsele, kirjeldusele ja kaloritele.
Pange tähele, et Makadaamiapähklid klass ulatubToit. See tähendab seda Makadaamiapähklid nõustub järgima reegleid Toit. Samuti pange tähele, et konstruktor kutsub Super. See käsk instantseerib ülemklassi enne, kui konstruktor instantseerib Makadaamiapähklid.
Kui õpite programmeerima, saate seda teha nautige nende programmeerimismängudega rohkem rõõmu.
Abstraktsiooni praktika
- Külastage ülalolevat linki ja kasutage liivakasti, et luua abstraktne klass nimega Supp.
- Loo konkreetne laps Supp klass, nn Teravili.
- Kasuta console.log koodi testimiseks. Mis juhtub, kui teie Teravili klassil puudub üks defineeritud funktsioonidest Supp?
Kuid mis mõte on klassil, mida te ei saa instantseerida?
Alguses võivad abstraktsed tunnid tunduda ebavajalikud. Lõppude lõpuks ei saa te neid tegelikult objekti valmistamiseks kasutada. Ja nad ei anna oma funktsioone edasi. Funktsioonid tuleb igas lasteklassis ümber kirjutada.
Abstraktseid klasse vajate kahel peamisel põhjusel. Nad hoiavad teie koodi järjepidevana ja tagavad, et ka teised arendajad kirjutavad ühtset koodi. Sa ei tööta alati üksi. Kogu meeskond peab järgima samu reegleid. Lisateavet saate aadressilt abstraktsete klasside TypeScripti dokumentatsiooni.
Kuidas korraldada oma objektorienteeritud koodi pärimisega
Loe edasi
Seotud teemad
- Programmeerimine
- Programmeerimine
- Objektorienteeritud programmeerimine
Autori kohta
Lee on täiskohaga nomaad ja mitmete kirgede ja huvidega polümaad. Mõned neist kirgedest keerlevad tootlikkuse, isikliku arengu ja kirjutamise ümber.
Liituge meie uudiskirjaga
Liituge meie uudiskirjaga tehniliste näpunäidete, arvustuste, tasuta e-raamatute ja eksklusiivsete pakkumiste saamiseks!
Tellimiseks klõpsake siin