This is an old revision of the document!


Laborator 03 - Notiuni avansate de C++

Obiective

În urma parcurgerii acestui laborator studentul va:

  • afla funcționalitățile claselor/funcțiilor prietene
  • realiza supraîncărcarea operatorilor din C++
  • înțelege conceptul de copy constructor
  • înțelege conceptul de rule of three
  1. [5p] Implementati clasa Fractie, cu următoarele particularități:
    1. [2p] doi constructori:
      1. primul vid
      2. al doilea va primi ca argumente numitorul și numărătorul
    2. Se vor implementa funcţii membre pentru:
      1. [0.5p] determinarea numitorului și numărătorului
      2. [1p] supraîncărcarea operatoriilor de comparație <, >, == (aveți grijă la egalitatea a două fracții)
      3. [0.5p] supraîncărcarea operatorilor +, -
      4. [bonus 1p] Supraîncărcați operatorii ++ și – unari astfel încât numărul rațional reprezentat să crească/scadă cu o unitate. Căutați să vedeți cum se face diferența între ++ prefixat și postfixat.
  2. [5p] Implementaţi clasa template Vector care să permită lucrul cu vectori de obiecte, cu următoarele particularități:
    1. Vor exista doi constructori:
      1. primul, vid, va inițializa numărul de elemente la 0 și pointerul de elemente la NULL
      2. al doilea va primi ca argument numărul de elemente și va aloca memorie pentru pointer
    2. [0.5p] Se va defini și un destructor, care va dezaloca memoria alocată dinamic
    3. Se vor implementa funcţii friend (nemembre) pentru:
      1. [1p] testul de egalitate a doi vector ( supraîncărcarea operatorului == )
      2. [0.5p] supraîncărcarea operatorului « (pentru scriere)
      3. [0.5p] supraîncărcarea operatorului » (pentru citire)
    4. Se vor implementa funcţii membre pentru:
      1. [1p] supraîncărcarea operatorului de atribuire între două obiecte de tip vector
      2. [0.5p] supraîncărcarea operatorului de indexare [] ce va permite accesul la elementele individuale prin indexare Operatorul de indexare este un operator binar, având ca prim termen obiectul care se indexează, iar ca al doilea termen indicele. (obiect[indice] este interpretat ca obiect.operator[](indice).

Tipul parametrului pentru copy-constructor trebuie să fie identic cu cel al parametrului pentru operatorul de assignment

  1. [4p] Implementaţi clasa template Set care să permită lucrul cu mulțimi de obiecte, cu următoarele particularități:
    1. Constructorul va primi dimensiunea maximă de elemente care pot fi ținute în mulțime și va aloca spațiul necesar.
    2. [0.5p] Se va defini și un destructor, care va dezaloca memoria alocată dinamic.
    3. Se vor implementa funcţii membre pentru:
      1. [1p] supraîncărcarea operatorului += pentru adăugarea unui nou element în mulțime (dacă elementul există deja în mulțime atunci nu va mai fi adăugat).
      2. [0.5p] supraîncărcarea operatorului -= pentru eliminarea unui element din mulțime.
    4. Se vor implementa funcţii friend (nemembre) pentru:
      1. [1p] testul de egalitate a două mulțimi ( supraîncărcarea operatorului == ): două mulțimi sunt egale daca conțin aceleași elemente.
      2. [0.5p] supraîncărcarea operatorului « (pentru scriere).
      3. [0.5p] supraîncărcarea operatorului » (pentru citire).
sd-ca/laboratoare/laborator-03.1456076224.txt.gz · Last modified: 2016/02/21 19:37 by radu.stochitoiu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0