Sunteți pe pagina 1din 3

Lucrarea 9: Tipare în limbajul C++

Ce ne propunem astăzi

Azi vom învăța cum să folosim tiparele din limbajul C++. Tiparele sunt o
caracteristică a limbajului de programare C++ care permite scrierea de cod fără
a lua în considerare tipurile de date ce vor fi utilizate la apelarea funcțiilor sau a
claselor. Tipurile neprecizate sunt furnizate ca parametri la momentul utilizării.
Tiparele permit programarea generică în limbajul C++, reprezentând primul nivel
de reutilizare, după clase, acela corespunzând situaţiilor de refolosire de clase
pentru diverse tipuri de variabile.

Tiparele sunt foarte utile programatorilor în C++ în special dacă sunt folosite în combinație cu
moştenirea multiplă şi supraîncărcarea operatorilor.
Pentru a înțelege mai bine termenul de tipar vom lua un exemplu concret. Avem o funcție care calculează
și returnează înmulțirea a două numere întregi:
int produs(int nr1, int nr2)
{
int produs;
produs = nr1 * nr2;
return produs;
}

Dacă vrem să înmulțim două variabile de tip float sau double funcţia nu este bună deoarece rezultatul
nu va mai fi precis ci se vor rotunji valorile la conversia de tip, de la float la int sau de la double la int,
trunchiind zecimalele care asigură exactitatea numărului.
Pentru a rezolva această problemă se pot folosi funcţiile tipar, astfel funcţia anterioară o vom rescrie în
felul următor:
template <class T>
T produs(T nr1, T nr2)
{
T produs;
produs = nr1 * nr2;
return produs;
}
void main()
{
float a = 3.6, b = 2;
int x = 3, y = 9;
cout << "Produsul numerelor reale este: " << produs(a, b) << endl;
cout << "Produsul numerelor intregi este: " << produs(x, y) << endl;
}
La fel ca și funcțiile tipar se pot crea și clase tipar. La crearea clasei tipar se vor defini toate funcțiile
care vor fi în interiorul acelei clase iar tipul datelor va fi specificat ca și parametru în momentul creării
obiectelor clasei respective.
O clasă tipar este utilă în momentul în care aceasta folosește modele ce pot fi generalizate. De exemplu,
dacă avem o clasă cu algoritmi pentru prelucrarea unor elemente a unui vector vom putea generaliza
tipul datelor din vector, acestea putând fi întregi, reale, caractere, etc. Astfel în momentul creării
obiectului compilatorul va genera automat tipul de date corect pe baza tipului specificat la apelare.
Forma generală a unei declarări de clasă tipar este:
template <class tip> class nume_clasă
{
...
}
 tip este numele unui tip substituent care va fi specificat în momentul în care o clasă este
instanțiată
Dacă este nevoie se pot defini mai multe date generice utilizând o listă de date separate prin virgulă.
Pentru clasa generică se poate crea o instanță folosind următoarea formă generală:
nume_clasa <tip_date> obiect;
 tip_date este numele tipului de date cu care clasa va rula funcțiile incluse.
Mai multe detalii despre tipare pot fi găsite în referința [1] la pagina 281.

Partea practică. Mod de lucru


Iată pașii care trebuie urmați pentru dezvoltarea cu succes a programelor:
1. În Anexa 9 exemplul 1 este prezentată folosirea clasei tipar, sunt prezentate funcții de introducere
și afișare a elementelor unei matrici de elemente de diferite tipuri. Se va studia acest exemplu.
2. În Anexa 9 exemplul 2 este prezentată folosirea tiparelor într-un program rezolvat. Textul
problemei este următorul:
Să se realizeze un program care să asigure gestiunea unei biblioteci universitare cu cărţi în
diferite domenii (literatură, informatică, fizică, matematică, mecanică etc.). La fiecare carte se
cunoaşte: autor, titlu, cota, editura, anul_apariţiei, nr_ediţie, împrumutată (câmp care poate lua
următoarele valori: 0 dacă nu este împrumutată şi data până când este împrumutată).
La pornirea aplicaţiei va fi afişat următorul meniu:
1. Încărcare bibliotecă dintr-un fişier.
2. Creare domeniu nou.
3. Adăugare carte la un anumit domeniu.
4. Căutare carte în bibliotecă.
5. Ştergere carte din bibliotecă.
6. Salvare în fişier a bibliotecii.
7. Ieşire
Aplicaţia va fi implementată folosind clase tipar.
Structură fișier:

Se va studia acest exemplu.


3. După exemplul prezentat anterior să se realizeze programul următor:
Realizaţi un program care să gestioneze următoarele informaţii despre articolele dintr-un
magazin:
 Telefon Fix cu următoarele variable: Producător, Culoare, Dimensiune
 Telefon Mobil cu următoarele variabile: Producător, Culoare, Sistem operare.
Creaţi din informaţiile date o clasă de bază şi două clase derivate şi implementaţi următoarele
funcţii prin intermediul unui meniu interactive, cu liste simplu înlănţuite:
1. Adăugare telefon fix în spatele listei.
2. Adăugare telefon mobil în spatele listei.
3. Afişare telefoane.
4. Căutare telefoane mobile după “Sistem operare”.
5. Ieşire
Aplicaţia va fi implementată folosind clase tipar și fișiere.

Cu ce ne-am ales?
Prin programele prezentate ca exemple și problemele propuse de la partea
practică a laboratorului am reușit să ne familiarizăm cu tiparele în limbajul C++,
descoperind rolul acestora în programarea orientată pe obiecte. Utilizarea
tiparelor este un instrument puternic pentru a dezvolta programe ușor de adaptat
pentru situații diverse, punând la dispoziția noastră inclusiv colecții foarte utile
pentru creşterea productivităţii proiectării. Profesioniștii folosesc frecvent
tiparele!

S-ar putea să vă placă și