Jinsi Ya Kuvuta Sifa

Orodha ya maudhui:

Jinsi Ya Kuvuta Sifa
Jinsi Ya Kuvuta Sifa

Video: Jinsi Ya Kuvuta Sifa

Video: Jinsi Ya Kuvuta Sifa
Video: KUJAMBA 2024, Mei
Anonim

Wakati wa kufanya kazi na vitu na hali zingine za darasa, kupata sifa ni moja wapo ya shughuli za kawaida kwa programu. Kupata ufikiaji wa data fulani iliyohifadhiwa kwenye vitu inaweza kuwa ngumu, ikizingatiwa njia za usalama zinazotumika kwao. Kwa hivyo, sifa zilizofungwa na vibainishi vya faragha na vilivyolindwa vinaweza kutolewa kutoka kwa mfano wa darasa tu kwa njia ya kitu cha darasa moja au la mtoto (kwa ulinzi).

Jinsi ya kuvuta sifa
Jinsi ya kuvuta sifa

Maagizo

Hatua ya 1

Unda kitu au pointer kwa mfano wa darasa ambalo sifa unayohitaji katika programu yako. Ujenzi wa kawaida wa operesheni kama hiyo ni CMyClass myObj1. Wakati mwingine, kuanzisha kitu, lazima upitishe vigezo kadhaa kwa mjenzi wa darasa. Katika kesi hii, rekodi ya uundaji wa kitu inaweza kuonekana kama hii: kwenye mabano. Kiashiria cha mfano wa darasa kimeundwa kama ifuatavyo: CMyClass * pObj1 = CMyClass mpya (param1, param2, param3).

Hatua ya 2

Njia rahisi ya kuita sifa ni kuirejelea moja kwa moja mahali popote kwenye programu. Walakini, hii inawezekana tu kwa data wazi iliyoelezewa darasani na kibadilishaji cha umma. Ufikiaji wa moja kwa moja kupitia kitu inaonekana kama hii: myObj1.attr1, ambapo attr1 ni sifa ya darasa hili. Kwa pointer, simu itakuwa: pObj1-> attr1.

Hatua ya 3

Ikiwa sifa ambayo unahitaji kutaja ina hadhi iliyofichwa na imeelezewa katika darasa na kibadilishaji cha faragha, basi ufikiaji huo inawezekana tu kutoka kwa njia ya darasa moja. Njia au kazi ya darasa lazima iwe na hadhi ya umma hadharani. Ongeza njia mpya kwa darasa, ambapo andika usindikaji wa sifa inayohitajika. Katika kesi hii, vigezo vinaweza kupitishwa kwa kazi hiyo, kulingana na dhamana ya ambayo vitendo kadhaa hufanywa. Kazi yenyewe pia inaweza kurudisha data, kama vile yaliyomo kwenye sifa. Nambari ya mpango wa C ++ inayotekeleza kazi zote mbili kwa kufanya kazi na sifa ya kibinafsi: darasa la CMyClass {protected: int attr1; // sifa ya umma: batili funcA1 (int param) {attr1 = param; } int funcA2 () {kurudi attr1; }}};

Hatua ya 4

Kwa hivyo, kuweka sifa ya kibinafsi attr1 kwa thamani unayohitaji, piga njia ya darasa moja ukitumia kitu kilichoundwa hapo awali: myObj1.funcA1 (10) - na operesheni sawa sawa, thamani ya 10 imewekwa katika sifa ya Wakati wa kufanya kazi na pointer kwa mfano wa darasa, operesheni kama hiyo itaonekana kama hii: рObj1-> funcA (10). Kuchukua sifa ya kibinafsi attr1 na kujua thamani iliyohifadhiwa ndani yake, piga njia nyingine ya darasa: int Res = myObj1.funcA2 (). Katika kesi hii, nambari kamili ya Res itapewa thamani ya tofauti ya darasa iliyofichwa.

Hatua ya 5

Ikiwa unahitaji kuita sifa na hali iliyolindwa katika vitu vyote vya madarasa ya watoto, rejea kwa kutofautisha kwake moja kwa moja. Walakini, wakati wa kufanya kazi katika kazi za madarasa ya kigeni, ufikiaji wa data iliyolindwa italazimika kupatikana kwa njia iliyoelezwa hapo juu.

Hatua ya 6

Ili kupiga sifa bila kuunda kitu, tangaza kutofautisha kwake kwa darasa kama tuli kwa kutumia ujenzi ufuatao: tuli int attr1. Katika kesi hii, unaweza kuvuta sifa mahali popote kwenye nambari ya programu kwa kutaja kiingilio: CMyClass:: attr1.

Ilipendekeza: