Referat Tema: Clasele non-vizuale in Vizual Fox Pro
Elaborat :
Coordonator:
Clase vizuale i non-vizuale
Unul dintre cele mai bune instrumente din Visual FoxPro este Class Designer. El permite crearea claselor vizual, nu prin scrierea unor cantiti uriae de cod. Desigur, putei s nu folosii Class Designer. ntotdeauna putei defini clasele n cod; procednd astfel, avei cteva avantaje. Avantajele claselor non-vizuale S examinm avantajele claselor definite n cod surs. n primul rnd, par s fie puin mai rapide. Conform msurtorilor mele, clasele care sunt stocate n .PRG-uri se instaniaz cam de dou ori mai repede dect clasele stocate n biblioteci .VCX. Acest lucru variaz funcie de scenariul curent, dar se pare c clasele definite n cod surs sunt mult mai rapide, mai ales la prima instaniere. Dup prima instaniere a unei clase, FoxPro o scrie n memoria cache i viteza devine egal. Viteza de instaniere este diferit din cauza modului n care sunt stocate clasele. Fiierele .VCX sunt pur i simplu tabele .DVF cu extensie diferit. La instanierea unei clase, FoxPro scaneaz tabela, caut codul compilat care este stocat mpreun cu tabela i verific existena posibilelor clase printe. Dac este gsit vreo clas printe, trebuie analizat i ea. Clasele stocate n fiiere .PRG sunt doar un singur secven de cod compilat i Visual FoxPro nu trebuie s fac SEEK-uri pentru a determina clasele i informaiile referitoare la motenirea unor eventuale clase printe. Un alt factor care trebuie luat n considerare este dimensiunea fiierelor. Cu ct clasa este mai mare, cu att diferenele se estompeaz. Motivul este simplu: cu ct clasa este mai mare, cu att dureaz mai mult instanierea sa. Dac instanierea dureaz 50 de milisecunde, faptul c n cazul clasei stocat ntr-un .VCX cutarea a durat 3 milisecunde i n cazul clasei stocat n .PRG a durat numai 1 milisecund nu mai conteaz. Dar dac instanierea dureaz 1 milisecund, timpul suplimentar datorat cutrilor nseamn mult. Un alt aspect este dimensiunea. Bibliotecile de clase vizuale au tendina de a deveni uriae, pentru c ori de cte ori sunt modificate, FoxPro terge vechea versiune a clasei i o adaug din nou la sfritul fiierului. De asemenea, o tabel cu fiiere memo este ntotdeauna puin mai mare dect un fiier text. Clasele definite n cod surs, pe de alt parte, sunt extrem de compacte. Mai mult dect att, coruperea fiierelor este extrem de rar, dat fiind faptul c ele sunt simple fiiere text. Fiierele .VCX sunt mai fragile i par s fie mai predispuse la corupere. Avantajul final este uurina n redenumire a claselor, proprietilor i metodelor, i uurina n redenumire a structurilor de clase. Totodat, acest avantaj se poate transforma ntr-un dezavantaj deoarece redenumirea i redefinirea pot induce alte probleme. Dac folosii clasele non-vizuale, suntei pe cont propriu. Clasele non-vizuale pot fi o mare aglomerare de cod, fr nici o ordine. Proprietile i metodele sunt mprtiate n tot fiierul, posibil chiar n mai multe fiiere, i nu exist nici o metod de al vedea pe toate simultan. Din acest motiv este uor s uitai de ele, sau chiar s le redefinii accidental, deoarece nu exist nici un mecanism integrat care s v avertizeze asupra unor posibile probleme. Acest lucru este i mai periculos dac folosii evenimente predefinite. n fereastra de proprieti este suficient s alegei unul dintre evenimentele disponibile i s scriei codul n el. Dac folosii cod surs, nu mai este att de uor. Va trebui s inei minte numele evenimentelor fiecrei clase i de unde este derivat fiecare dintre ele. Altfel, va trebui s cutai aceste informaii, operaiune mare consumatoare de timp.
Unele clase sunt doar non-vizuale
Din pcate, nu toate clasele sunt disponibile n Class Designer. Unele dintre ele sunt Pages (nu PageFrames), GridColumns i Headers. Cu toate acestea, le putei subclasa n cod surs.Multe dintre clasele care nu pot fi modificate vizual sunt containere specializate care pot exista numai n anumite alte containere. Paginile, de exemplu, (clasa Pages) pot exista numai n PageFrames iColumns pot exista numai n clase Grid. n acelai timp, aproape orice tip de obiect poate fi membru al acestor clase. De obicei modificai clasele container n Class Designer i setai proprietile pentru a instaia obiectele membru specializate. n Grid, de exemplu, putei seta proprietatea ColumnCount i FoxPro va aduga coloane noi instantaneu. Cu toate acestea, coloanele nou adugate sunt din clasa de baz FoxProColumn i nu pot fi definite de programator. Dac dorii s adugai propria dvs. clas Column, va trebui s o definii n cod surs, s setai proprietatea ColumnCount la zero i s adugai coloanele n timpul execuiei programului, folosind metoda AddObject(). Coloanele trebuie s conin obiecte membru, i din acest motiv i obiectele membru trebuie instaniate sau definite n cod surs. Nu conteaz cum facei acest lucru, pentru c oricum vei pierde avantajele oferite de instrumentele vizuale de proiectare.
Crearea unui set propriu de clase de baz
Folosirea claselor de baz Visual FoxPro trebuie evitat cu orice pre. Ar trebui s subclasai fiecare clas de baz nainte de instaniere sau nainte de folosirea ei n Form Designer. Acest lucru mbuntete foarte mult flexibilitatea proiectului. ntotdeauna v putei ntoarce napoi, putei modifica cteva proprieti, putei modifica comportamentul sau putei aduga noi metode. Este foarte important s procedai astfel mai ales la nceputul lucrului cu Visual FoxPro, pentru c proiectul va fi mai uor de ntreinut -- ntotdeauna v putei ntoarce napoi i corecta erorile pe care le-ai fcut n cursul proiectrii. Crearea unui set propriu de clase ofer posibilitatea de a face modificri n ntreaga aplicaie n timpi de ordinul minutelor. Primul nivel al acestor subclase este referit de obicei ca propriul set de clase de baz. Dup ce l creai, practic putei s uitai de clasele de baz din Visual FoxPro. Din pcate, nu exist nici o metod s determinai Visual FoxPro s afieze aceste clase n locul celor implicite. Din acest motiv exist riscul s folosii din greeal setul intern de clase de baz, ceea ce ar putea duce la bug-uri greu de depistat. Din fericire, exist cteva instrumente care verific bibliotecile de clase i foreaz folosirea unei anumite clase de baz. Unul dintre aceste instrumente este PowerBrowser. El este livrat mpreun cu civa asisteni care pot seta tot felul de aspecte privitoare la clasele de baz. Acest instrument este freeware