Kad jūs ēdat burito, katrs jūsu garšas receptors dzied ar prieku. Katrs kumoss apvieno dažādu garšu veidu, piemēram, sāļa, salda, pikanta un umami, kombināciju. Katrs kumoss pēc tam garšo nedaudz savādāk, jo jauna sastāvdaļu kolekcija apvieno to garšas.
Iespējams, esat izlasījis sastāvdaļas no ēdienkartes, bet nezināt, kā tieši salsa tiek pagatavota. Garšvielas, ko viņi izmanto savos dārzeņos, varētu būt slepens maisījums. Tomēr jums nav jāzina katra precīza sastāvdaļa. Pietiek zināt, ka tas ir garšīgi.
Jums zināmās sastāvdaļas, piemēram, parastie baltie rīsi, ir betona. Pārējie elementi ir abstrakti. Jūs zināt, ka tā ir salsa, bet kāda veida? Vai arī, ja kāds jums vienkārši no nekurienes pasniedz burito, tad viss burito ir abstrakts.
Abstrakcija abstraktā izteiksmē
Kopā ar mantojumu, abstrakcija ir svarīgs objektorientētās programmēšanas jēdziens. Teorija ir tāda, ka katram objektam ir jāsniedz vienkārši un paredzami rezultāti. Objektiem arī vajadzētu dalīties tikai ar to, kas ir koplietojams.
Jūs varat domāt par burito kā objektu. Burito iekšpusē ir vairāki citi priekšmeti, piemēram, pupiņas, rīsi, siers un asā mērce. Pupiņas var būt ar garšvielām. Siers varētu būt maisījums. Un asā mērce varētu būt etiķī izturētu papriku kombinācija.
Jums nav jāzina, kā tika pagatavotas visas burito sastāvdaļas. Un cīsiņu gadījumā jūs droši vien nevēlaties zināt. Svarīgi ir tikai tas, lai ēdot tas neizjuktu un lai tas būtu supergaršīgs.
Abstrakcija ir cieši saistīta ar iekapsulēšanu
Tas pats ir ar programmēšanas objektiem. Kad jūs izveidojat objektu (izveidojiet to no klases), tas ir kā pasūtīt burito no pārtikas kravas kastes. Jums ir piekļuve dažiem datiem, bet ne visiem. Jums nav jāzina, kā objekts darbojas, ja vien funkcijas atgriež pareizos datus. Šeit ir burrito JavaScript/mašīnrakstā:
Norādītā valoda: tsx neeksistē'Koda ģenerēšana neizdevās!!
'
Jūs varat spēlējiet ar šo kodu TypeScript smilšu kastē.
Iepriekš minētajā piemērā salsas un siera sastāvdaļas ir abstrahētas. Pirmkārt, tie ir iekapsulēti, lai paslēptu īpašās sastāvdaļas. Pēc tam tiek pievienoti geteri, lai piekļūtu sastāvdaļām. Taču sastāvdaļas sniedz tikai abstraktu priekšstatu par to, kas tās patiesībā ir.
Abstrakcija betonā
Tomēr abstrakcija ir vairāk nekā jēdziens. Nodarbības var būt arī abstraktas. Tas nozīmē, ka viņi var definēt citas klases. Bet tos nevar izveidot paši.
Kāpēc nodarbībām dažreiz jābūt abstraktām
Iedomājieties, ka jūs dodaties uz restorānu un apsēdāties. Viesmīlis pasniedz ēdienkarti. Jūs to atverat, lai uzzinātu, ka ir tikai viena prece: pārtika.
Tas ir diezgan abstrakti. Vai jūs to pasūtītu? Vai tu to ēstu? Jūs droši vien to nedarītu. Nepietiek teikt, ka kaut kas ir ēdiens. Tas ir jāsadala konkrētāk.
Kā ar makaroniem? Nu, tas ir specifiskāks pārtikas veids. Un mēs zinām, ka tajā, iespējams, ir nūdeles un mērce. Bet ir daudz dažādu makaronu veidu, tāpēc tas joprojām ir abstrakts.
Kas ir abstrakts un kas ir konkrēts?
Fettuccine Alfredo ir konkrēts pārtikas un makaronu piemērs. Tas pats attiecas uz nodarbībām. Ne katrai klasei ir jābūt instantierētai. Dažām klasēm ir jādefinē tikai citu klašu struktūra.
Šeit ir piemērs ar abstraktu Ēdiens klase un bērns Makadāmijas rieksti klase:
Norādītā valoda: tsx neeksistē'Koda ģenerēšana neizdevās!!
'
Šeit ir kods.
Abstraktās nodarbības stāsta citām klasēm, kā tām vajadzētu uzvesties. Iepriekš minētajā piemērā, ja jūs gatavojaties būt pārtikas klasē, jums ir jābūt funkcijām, kas ļauj piekļūt jūsu vārdam, garšai, aprakstam un kalorijām.
Ievērojiet, ka Makadāmijas rieksti klasē pagarinaĒdiens. Tā teikts Makadāmijas rieksti piekrīt ievērot noteikumus Ēdiens. Tāpat ievērojiet, ka konstruktors aicina super. Šī komanda veido vecākklasi pirms konstruktora instanču Makadāmijas rieksti.
Ja jūs mācāties programmēt, varat izklaidējies ar šīm programmēšanas spēlēm.
Abstrakcijas prakse
- Apmeklējiet iepriekš norādīto saiti un izmantojiet smilškaste, lai izveidotu abstraktu klasi ar nosaukumu Zupa.
- Izveidojiet konkrētu bērnu Zupa klase, zvanīja Graudaugi.
- Izmantot console.log lai pārbaudītu savu kodu. Kas notiks, ja jūsu Graudaugi klasei trūkst vienas no definētajām funkcijām Zupa?
Bet kāda jēga ir klasei, kuru nevar izveidot?
Sākumā abstraktās nodarbības var šķist nevajadzīgas. Galu galā jūs tos nevarat izmantot, lai izveidotu objektu. Un nav tā, ka viņi nodod savas funkcijas. Funkcijas ir jāpārraksta katrā bērnu klasē.
Ir divi galvenie iemesli, kāpēc jums ir nepieciešamas abstraktas nodarbības. Viņi uztur jūsu kodu konsekventu un nodrošina, ka arī citi izstrādātāji raksta konsekventu kodu. Jūs ne vienmēr strādāsit viens. Visai komandai jāievēro vieni un tie paši noteikumi. Jūs varat uzzināt vairāk no TypeScript dokumentācija par abstraktajām klasēm.
Kā sakārtot objektu orientēto kodu, izmantojot mantojumu
Lasiet Tālāk
Saistītās tēmas
- Programmēšana
- Programmēšana
- Objektorientētā programmēšana
Par autoru
Lī ir pilnas slodzes nomads un polimāts ar daudzām kaislībām un interesēm. Dažas no šīm kaislībām ir saistītas ar produktivitāti, personīgo attīstību un rakstīšanu.
Abonējiet mūsu biļetenu
Pievienojieties mūsu informatīvajam izdevumam, lai saņemtu tehniskos padomus, pārskatus, bezmaksas e-grāmatas un ekskluzīvus piedāvājumus!
Noklikšķiniet šeit, lai abonētu