12.07.2015 Views

Cursul POO - Informatica aplicata si programare - Universitatea ...

Cursul POO - Informatica aplicata si programare - Universitatea ...

Cursul POO - Informatica aplicata si programare - Universitatea ...

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

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

Curs 1-2. Să ne reamintim … 27Complex Adun(Complex n1, Complex n2){Complex n3;n3.Re=n1.Re+n2.Re;n3.Im=n1.Im+n2.Im;return n3;}…void main(){Complex nr1, nr2, nr3;…nr3=Adun(nr1,nr2);}O modalitate de implementare a problemei mai apropiată de spiritul C++, este de aredefini operatorii aritmetici, astfel încât, dacă operanzii sunt numere complexe, să sepoată scrie direct instrucŃiuni de forma nr3=nr1+nr2, nr3=nr1*nr2, etc. Pentruînceput, să declarăm clasa Complex (într-un nou proiect Win32 Console Application,numit Complex):class Complex{double Re, Im;public:Complex(double Real=0, double Imag=0){Re=Real;Im=Imag;};void afisez();Complex& operator + (Complex&);friend Complex& operator - (Complex&, Complex&);};Ce conŃine clasa? Am declarat pentru structura de date doi membri privaŃi, carevor implementa partea reală şi partea imaginară a numărului complex. Constructorulprimeşte două argumente de tip double, care au valorile implicite 0. De asemenea,clasa declară o funcŃie de afişare. Ca noutate, apare declararea operatorului + ca şifuncŃie membră a clasei şi respectiv a operatorului -, ca funcŃie prietenă. Deoarecerezultatul unei operaŃii între două numere complexe este tot un număr complex, ceidoi operatori redefiniŃi vor returna o referinŃă la clasa Complex. De fapt, operatoruleste interpretat ca o funcŃie, dar cu un rol special. Operatorul + în cazul nostru va fiinterpretat pentru secvenŃa c=a+b ca şi c=a.functia+(b), iar în cazul -, c=fuctia-(a,b).Să implementăm acum fişierul sursă:#include #include "Complex.h"Complex& Complex::operator +(Complex& operand){return *new Complex(this->Re+operand.Re, this->Im+operand.Im);}void Complex::afisez(){if (Im>0) cout

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

Saved successfully!

Ooh no, something went wrong!