Sunteți pe pagina 1din 2

1

Academia Microsoft
itacad.ro

Oct 09

Laborator 9.2 Administrarea resurselor


Obiective
Dup completarea acestui laborator vei dobndi urmtoarele cunotine:

Crearea unui destructor


Realizarea cererilor ctre Garbage Collector
Utilizarea abloanelor de design pentru metoda Dispose()

Condiii prealabile
nainte de a realiza acest laborator trebuie s fii familiarizai cu urmtoarele concepte:

Crearea claselor i instanierea obiectelor


Definirea i apelarea metodelor
Definirea i utilizarea constructorilor
Utilizarea clasei StreamWriter pentru a scrie ntr-un fiier

Exerciiul 1 Utilizarea ablonului de design pentru Dispose()


n acest exerciiu vei aduga o metod Dispose() la clasa ContBancar. Metoda Dispose va itera
prin toate tranzaciile din coada de tranzacii i va salva logurile tranzaciilor ntr-un fiier.
Crearea metodei Dispose pentru clasa ContBancar

Deschidei proiectul de la exerciiul anterior.


Adugai modificatorul sealed la definirea clasei ContBancar i derivai din interfaa IDisposable. O
clas marcat ca sealed nu poate fi motenit. De data aceasta adugam acest modificator pentru a
realiza o implementare ct mai simpl a metodei Dispose.
Adugai un cmp privat de tip bool, numit disposed, iniializat cu false.
Adugai o metod public de tip void numit Dispose.
n metoda Dispose realizai urmtoarele operaii:

Verificai valoarea cmpului disposed. Dac este true, ieii din metod printr-o instruciune return;

Dac disposed este false vei declara o variabil StreamWriter care va deschide un fiier n modul Append
(adic va scrie datele la sfritul celor existente deja);
StreamWriter fout = File.AppendText(Tranzactii.txt);

Atenie! Fiierul Tranzactii.txt l vei crea dinainte n directorul Debug (/bin/debug) din proiectul vostru;

Academia Microsoft
itacad.ro

Oct 09

n fiierul Tranzacii.txt vei afia informaiile legate de cont utiliznd metoda Writeline (fout.Writeline()):
numarul de cont, soldul, tipul contului, coada de tranzacii.

Dup ce ai terminat scrierea nchidei fiierul (metoda close).

Setai disposed = true.

Apelai metoda GC.SuppressFinalize.

Adugai un destructor clasei.


Compilai i corectai eventualele erori.

Testarea Destructorului

n metoda Main() comentaii liniile de cod existente i adugai urmtoarele linii:


using (ContBancar cont = new ContBancar( ))
{
cont.Depozit(100);
cont.Retragere(50);
cont.Depozit (75);
cont.Retragere (50);
cont.Retragere (30);
cont.Depozit (40);
cont.Depozit (200);
cont.Retragere (250);
cont.Depozit (25);
ContBancar.Write(cont);
}

Salvai i compilai programul.


Deschidei fiierul Tranzactii.txt si verificai c informaiile au fost scrise.

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