1) Tipul de date abstract

Tipul abstract cuprinde 2 concepte - reprezentarea datelor și operațiunile. care se poate face pe baza acestor date. Exemple de tipuri abstracte în C ++ sunt o matrice, un șir, o coadă. Ideea fundamentală este de a separa detaliile esențiale ale implementării subrutinei și ale caracteristicilor esențiale pentru utilizarea corectă a acesteia. O astfel de diviziune poate fi exprimată printr-o "interfață" specială: - un set de funcții care pot avea acces la structuri; - date prin care este reprezentată o "abstracție".







O clasă este un tip definit de utilizator. O clasă este un tip. și nu un obiect de date și fiecare obiect al clasei are o copie proprie a datelor - membrii clasei.

Clasa abstractă este o clasă pentru care programatorul nu intenționează să creeze obiecte. ALEGEREA TIPULUI DE DATE A REZUMATULUI - A UTILIZA CA CALITATEA PRIMULUI BAZA DE INSISTENȚĂ.

Clasa este făcută ABSTRACT: Una sau mai multe dintre funcțiile sale sunt declarate PURE VIRTUAL: IE. Organismul funcției este definit ca 0 (de exemplu, inițializatorul = 0)

INDICATORI PENTRU CLASA REZUMATULUI.

O clasă de beton ale cărei obiecte pot fi implementate.

Scopul conceptului de clasă este de a oferi programatorului un instrument pentru crearea de noi tipuri. la fel de ușor de manevrat ca și cele încorporate. În mod ideal, tipul definit de utilizator, metoda de utilizare nu trebuie să difere de tipurile încorporate, ci doar în modul de creare. Tipul este o reprezentare concretă a unui concept (concept). Se creează un tip nou pentru a oferi o definiție specifică și specifică a unui concept la care nimic nu se răspunde direct și evident între tipurile încorporate. Tipurile bine alese, definite de utilizator, fac ca programul să fie mai clar și mai scurt. Acest lucru permite, de asemenea, compilatorului să detecteze utilizarea necorespunzătoare a obiectelor. care altfel vor rămâne nedetectate până la testarea programului. În definirea unui nou tip de ideea de bază - pentru a separa podrobnostirealizatsii neesențial (de exemplu, un format de date utilizate pentru a stoca tipul de obiect) din calitățile care sunt esențiale pentru utilizarea corectă a acestuia (de exemplu, lista de funcții care au acces la date). O astfel de diviziune poate fi descrisă astfel încât să funcționeze cu structura de date și subrutinele administrative interne printr-o interfață specială (canal).

Abstractizarea datelor într-o clasă este atunci când clientul nu cunoaște implementarea acestei clase (un client de clasă face parte din programul care folosește această clasă.)

Clasa constă din elemente de date și elemente de funcții. Aceste elemente ale clasei nu pot primi valorile inițiale în sala de clasă, unde sunt anunțate (și numai cu ajutorul designerului)!

Accesul la obiectele de clasă poate fi limitat la un set de funcții care sunt descrise ca parte a acestei clase. Astfel de funcții sunt numite funcții prin membri sau metode. Acestea sunt chemați la răspunsuri la mesajele obiectului OBJECT. Obiectele de clasă sunt create și inițializate prin funcții ale membrilor, în mod special descrise în acest scop. Aceste funcții se numesc constructori. Funcția membru poate fi descrisă în mod specific pentru a "curăța" fiecare obiect de clasă atunci când este distrus. Această funcție este numită destructor. Pentru a utiliza o clasă. trebuie să creați obiecte din această clasă. și puteți crea cât mai multe obiecte de care aveți nevoie.

REALIZAREA CLASEI ESTE CLASE ELEMENTE CLASICE + DESCRIEREA ELEMENTELOR DESCHISE-FUNCTIE.

Implementarea clasei poate fi modificată fără a afecta utilizatorii acesteia. DENUMIRILE EXISTENTE ÎN DESCRIEREA SISTEMULUI SUNT RESPONSABILE PENTRU DISPONIBILITATEA CLASELOR.

ACCESUL LA ELEMENTELE CLASEI:

OPERATION (.) Accesează un element printr-un nume de variabilă sau prin referire la un obiect.







OPERARE (->) Accesați cursorul spre obiect. (element_obiect-> element este echivalent cu (* object_name) .element).

int lună, zi, an;

setul void (int, int, int);

Datele declarate publice și până la următorul identificator sunt disponibile atunci când programul accesează obiectul. Eticheta publică împarte corpul clasei în două părți. Numele din prima parte închisă pot fi utilizate numai de funcțiile membrilor. Al doilea, partea deschisă. este interfața cu obiectul clasei.

Datele declarate după confidențialitate și înainte de identificatorul următor sunt disponibile NUMAI MEMBRILOR ȘI PRIETENILOR FUNCȚIEI CLASEI. Acesta este modul de acces la clasa DEFAULT (IE DACĂ NU ALTE SPECIFICI DE ACCES) Funcții Membri: Citiți datele private; Setați valorile datelor private;

ANUNȚATE într-un mod special (în corpul clasei). Dacă funcția membru este descrisă în clasă, se aplică OPERAȚIUNEA BINARĂ A REZOLUȚIEI DE ACȚIUNE (.) Legă numele clasei la numele elementului. Funcțiile membrilor au un domeniu de aplicare al CLASEI, FĂRĂ ALE MEMBRILOR. Unele operațiuni trebuie să fie membri. constructori, destructori și funcții virtuale. O operație care schimbă starea unui obiect trebuie să fie un membru, nu un prieten. Dacă doriți să aveți o conversie implicită pentru toți operanții unei operații, funcția care o implementează trebuie să fie un prieten, nu un membru.

Acestea pot fi numite doar pentru o variabilă specială de tipul corespunzător folosind sintaxa standard pentru accesarea membrilor clasei.

În funcția membru a membrului obiectului. pentru care a fost chemat, vă puteți referi direct.

Constructorul. Funcția construiește valori de acest tip. se numește constructor. Constructorul este recunoscut de faptul că are același nume ca și clasa însăși.

DESIGNER NICIUNI RETURNI Constructorul este chemat automat.

Atunci când o clasă are un constructor, toate obiectele din această clasă vor fi inițializate. Dacă parametrii sunt necesari pentru constructor, ar trebui să se acorde: data astăzi = data (23,6,1983)

Este adesea bine să oferiți mai multe moduri de a inițializa un obiect de clasă. Această abordare este necesară dacă doriți să asigurați toate cazurile de utilizare a clasei. Acest lucru se poate face prin specificarea mai multor constructori. În cazul în care designerii diferă semnificativ de tipurile parametrilor, compilatorul poate alege cel potrivit pentru fiecare utilizare.

int lună, zi, an;

data (int, int, int); // ziua lunii an

data (char *); // date în reprezentarea șirului

data (int); // ziua, luna și anul curent

data (); // data implicită: astăzi

> Dacă clasa are un constructor, atunci se numește întotdeauna când este creată

Obiectele pot fi create ca:

[1] Obiect automat. este creată de fiecare dată când este descrisă

apare în timpul execuției programului și este distrus de fiecare dată

la ieșirea din blocul în care a apărut; Obiectul poate, de asemenea

să fie construite folosind o aplicație explicită

constructor în expresie, caz în care este automat

[2] Obiect static. este creat o dată, când programul este rulat și

Distrusă o dată, la finalizarea ei;

[3] Obiectul în memorie liberă. este creată cu noua operațiune și

este distrus de operațiunea de ștergere;

[4] Obiect membru. Ca obiect al unei alte clase sau ca element al unui vector.

Funcțiile membrului pot fi supraîncărcate fără utilizarea explicită a cuvântului cheie de supraîncărcare. Un obiect de clasă fără constructori poate fi inițializat prin alocarea unui alt obiect din această clasă. În esență, există un constructor implicit, definit ca o copie bit-by-bit a unui obiect din aceeași clasă.

Este nevoie de un distrugător pentru a oferi o curățare corespunzătoare pentru obiectele de acest tip. Numele de destructor pentru clasa X este

X () ("adăugarea constructorului")

DESTRUCTORUL NICI NICI NICI, NICI O RETURNARE. Nu este permisă supraîncărcarea distrugătorului. Distrugătorul este chemat automat.

Funcții în linie. Funcția membru descrisă (și nu doar declarată) în declarația de clasă este considerată în linie. Inline este necesar atunci când sunt folosite multe funcții mici. De fapt, pretutindeni, unde un program tradițional de structură ar avea pur și simplu o utilizare obișnuită a unei structuri de date, este dată o funcție. Acest lucru poate reduce eficacitatea infricosator, deoarece costul unui apel de funcție (deși nu mare în comparație cu alte limbi) este încă mult mai mare decât o pereche de referințe de memorie necesare pentru funcționarea organismului membrii clasei .Funktsii trebuie să re-compilate ori de câte ori plătite - sau schimbarea descrierii clasei.

Prieteni Funcția nu poate fi membru al două clase. Funcția nu este membru, care are dreptul de a accesa partea închisă a clasei. este numit prieten de clasă (prieten). Funcția devine un prieten al clasei după descrierea ca prieten. Funcția prietenului nu are caracteristici speciale. în plus față de dreptul de acces la partea închisă a clasei. În particular, funcția de prieten nu are acest lucru (dacă nu este o funcție de membru complet). Descriere prieten - această descriere. Intră în numele funcției în domeniul de aplicare al programului și este mapat la alte descrieri ale acelui nume. Descrierea prietenului poate fi localizată fie în partea închisă, fie în partea deschisă a descrierii clasei; exact unde nu contează. Funcția unui membru al unei clase poate fi un prieten al alteia.

vector multiplicator vector (matrice, vector);

vector multiplicator vector (matrice, vector);







Articole similare

Trimiteți-le prietenilor: