
Mai multe despre încapsulare
Scopul acestui ghid este de a ilustra modul de utilizare a unor aspecte tradiţionale ale C sau C + + cu clase şi obiecte. Trimiteri către un obiect, precum şi indicatori în cadrul unui obiect vor fi ilustrate. Array încorporat într-un obiect, şi o serie de obiecte vor fi ilustrate. Deoarece obiectele sunt, pur şi simplu un alt C + + date construi, toate aceste lucruri sunt posibile şi pot fi utilizate, dacă este necesar.
Pentru a avea un studiu sistematic, noi va utiliza programul numit BOXES1.CPP from tutorial ultima ca punct de plecare, iar noi va construieşte un add new câteva it for fiecare program de exemplu. Tu vei aminti că a fost un program foarte simplu cu definiţia de clasă, la punerea în aplicare de clasă, şi programul principal de asteptare într-un singur fişier.
Aici este faptul că programul din nou.
caseta de clasa (int lungime, lăţimea int; public: caseta (void); / / Constructor nule set (new_length int, new_width int); get_area int (void);); cutie:: cutie (void) / / Constructor punerea în aplicare (lungime = 8; width = 8;) / / Această metodă va stabili o dimensiune caseta pentru a parametrilor de intrare două nule box:: set (new_length int, int new_width) (lungime = new_length; width = new_width;) / / Această metodă va calcula şi să returneze un int zona de cutie caseta de exemplu:: get_area (void) (return (lungime * latime);) main () (cutie mica; small.set (5, 7); cout <<"zona caseta mici este "<<small.get_area () <<" \ n ";) / / Rezultatul de executare / / / / zona cutie mica este de 35 Aceasta a fost selectat ca un punct de plecare pentru că ne va face modificări în cele din urmă la toate părţile programului şi va fi convenabil să aibă totul într-un singur fişier pentru motive ilustrative.
Un array de obiecte
Examinaţi fişierul numit OBJARRAY.CPP pentru exemplul nostru, prima dintr-o serie de obiecte. Acest fişier este aproape identic cu fisierul numit BOX1.CPP până când vom veni la linia 44, în cazul o serie de 4 cutii sunt declarate.
/ / # Include objarray.cpp <iostream.h> caseta de clasa (int lungime, lăţimea int; extra_data int statice; / / Declaraţia publice extra_data: caseta (void); / / Constructor nule set (new_length int, new_width int); get_area int (void); get_extra int (void) (extra_data reveni + +;)); caseta int:: extra_data; / / Definiţia din caseta extra_data:: cutie (void) / / Constructor punerea în aplicare (lungime = 8; width = 8; extra_data = 1;) / / Această metodă va stabili o dimensiune caseta pentru a parametrilor de intrare două nule box:: set (new_length int, int new_width) (lungime = new_length; width = new_width;) / / Această metodă va calcula şi să se întoarcă în zona de exemplu un int cutie cutie:: get_area (void) (return (lungime * latime);) main () (caseta de mediu,, mare, mic grup [4]; / / Şapte cutii de a lucra cu small.set (5, 7); large.set (15, 20); pentru (indicele int = 1; index <4; indicele + +) / / grup [0] utilizează grupul implicit Index] [;. set (indicele + 10, 10) cout << "Zona caseta de mici dimensiuni este" <<small.get_area () <<"\ n"; cout <<"zona caseta de mediu este" <<medium.get_area () <<"\ n"; cout <<" Zona cutie mare este "<<large.get_area () <<" \ n "; pentru (indice = 0; index <4; indicele + +) instanţa de <<" zona caseta matrice este "<<] grup indicele [. get_area ( ) <<"\ n"; cout <<"valoarea datelor suplimentare este" <<small.get_extra () <<"\ n"; cout <<"valoarea datelor suplimentare este" <<medium.get_extra () < <"\ n"; cout <<"valoarea datelor suplimentare este" <<large.get_extra () <<"\ n"; cout <<"valoarea datelor suplimentare este" <grup <[0]. get_extra () <<"\ n"; cout <<"valoarea datelor suplimentare este" <grup <[3] ". get_extra () <<\ n";) / / Rezultatul de executare / / / / zona cutie mica este de 35 / / zona caseta de mediu este de 64 / / zona cutie mare este de 300 / / zona caseta de matrice este de 64 / / zona caseta de matrice este de 110 / / zona caseta de matrice este de 120 / / zona caseta de matrice este de 130 / / Valoarea date suplimentare este de 1 / / valoarea datelor suplimentare este de 2 / / valoarea datelor suplimentare este de 3 / / valoarea datelor suplimentare este de 4 / / valoarea datelor suplimentare este de 5 Reamintind de funcţionare a constructorului vă veţi aminti că fiecare dintre cele patru obiecte caseta va fi iniţializat cu valorile definite în cadrul constructorului din moment ce fiecare cutie va trece prin constructorul în care acestea sunt declarate. Pentru a declara un array de obiecte, un constructor pentru acel obiect nu trebuie să necesite nici o parametri. (Noi nu s-au ilustrat încă un constructor cu parametrii de initializare, dar vom în programul următor.) Acesta este un aspect de eficienţă din moment ce ar fi, probabil, o eroare a iniţializa toate elementele de o serie de obiecte de aceeaşi valoare. Vom vedea rezultatele execuţiei constructorului când vom compila şi executa fişierul mai târziu.
Defineşte o linie de 49 de bucla care începe cu 1 în loc de normale indicele de pornire pentru o gamă lăsând primul obiect, numit grup [0], pentru a utiliza valorile implicite stocate în cazul în care constructorul a fost numit. Vei observa că a trimite un mesaj la unul din obiectele utilizează construi ca este folosit pentru orice obiect. Numele matrice urmat de indexul său în paranteze pătrate este folosit pentru a trimite un mesaj la unul din obiectele din matrice. Acest lucru este ilustrat în linia 50 şi funcţionarea din acest cod ar trebui să fie clar pentru tine. Altă metodă se numeşte în declaraţia de ieşire din liniile 57 şi 58 în cazul în care zona de patru cutii în matrice grupă sunt enumerate pe monitor.
Un alt punct amenda ar trebui să fie subliniat. Variabile integer numit indice este declarată în linie 49 şi este încă disponibil pentru utilizare în linie 56, deoarece nu am ieşit încă de pe bloc anexând care începe în linia 43 se extinde şi la linia 65.
DECLARAŢIA şi definirea unei variabile
O variabilă a fost inclus suplimentar pentru ilustrare, un nume extra_data în conformitate şapte. Deoarece cuvântul cheie static este folosit pentru a modifica această variabilă în linie 7, aceasta este o variabilă externă şi numai o singură copie a acestei variabile va exista vreodată. Toate cele şapte obiecte de această cotă clasa o singură copie a acestei variabile, care este la nivel mondial la obiectele definite în linia 44.
Variabilă este, de fapt numai declarată aici care spune ca va exista undeva, dar nu este definit. O declaraţie spune variabilă va exista şi dă-i un nume, dar definiţia defineşte de fapt, un loc pentru a stoca undeva în calculatoare spaţiul de memorie. Prin definiţie, o variabilă statică poate fi declarat într-un antet de clasă, dar nu poate fi definită acolo, aşa că este definit undeva în afara de antet, de obicei în fişierul de implementare. În acest caz, este definit în linia 16 şi pot fi apoi utilizate în întreaga clasă.
Linia 23 din constructorul stabileşte singură variabilă globală la 1 de fiecare dată când un obiect este declarat. Doar o cesiune este necesar pentru celelalte şase sunt irosite de fapt cod. Pentru a ilustra faptul că există o singură variabilă în comun de către toate obiectele din această clasă, metoda de a citi valoarea sa, de asemenea, creşteri ea. De fiecare dată când este citit în linii 60, prin 64, este incrementat şi urmare a executării dovedeşte că nu există decât o singură variabilă în comun de către toate obiectele din această clasă. Veti observa, de asemenea, că metoda numită get_extra () este definit în declaraţia de clasă aşa că vor fi asamblate în programul final de cod inline. Asiguraţi-vă că aţi înţeles acest program şi, în special variabila statică, apoi compilaţi şi executaţi pentru a vedea dacă aveţi acelaşi rezultat astfel cum sunt enumerate la sfârşitul a programului.
Pagini: Page [- 1] [Pagina - 2] [Pagina - 3] [Pagina - 4] [Pagina - 5] [Pagina - 6] [Pagina - 7] [Page - 8]
Tags: programare C + + , ascunderea de date , de încapsulare , funcţii , obiect , Trimiteri , Strings
Place ceea ce vezi?
Devenit una din regulars de abonaţi! Vei fi primul care să ştiu când vom adăuga mai multe posturi de mare ca asta. Alăturaţi-vă în sus fie prin RSS Feeds sau actualizări de email de azi!
Nu exista comentarii la acest post. Tu poţi a urma orice răspunsurile la această intrare prin RSS 2.0 feed . Puteţi trece la sfârşitul şi a lăsa un răspuns sau Trackback de la propriul dvs. site.


































