C og C + + programmering Resources

Del / bokmerker
Custom Search

Mer om Encapsulation

Skrevet den 10 september 2008

Formålet med denne opplæringen er å illustrere hvordan du bruker noen av de tradisjonelle sidene ved C eller C + + med klasser og objekter. Pekere til et objekt, samt pekere innenfor et objekt blir belyst. Arrays integrert i et objekt, og en rekke objekter vil bli belyst. Siden objektene er ganske enkelt en annen C + + data konstruere, alle disse tingene er mulig og kan brukes ved behov.

For å få en systematisk studie, vil vi bruke programmet heter BOXES1.CPP fra siste tutorial som utgangspunkt, og vi vil legge noen nye konstruksjoner til det for hvert eksempel program. Du husker at det var et veldig enkelt program med klassen definisjonen, klassen gjennomføringen, og de viktigste kjøre programmer i én fil.

Her er det program igjen.

  klasse boks
 (
    int lengde;
    int bredde;
    offentlige:
    boks (void); / / Constructor
    void sett (int new_length, int new_width);
    int get_area (void);
 );

 boks:: boks (void) / / Constructor gjennomføring
 (
   lengde = 8;
   width = 8;
 )
 / / Denne metoden vil sette en boks størrelse til de to inndataparametere
 void boks:: sett (int new_length, int new_width)
 (
   lengde = new_length;
   width = new_width;
 )
 / / Denne metoden vil beregne og returnere arealet av en boks forekomst
 int boks:: get_area (void)
 (
   avkastning (lengde * bredde);
 )
 main ()
 (
   boks liten;
   small.set (5, 7);
   cout <<"Den lille boksen området er" <<small.get_area ()
   <<"\ N";
 )

 / / Resultater av kjøring
 / /
 / / Den lille boksen området er 35 

Dette ble valgt som utgangspunkt fordi vi vil etter hvert gjøre endringer til alle deler av programmet og det vil være praktisk å ha alt i en enkelt fil for veiledende formål.

En rekke av gjenstander

Undersøk filen som heter OBJARRAY.CPP for vårt første eksempel på en rekke objekter. Denne filen er nesten identisk med fil kalt BOX1.CPP før vi kommer til linje 44 hvor en rekke av 4 boksene er erklært.

  / / Objarray.cpp
 # Include <iostream.h>

 class boks (
 int lengde;
 int bredde;
 statisk int extra_data; / / deklarasjon av extra_data
 offentlige:
 boks (void); / / Constructor
 void sett (int new_length, int new_width);
 int get_area (void);
 int get_extra (void) (return extra_data + +;)
 );

 int boks:: extra_data; / / Definisjon av extra_data

 boks:: boks (void) / / Constructor gjennomføring
 (
 lengde = 8;
 width = 8;
 extra_data = 1;
 )

 / / Denne metoden vil sette en boks størrelse til de to inndataparametere
 void boks:: sett (int new_length, int new_width)
 (
 lengde = new_length;
 width = new_width;
 )

 / / Denne metoden vil beregne og returnere arealet av en boks forekomst
 int boks:: get_area (void)
 (
 avkastning (lengde * bredde);
 )

 main ()
 (
 boks liten, medium, stor, gruppe [4]; / / Sju bokser å jobbe med

 small.set (5, 7);
 large.set (15, 20);

 for (int indeks = 1; indeks <4; indeks + +) / / gruppe [0] bruker standard
 Gruppen [Index]. sett (indeks 10 +, 10);

 cout <<"Den lille boksen området er" <<small.get_area () <<"\ n";
 cout <<"De mellomstore boksen området er" <<medium.get_area () <<"\ n";
 cout <<"Den store boksen området er" <<large.get_area () <<"\ n";

 for (indeks = 0; indeksen <4; indeks + +)
 cout <<"Den array boksen området er" <<
 Gruppen [Index]. get_area () <<"\ n";

 cout <<"Det ekstra data verdien er" <<small.get_extra () <<"\ n";
 cout <<"Det ekstra data verdien er" <<medium.get_extra () <<"\ n";
 cout <<"Det ekstra data verdien er" <<large.get_extra () <<"\ n";
 cout <<"Det ekstra data verdien er" <<gruppe [0]. get_extra () <<"\ n";
 cout <<"Det ekstra data verdien er" <<-gruppen [3]. get_extra () <<"\ n";
 )

 / / Resultater av kjøring
 / /
 / / Den lille boksen området er 35
 / / The medium boks området er 64
 / / Den store boksen området er 300
 / / Matrisen boksen området er 64
 / / Matrisen boksen området er 110
 / / Matrisen boksen området er 120
 / / Matrisen boksen området er 130
 / / Det ekstra dataverdien er 1.
 / / Det ekstra dataverdi er 2.
 / / Det ekstra dataverdi er 3
 / / Det ekstra dataverdi er 4
 / / Det ekstra dataverdi er 5 

Minner om driften av konstruktøren vil du huske at hver av de fire boksen objektene blir initialisert til de verdier som er definert i konstruktøren siden hver boks vil gå gjennom konstruktør som de blir vedtatt. For å erklære en rekke objekter, en konstruktør for at objektet må ikke krever noen parametere. (Vi har ennå ikke illustrert en konstruktør med initialisering parametere, men vi vil i neste program.) Dette er en effektivitet vurderes fordi det ville trolig være en feil å initialisere alle elementer av en rekke gjenstander til samme verdi. Vi får se resultatene av å utføre konstruktøren når vi kompilere og kjøre filen senere.

Line 49 definerer en for løkke som begynner med 1 i stedet for den vanlige starte indeksen for en rekke forlate det første objektet, kalt gruppe [0], for å bruke standardverdiene lagret når konstruktøren ble kalt. Du vil se at det å sende en melding til ett av objektene bruker samme bygge som brukes til alle underlag. Navnet i matrisen etterfulgt av indeksen i hakeparentes brukes for å sende en melding til en av objektene i matrisen. Dette er illustrert i tråd 50 og drift av at koden skal være klart for deg. Den andre metoden kalles i produksjon uttalelse linjer 57 og 58, der arealet av de fire boksene i gruppen array vises på skjermen.

En annen fin spiss bør påpekes. Heltallsvariabelen heter indeksen er deklarert på linje 49 og er fortsatt tilgjengelig for bruk i tråd 56 siden vi ennå ikke har forlatt tilhørende blokken som starter i linje 43 og strekker seg til linje 65 år.

ERKLÆRING og definisjon av en variabel

En ekstra variabel ble inkludert for illustrasjon, en den navngitte extra_data i tråd syv. Siden søkeordet statiske brukes til å endre denne variabelen i linje 7, er det en ekstern variabel og bare én kopi av denne variabelen noensinne vil eksistere. Alle sju objekter av denne klassen dele en enkelt kopi av denne variabelen som er global til objektene definert i linje 44.

Variabelen er faktisk bare erklært her som sier det vil eksistere et sted, men det er ikke definert. En erklæring sier at variabelen vil eksistere og gir den et navn, men definisjonen faktisk definerer et sted å lagre den et sted i datamaskinene plass i minnet. Per definisjon kan en statisk variabel deklareres i en klasse header, men det kan ikke være definert der, så det er definert et sted utenfor header, vanligvis i gjennomføringen filen. I dette tilfellet er definert i tråd 16 og kan deretter brukes i hele klassen.

Line 23 av konstruktøren setter enkelt global variabel til en hver tid en gjenstand er deklarert. Bare én oppgave er nødvendig, slik de andre seks er egentlig bortkastet kode. For å illustrere at det er bare en variabel som deles av alle objekter av denne klassen, til metoden lese verdien også økninger det. Hver gang det leses inn i linjene 60 gjennom 64 er det økes og resultatet av henrettelsen viser at det bare er én variabel som deles av alle objekter av denne klassen. Du vil også merke til at metoden kalt get_extra () er definert i klassen erklæringen slik at den blir satt sammen til det endelige programmet som innebygd kode. Vær sikker på at du forstår dette programmet, og spesielt den statiske variabelen, og deretter kompilere og kjøre den for å se om du får samme resultat som er oppført på slutten av programmet.

Sider: [Page - 1] [Side - 2] [Side - 3] [Side - 4] [Side - 5] [Side - 6] [Side - 7] [Side - 8]

Tags: , , , , , ,

Som det du ser?

Bli en av soldatene ved å abonnere! Du vil bli den første til å vite når vi legger til flere gode innlegg akkurat som dette. Bli med opp av enten RSS-feeder eller Email Updates i dag!

Det er ingen kommentarer til dette innlegget. Du kan følge alle svar å denne komme inn igjennom RSS 2.0 feed . Du kan hoppe til slutten og legge igjen et svar , eller TrackBack fra ditt eget nettsted.


Legg igjen en kommentar

Du må være logget inn for å legge inn en kommentar.