17.04.2013 Views

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

- Functiile membre ale unei clase pot fi definite <strong>în</strong> cadrul definitiei clasei sau <strong>în</strong> afara<br />

clasei, dar atunci trebuie declarate <strong>în</strong> clasã.<br />

- Nu toti membri unei clase sunt accesibili din afara clasei; nivelul de accesibilitate<br />

este declarat prin cuvintele cheie "public", "private" si "protected", folosite ca etichete<br />

pentru secvente de declaratii care au toate acest atribut. De obicei variabilele clasei<br />

sunt "private" sau "protected", iar functiile (metodele) sunt marcate cu "public".<br />

Multimea metodelor publice constituie interfata clasei cu exteriorul, sau interfata<br />

expusã de clasa respectivã cãtre utilizatorii potentiali (functii sau metode externe).<br />

Exemplu de definire a unei clase:<br />

class StrTok {<br />

private: // poate lipsi, este implicit<br />

char * str; // sirul analizat<br />

char * token; // adr cuv urmator<br />

char * sep; // sirul caracterelor separatori de cuvinte<br />

public:<br />

StrTok (char * str, char * delim="\t \n\r") { // constructor<br />

this->str= strdup(str);<br />

sep=delim;<br />

token=strtok(this->str,sep);<br />

}<br />

char * next () { // o metoda<br />

if (token == NULL)<br />

return NULL;<br />

char* aux= token;<br />

token=strtok(0,sep);<br />

return aux;<br />

}<br />

int hasNext () { // alta metoda<br />

return token !=NULL;<br />

}<br />

};<br />

In C++ metodele pot fi definite si <strong>în</strong> afara clasei, iar metodele mai lungi sau care<br />

contin cicluri ar trebui definite <strong>în</strong> afara clasei. In plus, definitia unei clase poate fi<br />

introdusã <strong>în</strong>tr-un fisier antet separat (.H), inclus <strong>în</strong> definitia unor clase derivate si<br />

aplicatiilor care folosesc obiecte de acest tip clasa. Exemplu:<br />

// vectori de intregi (fisier "IntArray.h")<br />

class IntArray {<br />

protected: // pentru a permite def. de clase derivate<br />

int * vec; // adresa vector<br />

int d,dmax,inc; // dimens. efectiva, maxima si increment<br />

public:<br />

IntArray (int max=10, int incr=10) ; // constructor<br />

~IntArray(); // destructor<br />

void add(int); // adaugare intreg la vector<br />

int size(); // dimensiune efectiva vector

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!