Pamatdatu struktūras
Apskatīsim vēlreiz visas pamatdatu struktūras, jo kā zināms “atkārtošana – zināšanu māte” un šīs datu struktūras bieži vien tiek jauktas, kā arī netiek līdz galam izprastas, lai gan tie ir svarīgi pamati, uz kuriem balstās visi dati programmēšanā…
Šajā rakstā apskatīsim:
- Strings jeb Virknes;
- Integers jeb Veseli skaitļi;
- Booleans jeb Būla vērtības;
- Arrays jeb Masīvi;
- Objects jeb Objekti
Sāksim ar visu pēc kārtas…
Strings – Virknes
Virknes ir katras programmēšanas valodas iezīme. Virkni var definēt kā sakārtotu rakstzīmju vai simbolu secību, kas ievietota atbilstošās vienpēdiņās vai dubultpēdiņās. Lielākā daļa valodu atbalstīs primārās ASCII rakstzīmes, kā arī unikoda attēlojumus. Rakstzīme aizņems vienu baitu atmiņas. Tomēr ir daudz papildu veidu, kā attēlot virknes.
Šajā raksta daļā jūs uzzināsiet par virkņu datu struktūru, to, kā virknes tiek attēlotas dažādās valodās, kam tās parasti izmanto un kāpēc programmēšanas valodas padara virknes nemainīgas.
Strings attēlojums
Pastāv būtiskas atšķirības, kā katra valoda attēlo un atbalsta virknes. Visas valodas atbalsta pamatdarbības, veidojot, pārveidojot, kopējot un piešķirot virknes mainīgajiem. Turklāt ikdienas darbības ietver savienošanu, virkņu pievienošanu, apakšvirknes atrašanu un virkņu kolekciju darbību.
Apstrādājot virknes, daudzas valodas ļaus ar tām veikt algebriskas darbības. Piemēram,
String_A == String_B, – kas atgriezīs patiesu vai nepatiesu vai
String_A < String_B, – kas nosaka, kura alfabētiskā secībā ir pirmā.
Dažas valodas ļauj virknēm attēlot mainīgos lielumus virknē, taču tām ir nepieciešams īpašs simbols. Bieži vien šī ir dolāra zīme $ pirms mainīgā nosaukuma, taču dažos gadījumos tā var ietvert arī iekavās {}. Escape karogi ļauj virknē iekļaut simbolus. Iedomājieties, ka vēlaties, lai virknē būtu citāti.
String = “vīrietis teica \”vēl divas pintes, lūdzu\” bārmenim”
Šeit atpakaļvērstās slīpsvītras \ izmantošana nodrošināja, ka virkne teikumā saglabā pēdiņas. Citi atsoļa simboli var būt #, % vai dubultpēdiņas virknē, ko apzīmē ar vienpēdiņām. Lai gan faktiskā ieviešana var atšķirties, vispārējā pieeja virkņu apstrādei ir tāda pati.
Kopēja lietošana
Viena no jomām, kas ļoti nodarbojas ar virknēm, jeb strings, ir dabiskās valodas apstrāde (NLP). Tas, kā virknes tiek kodētas, lasot tās no dažādām vietām, piemēram, Twitter, PDF failiem, teksta dokumentiem vai Reddit, var radīt negaidītas problēmas. Tas var radīt sarežģītas atkļūdošanas problēmas, ja lietojumprogramma apstrādā neparastu simbolu attēlojumu, kas ietekmē rezultātus.
Rakstot virknes programmā, parasti tiek izmantoti marķieri. Tas pārvērš virkni mazāku virkņu masīvā. Šeit jūs identificējat norobežotāju un sadalāt virkni segmentos, kas atdalīti ar minēto norobežotāju. Tādējādi rindkopu var sadalīt teikumos, izmantojot punktu (.), vai teikumu atsevišķos vārdos, segmentējot pēc atstarpes (” “). Tomēr, marķierējot tekstu, jābūt uzmanīgiem. Apsveriet tālāk redzamo tekstu, kurā ir trīs punktu simboli (.).
3.30 es devos uz veikalu un iztērēju 40,40 EUR.
Parasti jūs to lasītu kā vienu teikumu, taču laika un naudas summas norādīšanai izmantotie periodi ir norobežotāji, tāpēc teikums ir sadalīts trīs daļās.
Tokenizācija apstrādātiem, formatētiem datiem piedāvā mazāk izaicinājumu. Izplatīts veids, kā saglabāt formatētus virkņu attēlojumus, ir komatatdalītās vērtības (CSV) vai tabulētās vērtības (TSV).
Šādu virkņu apstrāde ir pazīstama kā parsēšana, un atgrieztais masīvs būs vienāds ar atrasto norobežotāju skaitu, noņemot norobežotāju. Šeit ir CSV faila piemērs, kurā ir sleju vecums, nosaukums un matu krāsa. Ievērojiet, kā beigās nav komata. Ja nav norādīts citādi, jaunā līnijas simbols darbojas arī kā norobežotājs.
gadi, vārds, matu krāsa
24, Jānis, melna
25, Toms, brūni
34, Anna, violeti
29, Maija, sarkani
43, Mārtiņš, blondi
Nemainība
Svarīgs jēdziens, kas jāņem vērā, strādājot ar virknēm, ir tas, vai virkne ir mainīga vai nemainīga. Mainīgums attiecas uz jūsu spēju mainīt virkni pēc tās izveidošanas. Dažas valodas, piemēram, Ruby un PHP, ļauj mainīt virknes pēc izveides. Tomēr biežāk tiek izmantots nemainīgums, piemēram, Java, C#, JavaScript, Python un Go.
Ir vairāki iemesli, kāpēc programmēšanas valodas padara virknes nemainīgas. Pirmkārt, tas var samazināt atmiņas patēriņu. Tā vietā, lai izveidotu mainīgo, kas satur virkni, virkņu kopums ir izveidots, lai attēlotu visas izmantotās virknes. Nemainīgā pieeja atkārtoti izmanto atmiņas piešķiršanu, jo visi virknes gadījumi norāda uz vienu vietu. Tātad, ja virknē notiek izmaiņas, pieņemsim, ka tā kļūst par virknēm, tā vietā, lai mainītu virknes vērtību, mainīgais tiek norādīts uz citu virkņu gadījumu. Vai arī tas ir norādīts uz citu nemainīgu piemēru, kas attēlo virknes, kas pēc tam tiek pievienots virkņu pūlam.
Šī ir liela atmiņas taupīšanas ierīce. Apsveriet iespēju izlasīt esošos vārdus, nevis izveidot atmiņas vietu katram vārdam, ieskaitot atkārtotus vārdus. Izmantojot unikālu komplektu, tiek samazināta nepieciešamā telpa. Trūkums ir tāds, ka, ja jūsu lietojumprogramma pastāvīgi maina tekstus, par katru veikto izmaiņu tiek piemērots atmiņas sods.
Apkopojums
Šajā raksta daļā jūs uzzinājāt par virkņu datu struktūru, to, kā virknes tiek attēlotas dažādās valodās, kam tās parasti tiek izmantotas un kāpēc programmēšanas valodas padara virknes nemainīgas.
Integers – Veseli skaitļi
Vesels skaitlis tiek izmantots, lai saglabātu skaitliskās vērtības. Vesels skaitlis var būt parakstīts – signed (satur gan pozitīvus, gan negatīvus skaitļus), vai neparakstīts – unsigned (turēs tikai pozitīvus skaitļus). Veseli skaitļi tiek attēloti bināri, un būtiskam attēlojumam būs nepieciešami 4 baiti.
Šajā raksta daļā jūs uzzināsiet par veselu skaitļu datu struktūru, piemēram, kā tiek attēloti veseli skaitļi, par atmiņas piešķiršanu veseliem skaitļiem un veselo skaitļu iesaiņojuma klasi Java.
Veselu skaitļu attēlojums
Ir vairāki veidi, kā bināros attēlot veselus skaitļus. Viens tipisks piemērs ir zīmes magnitūda. Ja veseli skaitļi ir attēloti bināri, kā tie var atšķirt pozitīvo un negatīvo vērtību? Zīmes lielums iesaka izmantot indikatoru binārā skaitļa kreisajā pusē, lai apzīmētu polaritāti.
Integer | Zīmes-magnitude reprezentācija |
---|---|
2 | 0010 |
1 | 0001 |
+0 | 0000 |
-0 | 1000 |
-1 | 1001 |
-2 | 1010 |
Vesels skaitlis nevar attēlot daļskaitļus. Šim nolūkam varētu izmantot decimāldaļu vai pludiņu. Fiksēts baitu skaits tiek izmantots, attēlojot veselus skaitļus, kuru lielumu dažās valodās var norādīt. Pastāv standartizēta pieeja skaitļu attēlošanai, ko sauc par IEEE 754 standartu, kurā ir izklāstīts kopīgs standartu kopums visu skaitļu attēlošanai.
Dažas augsta līmeņa valodas, piemēram, Python un JavaScript, izmanto šo pieeju un iekapsulē veselu skaitļu inicializāciju šajā fiksētajā attēlojumā. Tas atvieglo darbu ar cipariem šajās augsta līmeņa dinamiskajās valodās, bet novērš iespēju pielāgot pieeju, lai iespējotu atmiņas optimizāciju.
Atmiņas piešķiršana / Memory allocation
Citas statiski ievadītas valodas, piemēram, C++, Rust, Ada un C, ļauj pielāgot atmiņas lielumu. C++ ļauj pielāgot veselu skaitli. Izmantojot neparakstītu īsu int, būs nepieciešami tikai 2 baiti. Šie ietaupījumi var palielināties, ja jūsu lietojumprogrammā ir daudz pozitīvu skaitļu, kuriem nav nepieciešama daļskaitļu precizitāte.
Rust kļūst vēl labāks un nodrošina neparakstītu 1 baita veselu skaitļu instantiāciju. Šis ierobežotais intvar saturēt veselus skaitļus no 0 līdz 255. Lai gan tas var nešķist liels diapazons, ar kuru rīkoties, ja strādājat ar pikseļiem, jūs strādātu ar vērtību virkni šajā diapazonā. Attēlu apstrāde ir ļoti procesora ietilpīgs process, un iespēja saglabāt 8 pikseļus par standarta cenu 1 ir milzīgs ietaupījums.
Iesaiņojuma nodarbības / Wrapper classes
Papildus primitīviem veseliem skaitļiem, kas apzīmēti ar int, Java ļauj ietīt primitīva vērtību iesaiņojuma klasē Integer. Tas ļauj izmantot vairākas metodes, kā rīkoties ar veseliem skaitļiem, piemēram, pārveidojot no virknes uz dubultu, salīdzināšanu, maksimālo un minimālo izmēru un tā tālāk. Veselo skaitļu klase ir nemainīga, kas padara to drošu pavedienam thread-safe. Papildu funkcionalitāte un drošība rada atmiņas izmaksas, un vesela skaitļa objekta glabāšanai būs nepieciešami 16 baiti atmiņas.
Secinājums
Ir milzīga brīvība kontrolēt, kā jūsu skaitļi tiek saglabāti atmiņā. Kamēr augsta līmeņa dinamiski drukāta valoda sāk darboties, tai var būt ierobežota atdeve, ja jūsu lietojumprogramma kļūst resursietilpīga. Pieņemsim, ka strādājat ar Arduinosvai citu hobiju elektroniku. Tādā gadījumā telpa kļūst par premium, un pielāgošanas brīvība var būt atšķirība starp funkcionālu un nefunkcionālu lietojumprogrammu. Tomēr, ja izstrādājat lietojumprogrammu, kurai ir nepieciešams ievērojams pieejamās atmiņas apjoms, iespējams, ka pareizi jāizmanto veseli skaitļi un nav jāuztraucas par detaļām.
Šajā raksta daļā jūs uzzinājāt par veselu skaitļu datu struktūru, piemēram, kā tiek attēloti veseli skaitļi, par atmiņas piešķiršanu veseliem skaitļiem un veselo skaitļu iesaiņojuma klasi.
Boolean, jeb Būla vērtības
Pārbaudot savas zināšanas šajā kursā, jums bieži tiek piedāvātas divas iespējas: atbilžu varianti un patiesa vai nepatiesa. Pēdējais ir Būla piemērs; lieta ir vai nav. Šajā raksta daļā jūs uzzināsiet vairāk par Būla datu struktūrām un svarīgākajām funkcijām darbam ar tām, nosacījuma priekšrakstiem un loģiskajiem operatoriem.
Nosacīti paziņojumi
Būla izteiksmēm var būt dažādi relāciju operatori.
> | Lielāks nekā |
< | Mazāks nekā |
>= | Lielāks par, vai vienāds ar |
<= | Mazāks par, vai vienāds ar |
== | Vienāds ar |
!= | Nav vienāds ar |
Tie ļauj “nopratināt” dažus datus pirms dažādu koda opciju palaišanas. Tāpēc Būla izteiksmes bieži tiek sauktas par nosacījumiem. Apvienojiet tos ar nosacījumu paziņojumiem, un jums ir agrīna AI (mākslīgā intelekta – artifficial intelligence) ieviešana.
Nosacītie paziņojumi ir:
- if,
- else,
- else if,
- while
un tā tālāk. Nosacījuma bloks var ļaut izpildīt vienu instrukciju kopu vienā stāvoklī un citu, ja nosacījumi atšķiras. Apsveriet tālāk redzamo diagrammu.
Tāda pati diagramma ir attēlota šajā Python kodā:
if right > wrong:
doTheRightThing()
elif wrong > right:
doTheWrongThing()
else:
keepResearching()
Izmantojot Būla izteiksmes kā indikatorus, varat izmantot relāciju operatorus, lai noteiktu, kura koda rindiņa ir jāizpilda. Šajā piemērā dators novērtē pareizo un nepareizo. Tam ir vairākas lietojumprogrammas, un tas tiek plaši izmantots. Visbeidzot, ja neesat izpildījis nevienu no nosacījumiem, varat izmantot visaptveroša koda bloku. Roombas ir lielisks piemērs tam, kā šo kodu var izmantot ikdienas dzīvē. Pareizā un nepareizā vietā jums būs elementāri sensori, kas nosaka, kuri motori ir jāaktivizē, pamatojoties uz attālumu un triecienu.
Loģiskie operatori
Turklāt, iespējams, vēlēsities paplašināt lietojumprogrammas darbības jomu, izmantojot loģiskos operatorus.
Loģiskie operatori | |
---|---|
!! | Logical OR – Loģiskais VAI |
&& | Logical AND – Loģiskais UN |
! | Logical NOT – Loģiskais NE |
Šīs loģiskās izteiksmes var kombinēt ar Būla izteiksmēm, lai jūsu kods būtu daudzveidīgāks.
if condition_1 !! condition_2:
doActionOne()
elif condition_1 && condition_2:
doActionTwo()
elif !condition_1:
doActionFour()
else:
waitForInstruction()
šajā kodā tiek pārbaudīti četri rezultāti. Vispirms ņemiet condition_1 vai condition_2 un paliksim pie Roomba piemēra. Ja tuvuma noteikšanas vai trieciena noteikšana ir patiesa, pirmā darbība var būt apstāšanās un atpakaļgaita. Ja ir tuvuma un trieciena noteikšana, tas aktivizēs trauksmi. Ja nav tuvuma noteikšanas, tas turpinās sūtīt strāvu priekšējiem motoriem. Visbeidzot, ja nav izpildīti nekādi nosacījumi, ir jābūt gatavam aktivizēšanai kādam drošam kodam.
Būla loģikas izmantošana ir ķēdes dizaina mugurkauls. Tas ir veids, kā interpretēt Būla operatorus kopā. Tālāk redzamajā diagrammā esošās formas ir vārti, kas tiek aktivizēti, kad tiek aktivizēti noteikti Būla operatori. Signāls tiek nosūtīts pa vadiem (attēlo ienākošās un izejošās līnijas). AND operators saka, ja abi vadi ir patiesi, tad turpiniet šo izpildes līniju. Tajā pašā laikā NAND norāda, ka tikai divi nepatiesi apgalvojumi izraisīs reakciju.
Apvienojumā tos var izmantot, lai pieņemtu sarežģītus lēmumus un liktu ierīcei darboties dažādos veidos atkarībā no sensoru ievades.
Secinājums
Nobeigumā jāsaka, ka Būla izteiksmes ir patiesas vai nepatiesas, un to līdzvērtība binārajā izteiksmē būtu 0 vai 1. Tāpat kā ar bināro vērtību, jūs varētu domāt, ka tikai divu vērtību gadījumā ir ierobežotas iespējas. Taču tie var sasniegt pārsteidzoši augstu sarežģītības līmeni, ja tos apvieno ar citām matemātiskām konstrukcijām, piemēram, nosacījuma paziņojumiem un loģiskajiem operatoriem. Būla var izmantot jūsu datorprogrammās, lai informētu par to, kurām operācijām jādarbojas automātiski, un veidotu shēmu shēmu mugurkaulu.
Šajā raksta daļā jūs uzzinājāt vairāk par Būla datu struktūrām un svarīgākajām funkcijām darbam ar tām, nosacījuma priekšrakstiem un loģiskajiem operatoriem.
Arrays – Masīvi
Šī raksta daļa parāda masīva datu struktūru, tostarp to, kā inicializēt, pārvaldīt un pievienot masīvus. Visām programmēšanas valodām ir sava veida masīvs, taču to darbībai var būt nelielas atšķirības. Piemēram, dažas valodas norāda, ka masīvam ir jābūt tādam pašam elementa tipam, piemēram, virknes masīvam vai int masīvam.
Turpretim citas valodas ļauj jauktos elementus saglabāt masīvā. Arī masīvu funkcionalitāte var atšķirties. Dažreiz masīvs būs pilnvērtīgs objekts ar sarežģītu funkcionalitāti. Tajā pašā laikā to var uzskatīt par primitīvu uzglabāšanas veidu; operācijas un funkcionalitāte tiktu izmantota ārēji.
Inicializē masīvus
Masīvus var izveidot statiski vai dinamiski. Statiskā valodā masīvs tiktu glabāts kaudzē, un tam ir nepieciešams a priori norādīt masīva veidu. Dinamiskās valodas piedāvā lielāku plūstamību, dažkārt prasa iestatīt izmēru un pirms lietošanas nav jānorāda veids. Šāds gadījums tiktu glabāts kaudzē. Masīviem ir indeksi, kas ir blakus vērtība, kas sākas ar 0 un palielinās līdz masīva beigām. Ja vienums ir nepieciešams, tiek norādīts masīva nosaukums, kam seko kvadrātiekavas, un rādītāja atrašanās vieta.
masīva_nosaukums[0]
Šis piemērs izgūs pirmo masīva vienumu. Var izmantot jebkuru numuru, un tiks atgriezts elements šajā indeksa vietā. Norādot skaitli, kas ir lielāks par masīva lielumu, tiks parādīta kļūda, kas pārsniedz robežas. Tipiska darbība, ko veiksit ar masīvu, ir masīva atkārtošana un elementu izpēte.
n <- size of array arr
FOR (i <- 0;i<(n-1); i <-(i+1)) DO
process element arr[i]
END
Vispārīgā for cilpas forma visās pieejās ir vienāda: jums ir nepieciešams masīva lielums, vesels skaitlis i, kas palielinās katrā iterācijā, un vispārīga cilpa sintaksei. Izskats var nedaudz atšķirties, bet pamatā esošais mehānisms ir vienāds. Sākot ar 0, izejiet cauri katram masīva vienumam un dariet kaut ko. Masīvam vienmēr būs kāds veids, kā piekļūt izmēram. Daži piemēri ir .size(), len(array) un .length().
Masīvu pārvaldība atmiņā
Viena būtiska atšķirība attiecībā uz masīviem dažādās programmēšanas valodās ir vieta, kur tie tiek glabāti. Vienumu var saglabāt kaudzes (heap) vai kaudzes atmiņā (stack memory). Palaižot funkciju, tiek izveidota Stack memory atmiņa. Tas ir izveidots šai funkcijai un pēc izpildes tiek izmests. Vienumi šajā atmiņas sadalījumā ir pieejami tikai šai funkcijai. Turpretim kaudzes atmiņa tiek izveidota instrukciju izpildes laikā un ir pieejama visiem.
Jāievēro piesardzība, mainot elementus statiskā vidē. Uzsākot masīvu, izsaukuma stekā tiek izveidota atmiņas vieta, kas vienāda ar norādīto inicializācijas lielumu. Izsaukuma stack tiek izveidots, lai izpildītu mērķi, kad tiek izsaukta funkcija. Mainot masīvu un atgriežot to no stack, var tikt bojāta atmiņa, jo stack pēc funkcijas pabeigšanas tiek izmests.
Dinamiskās valodas novērš šo problēmu, saglabājot masīvu kaudzē. Tādējādi masīvs paliek nemainīgs, kad funkcija beidzas, un stack tiek izmests. Stacks pēc savas būtības satur blakus esošos atmiņas blokus, padarot piekļuvi informācijai vieglāk pārvaldāmu. Kaudze ir mazāk sakārtota, un var būt nepieciešams vairāk laika, lai piekļūtu elementiem. Vēlreiz jāapsver kompromiss starp izmēru un ērtības vai pieejamību un ātrumu.
Parasti, kad programma ir pabeigta ar masīvu, atmiņa tiek atbrīvota un kļūst pieejama kaut kam citam. Tas, kā tiek veikta šī izvietošana un atkritumu savākšana, ir atkarīgs no izvēlētās programmēšanas valodas, un veiktspēju var uzlabot tikai tad, ja tas tiek darīts efektīvi. Slikta atmiņas pārvaldība var izraisīt noplūdes, kas var izraisīt lietojumprogrammas avāriju pēc atkārtotiem izsaukumiem.
Divi ar atmiņu saistīti jēdzieni, ar kuriem jūs varat saskarties, ir sekla kopija (shallow copy ) un dziļa kopija (deep copy). Pirmā instance neveido masīva kopiju, bet atgriež indeksa atrašanās vietu. Dziļā kopija izveidos jaunu masīva gadījumu. Sekla kopijas izveide optimizē atmiņas izmantošanu; tomēr jums ir jānodrošina, lai nejauši netiktu veiktas neparedzētas izmaiņas masīvā, ko koplieto divi mainīgie.
Masīvu savienošana
Matrica ir divdimensiju masīvs (two-dimensional array vai masīvs, kas sastāv no masīviem), kas var darboties kā tabula. To var izmantot, lai attēlotu rindas un kolonnas. Tas piešķir elementam 2D (x, y) koordinātu. Šeit x attiecas uz rindām un y uz kolonnām. Tāpat kā iepriekš, lai piekļūtu elementam divdimensiju masīvā, tiktu izmantotas kvadrātiekavas. Tomēr matricai ir nepieciešamas divas indeksa atrašanās vietas, kā norādīts tālāk.
Matrica[x][y]
Matricā būs kvadrātveida forma ar tādu pašu kolonnu un rindu skaitu. Tam tā nav obligāti jābūt. Bet, ja izvēlaties nesaglabāt vienveidību, pārliecinieties, ka jūsu cilpa darbojas atbilstoši.
int[][] matrix = new int[5][7]
for (int i = 0; i < matrix.length; i++) {
for(int j = 0; j < matrix[i].length; j++)
{
doSomethingNeo(matrix[i][j])
}
}
Šajā piemērā 2D masīvs, ko sauc par matricu, tiek inicializēts, lai tajā būtu veseli skaitļi. Ārējā kolekcijā var būt pieci elementi (veselo skaitļu masīvi). Visu iekšējo masīvu ietilpība ir 7. Pirmais masīvs ārējā masīvā tiek atlasīts ar i, tiek noteikts izmērs (7), un katrs šī iekšējā masīva elements tiek nodots metodei. Ievērojiet, kā iekšējā masīva lielumam tika dinamiski piekļūts, izmantojot atribūtu .length. Tas nodrošina, ka iterācijas laikā nevar rasties kļūdas, kas pārsniedz robežas.
Secinājums
Masīvi ir pamata datu struktūra, kas pastāv lielākajā daļā programmēšanas valodu. Tie palīdz saglabāt saistītos datus. Ir vērts atzīmēt, ka to ieviešana atšķiras atkarībā no valodas, tāpēc tos lietojot, jābūt uzmanīgiem. Šī raksta sadaļa mācīja jums par masīvu datu struktūru, tostarp to, kā inicializēt, pārvaldīt un pievienoties masīviem.
Objects – Objekti
Šajā raksta daļā tiks apspriesti objekti. Objekti ir visa koda pamatelementi, un tiem ir īpaši svarīga loma objektorientētajā programmēšanā (OOP). Šajā raksta daļā tiks ieskicētas objektu izmantošanas priekšrocības, kā arī daži svarīgi termini saistībā ar objektu izmantošanu.
Definīcija
Objekts ir programmēšanas jēdziens, kas nozīmē, ka struktūrai ir gan stāvoklis, gan uzvedība. Šeit uzvedība ir saistīta ar objekta spēju veikt kādu darbību. Turpinot šo rakstu sēriju, jūs redzēsiet daudzus gadījumus, kad objekti uzrāda dažādas uzvedības. Konkrēti tas attiecas uz objekta metožu izsaukšanu. Piemērs tam varētu būt masīva kārtošanas metodes izsaukšana. Tā rezultātā masīva vienumi tiek pārkārtoti tā, lai tie būtu sakārtoti viens pret otru.
Stāvoklis state attiecas uz informāciju par objektu. Vēl viens vārds, kas jums varētu būt pazīstams, ir objektu atribūti. Ja izveidojat personu klasi un izveidojat to objektam, stāvokļa piemērs var būt personas vecums vai vārds. Uzvedība var būt saistīta ar darbību, kas tiek prasīta no šīs personas-objekta, piemēram, skriešana vai cīņa.
Klases parasti raksturo kā objekta rasējumus. Pēc paplašinājuma objektu var aprakstīt kā klases gadījumu. Visbiežāk objekti tiek izmantoti OOP, kur kods tiek iekapsulēts objektos, un pēc tam šie objekti mijiedarbojas viens ar otru.
Piemērs
Viena no ievērojamajām priekšrocībām, izmantojot objektus, lai radītu klasi, ir tas, ka jums ir jāizveido tikai viena veidne, lai noteiktu, kā objekts darbosies. Pēc tam varat izveidot vairākus šīs klases gadījumus, kas var mijiedarboties savā starpā. Apsveriet futbola komandu ar 11 spēlētājiem. Jānorāda tikai viena klase, kurā var būt dažādas ātruma, veiklības un darba ātruma īpašības. Tas var ievērojami samazināt koda daudzumu, veidojot futbola spēli. Tādas īpašības kā ātrums un veiklība ir zināmas kā gadījumu mainīgie, un var teikt, ka tās ir saistītas ar objekta stāvokli. Neviena vienība ārpus objekta nekopīgos šo gadījumu. Diviem spēlētājiem var būt fitnesa gadījums. Mainot to vienā, netiks ietekmēts citos objektos atrastais piemērotības gadījums. Varat mainīt klases gadījumus, izmantojot konstruktoru vai objekta iekšējo metodi. Java tipiskā klases instantiācija ir šāda:
Spēlētājs spēlētājs1 = jauns spēlētājs (veiklība = 54, ātrums = 88, fiziskā sagatavotība = 90);
Spēlētājs spēlētājs2 = jauns spēlētājs (veiklība = 90, ātrums = 64, fiziskā sagatavotība = 83);
Šajā piemērā spēlētāju klase izveido divus objektus, spēlētājs1 un spēlētājs2. Mainīgie lielumi klasē tiek iestatīti atšķirīgi atkarībā no vērtībām, kas atrodamas iekavās. Ir jābūt arī metodei, kā mainīt mainīgo. Spēles gaitā spēlētājs var kļūt noguris. Var izsaukt metodi, lai samazinātu mainīgo gadījumu, lai to atspoguļotu.
spēlētājs1.set_fitness(80)
Tas mainīs spēlētāja1 fiziskās sagatavotības līmeni, bet neietekmēs citus spēlētājus. Metodes, ko izmanto, lai mainītu atribūtu gadījumus, parasti sauc par ieguvējiem un iestatītājiem.
Papildu objektu kontrole ir pieejama, izmantojot citas metodes, kas atrodamas objektā. Tāda komanda kā
spēlētājs1.kick()
liktu spēlētājam1 piešķirtajam objektam ieviest bumbiņas sitiena procedūru.
Spēlētāju klase ļauj izveidot komandu ar dažādām spējām, kas var spēlēt. Vēl viens jēdziens, kas saistīts ar objektu izmantošanu, ir mantošana. Iedomājieties, ka laukumā ir jāizveido cits cilvēks, piemēram, tiesnesis, kurš nespēlē, bet tomēr veic ar spēli saistītas darbības, piemēram, skriešanu un vispārējo izskatu. Iespējams, vēlēsities atkārtoti izmantot daļu atskaņotājā atrastā koda, neizveidojot atskaņotāju. Šeit jūs izveidojat klasi, kurā ir visi izplatītie atribūti, kurus vēlaties saglabāt, un katrs objekts var tos mantot, kā parādīts attēlā.
Tādējādi standarta metodes, piemēram, skriešana, nogurums un bumbai sekošana, visas var atrast cilvēkos, taču var atšķirt to, kā tās attiecas uz klases spēlētāju un klases tiesnesi. Šis jēdziens par vienu vispārīgu jēdzienu (cilvēks), kas var izpausties dažādās formās (spēlētāji, menedžeri, tiesneši), ir pazīstams kā polimorfisms. Viena forma, daudzas formas. Klasisks piemērs ir formu izmantošana. Viena aptverošā forma ietvers laukuma, diametra un augstuma jēdzienus. Pēc tam katrs formas gadījums (kvadrāts, trijstūris, aplis) izmantos šo atribūtu faktisko ieviešanu attiecīgajā stāvoklī.
Secinājums noslēgumā
Šajā raksta noslēguma sadaļā tika izpētīts objektu jēdziens, īpašu uzmanību pievēršot tā lietderībai, ja to izmanto objektorientētās programmēšanas pieejā.
Atbildēt
Lai komentētu, jums jāpiesakās sistēmā.