Lecția 22. datele private și comune
În lecția 21, ați creat primele clase în C ++. În acest caz, includeți o etichetă în definiția de clasă publice, pentru a oferi acces la programul fiecărui membru al clasei. Din această lecție veți învăța cum publice și private, atributele de control acces la membrii clasei din program. Vei invata ca programul se poate referi la un elemente comune (publice) de la orice funcție. Pe de altă parte, programul poate avea acces la elemente private (private) numai în funcțiile acestei clase. Această lecție explorează detaliile elemente particulare și comune. Până la sfârșitul acestei lecții, veți învăța următoarele concepte de bază:
Pentru a controla modul în care programele sunt de cotitură la clasa elemente, C ++ permite definirea elementelor atât private sau comune.
Elementele private permit clasei să ascundă informațiile care nu trebuie să cunoască programul.
Clasa folosește un element privat oferă funcții de interfață care se aplică membrilor clasei private.
După cum sa discutat deja pe scurt în lecția 21, ar trebui să pună în definiția clasei cât mai multe informații despre acest subiect așa cum credeți că este necesar. În acest caz, obiectele devin auto-suficiente, ceea ce poate mări posibilitatea reutilizării acestora în mai multe programe.
După cum știți deja, clasa conține date și metode (funcții). Pentru a utiliza programul clasa trebuie doar să cunoască informațiile păstrate de clasa (elementele de date sale), precum și metode care manipulează datele (funcția). Programul tau nu are nevoie să știe cum funcționează metodele. Mai mult decât atât, programul trebuie doar să știe ce sarcini sunt realizate prin metodele. De exemplu, să presupunem că aveți un fișier de clasă. În mod ideal, programele trebuie să știe exact ce această clasă oferă metode file.print, care imprimă o copie formatată a fișierului curent sau File.Delete, care șterge fișierul. Programul tau nu are nevoie să știe cum funcționează aceste două metode. Cu alte cuvinte, programul ar trebui să ia în considerare clasa ca o „cutie neagră“. Programul știe ce metode trebuie să apela și ce parametri pe care ele trec, dar programul nu știe nimic despre lucrări relno efectuate în cadrul clasei (în „cutia neagră“).
Când creați o clasă de ai putea avea elemente ale căror valori sunt folosite doar în interiorul sălii de clasă, dar contactul la care programul in sine nu este necesară. Astfel de elemente sunt private (private), iar acestea ar trebui să fie ascunse de la client. Dacă nu utilizați o etichetă publică, implicit C ++ implică faptul că toți membrii clasei sunt private. Programul nu poate accesa elementele private ale unei clase folosind operatorul punct. numai elementele clasei pot avea acces la elementele private ale unei clase. Când creați o clasă, ar trebui să împartă elementele din private și comune, așa cum se arată mai jos:
După cum puteți vedea, etichetele publice și private face ușor pentru a determina ce elemente sunt private și care sunt comune. În acest caz, programul poate utiliza operatorul punct pentru a avea acces la elemente comune așa cum se arată mai jos:
Dacă programul încearcă să acceseze elementele private de key_value sau key_number, folosind punct, compilatorul raportează o eroare de sintaxă.
Ca o regulă, vă va proteja elementele clasei de acces direct la ei, făcându-i privat. În acest caz, programul nu se poate atribui în mod direct valorile elementelor folosind operatorul punct. Mai degrabă decât să atribuie o valoare, programul trebuie să apeleze metoda de clasă. Prevenirea acces direct la elementele de date, astfel poate garanta că acestea vor fi întotdeauna atribuite valori valide. De exemplu, să presupunem că obiectul nuclear_reactor programul utilizează o variabilă numită melt_down, care trebuie să conțină întotdeauna o valoare de la 1 la 5. În cazul în care elementul melt_down este comun, programul se poate referi direct la un element de schimbare valoarea sa într-un mod arbitrar:
În schimb, dacă vi se face o variabilă privată, puteți utiliza metoda de clasă, de exemplu assign_meltdown, pentru a atribui o valoare pentru variabila. Așa cum se arată mai jos, assign_meltdown funcție poate verifica valoarea atribuită, pentru a vă asigura că acesta nu este valabil:
int nuke :: assign_meltdown (int valoare)
Metode de clasă care controlează accesul la elementele de date reprezintă funcțiile de interfață. Când creați o clasă veți utiliza funcțiile de interfață pentru protecția datelor din clasele lor.
Elemente publice și private