|
parte dintre aceste tipuri de file,sunt mult mai complexe si necesita un
|
səhifə | 16/17 | tarix | 17.03.2018 | ölçüsü | 1,41 Mb. | | #45490 |
| parte dintre aceste tipuri de file,sunt mult mai complexe si necesita un
volum mare de informatie pentru generarea lor.Aceste file complexe sunt:
Table(.DBF),Database(.DBC),Form(.SCX),Label(.LBX),Menu(.MNX),Project(.PJX)
Report(.FRX) si Visual Class Library(.VCX).Pentru aceste tipuri de file,
informatiile pentru construtie se preiau din tabele de tip .dbf,in care
sunt arhivate toate datele necesare.Aceste tabele utilizate de catre
constructor sunt tabele obisnuite si pot fi consultate cu BROWSE.Fiecare
astfel de tabel,contine informatiile necesare pentru a genera un anumit
control.Pentru a crea o interfata grafica,se vor utiliza mai multe astfel
de tabele (cate unul pentru fiecare control inclus in interfata).Tabelele
sursa sunt incluse in directorul FILESPEC si sunt ordonate in doua pro-
iecte,denumite 50SPEC.PJX(surse pentru Visual Foxpro 5.0) si 26SEC.PJX
(surse pentru FoxPro 2.6).Mai mult,aceste doua proiecte contin si unele
rapoarte,cu datele gata extrase pentru fiecare tip de fila.Astfel,daca
doriti sa analizati sablonul unui anumit tip de fila,nu trebuie decat sa
imprimati raportul respectiv.
EXEMPLU: deschideti cu OPEN fila 50spec.pjx din Filespec
Pentru a vedea tabelul sursa utilizat pentru crearea unei ferestre,
deschideti din Data directorul Free Tables,apoi 50scx si alegeti tabelul
"form",apoi apasati butonul BROWSE.
Pentru a analiza raportul tabelului sursa,deschideti din Documents
directorul Reports,apoi 50scx1 si apasati butonul Preview.
Tabelele contin cate un camp Memo pentru fiecare tip de data generata.
-105-
Nu este indicat sa modificati aceste tabele sursa,deoarece riscati sa
deranjati functionalitatea intregului program.Fiecare camp de date din
tabele,va fi utilizat pentru a genera o anumita caracteristica a obiectu-
lui final.
Pentru fiecare fila generata de utilizator,se va adauga si o fila
auxiliara,de tip Memo in care sunt inregistrate toate elementele particu-
lare ale obiectului respectiv.De exemplu o fila de tip DataBase va avea
asociata o fila de tip Database memo (.DTC),iar o fila de tip Form(.SCX)
va avea asociata si o fila de tip Form Memo (.SCT).
Este util sa intelegeti structura acestor file,atat pentru a putea
intelege modul in care opereaza mediul FoxPro,cat si pentru a putea stu-
dia structura controalelor utilizate.In etapa de conceptie si design,
puteti utiliza filele si tabelele de structura pentru a analiza volumul
de memorie preconizat si/sau eventuala compatibilitate cu alte aplicatii
sau structuri asemanatoare (eventual cu conversiile de rigoare).
Mai mult decat atat,puteti prelua modelul de lucru si pentru aplica-
tiile generate de d-voastra.In situatiile in care trebuie sa generati in
timpul executiei obiecte complete,puteti utiliza tabele sursa,in care
sa arhivati toate informatiile necesare pentru fiecare tip de obiect.Un
exemplu tipic il reprezinta jocurile grafice,in care obiectul generat la
un anumit nivel,depinde de evolutia de pana in momentul respectiv.Acest
mecanism,se poate utiliza si pentru aplicatiile economice,atunci cand se
creaza obiecte,sau se extrag rapoarte si selectii,din baze de date ce se
actualizeaza permanent.
Fisierele din mediul Visual Foxpro sunt fisiere obisnuite de tip Win-
dows.O parte dintre aceste fisiere pot fi generate si automat de catre
wizard-ul respectiv,dar restul trebuie sa fie create de catre utilizator.
Este foarte important cum gestionati fisierele din mediul Visual FoxPro.
Prea putine fisiere,vor genera o aglomerare incomprehensibila de file
foarte asemanatoare,in care munca de intretinere si depanare a programelor
si aplicatiilor va fi extrem de dificila.Prea multe fisiere,din dorinta
de a compartimenta totul in module,va determina o fragmentare excesiva a
spatiului de memorie si va crea nenumarate probleme generate de calea de
acces la o anumita fila (daca fila este inclusa intr-un director si nu
specificati numele directorului in calea de acces,Visual FoxPro va returna
un mesaj de eroare: Fila nu exista ! ).
Solutia este ca intotdeauna cea de mijloc.Este bine sa compartimentati
toate filele unui program sau ale unei aplicatii,in acelasi director.Daca
programul interactioneaza frecvent cu un alt program,pentru a solicita
date partajate,este util uneori sa acumulati ambele aplicatii intr-un
director comun.
Fisierele,la fel ca si filele,pot fi generate si automat.Exista si o
functie care va garanteaza ca vor avea un identificator (nume) unic.Are
rost sa utilizati astfel de fisiere generate automat,doar pentru a ordona
si arhiva file de stocare a informatiilor generate tot automat,mai ales
atunci cand continutul acestor file va fi consultat rar sau foarte rar.
Pentru fisierele cu care se lucreaza permanent,este bine sa va osteniti sa
alegeti un nume cat mai sugestiv si sa selectati cu foarte mare atentie
fiecare informatie arhivata in aceste fisiere (deoarece vor fi procesate
si incarcate in memorie de fiecare data cand utilizati fisierul).Nu exista
nici o regula fixa,dar e bine sa respectati si conventiile pentru nume.
-106- ASISTENTA HELP
Calitatea unui program,sau a unei aplicatii,depinde in mare masura si
de calitatea programelor de asistenta.Programele de tip "Help" nu sunt
destinate "incepatorilor",ci au rolul de a elucida sau simplifica orice
problema intalnita de utilizator.Memoria umana,nu este la fel ca si cea
a masinii.Din acest motiv,este important sa poata beneficia de un instru-
ment cu care sa verifice sau sa elucideze o anumita situatie.Programul
Help,trebuie sa fie astfel conceput incat sa contina absolut toate infor-
matiile necesare despre program,intr-un format cat mai accesibil.Pentru
programele mici,de cele mai multe ori este suficienta o fila de explicatii
de gen "Read me".Pentru programele mari si pentru mediile de operare mai
complexe,este necesar de obicei un program mult mai complex,sub forma de
manual,ce poate fi consultat rapid pentru orice problema specifica.
Programul Visual Foxpro,contine un astfel de manual,bine documentat si
foarte usor de utilizat.In orice moment,puteti apasa tasta F1,sau puteti
alege din meniul Help,optiunea "Microsoft Visual Foxpro Topics".
Programatic,se poate apela acest program cu ajutorul comenzii HELP.
Daca doriti sa deschideti manualul pentru o anumita informatie,se poate
utiliza comanda SET TOPIC TO.
EXEMPLU: daca doriti sa includeti un buton Help,intr-o aplicatie:
Deschideti un nou proiect si o noua fereastra,In fereastra Form Desig-
ner adaugati un obiect de tip Edit Box si un buton de comenzi.Setati
pentru buton proprietatea Caption = Help,apoi alegeti dintre metode
Click Event si editati urmatoarea procedura:
text1 = ThisForm.Edit1.Text
SET TOPIC TO text1
HELP
Inchideti fereastra si verificati cu Run Form.In timpul executiei,pentru
a deschide programul Help,nu trebuie decat sa editati cuvantul cautat in
caseta de editare si apoi sa apasati butonul Help.
Pentru orice program sau aplicatie,in care utilizatorul trebuie sa
introduca in timpul executiei comenzi,sau sa formuleze expresii de tip
Visual FoxPro,puteti sa adaugati si un astfel de buton,care sa asigure un
acces rapid la utilitarul Help si in timpul executiei programului.
Pentru programele si aplicatiile realizate de d-voastra,probabil ca
doriti sa realizati un astfel de program de asistenta tehnica,cat mai usor
de realizat si aplicat.Exista doua solutii simple.Fie construiti un pro-
iect special conceput pentru acest scop,fie utilizati un program speciali-
zat (cum este Hcw din directorul Helpcomp).
Tipul de solutie se va putea alege in functie de volumul de informatii
pe care doriti sa-l oferiti.Pentru un volum limitat de informatii,cu un
numar relativ mic de critarii de selectare (cateva sute),cea mai simpla
modalitate este sa arhivati datele intr-un tabel de tip .dbf si apoi sa
realizati o interfata simpla pentru accesarea acestor date.
EXEMPLU: creati un director nou (Ajutor1),apoi construiti tabelul astfel:
din File,alegeti New,apoi Table si New File.Salvati tabelul(Ajt1.dbf)
in directorul nou creat,apoi utilizati fereastra Table Designer pentru a
proiecta tabelul.Cel mai simplu este sa utilizati doar doua campuri de
date: CRITERIU -de tip caracter cu o lungime de 20-30 de caractere si
EXPLICATIE de tip Memo.Confirmati cu OK si apoi introduceti cateva date.
Pentru fiecare criteriu,introduceti in campul Memo explicatia necesara.
-107-
Pentru a realiza interfata grafica,deschideti un nou proiect ( tot in
directorul nou creat),apoi alegeti Forms si New.In fereastra Form designer
adaugati un control de tip ListBox si unul de tip TextBox.Apoi utilizati
instrumentul builder,pentru a conecta obiectul List1 la campul de date
CRITERIU din tabelul Ajt1.dbf.
Pentru a sincroniza cele doua controale,selectati obiectul List1,apoi
deschideti fereastra Properties,alegeti din Methods evenimentul Click
Event si editati urmatoarea procedura:
LOCATE FOR Ajt1.Criteriu = ThisForm.List1.Value
ThisForm.Text1.Value = Ajt1.Explicatie
Inchideti fereastra designer si apoi construiti proiectul cu Build(alegeti
optiunea "Build Executable") si verificati aplicatia.
In mod normal,se va deschiode automat fereastra programata,in care nu
trebuie dacat sa selectati un camp din caseta ListBox,pentru a afisa in
obiectul TextBox explicatia corespunzatoare.
Acest gen de solutie,ofera un minimum de informatii,cu consum minim de
memorie,este extrem de usor de realizat si intretinut.Daca doriti sa adau-
gati informatii suplimentare,nu trebuie decat sa adaugati inregistrari noi
in tabelul sursa.Cu cat programul Help pe care doriti sa-l dezvoltati este
mai complex,cu atat puteti dezvolta aplicatia.Tabelul sursa poate contine
un numar mai mare de campuri de date.Puteti adauga selectii si rapoarte,
filtre si expresii de evaluare,butoane de comanada care sa efectueze un
set intreg de operatii,butoane de navigare si control,programe auxiliare
pentru actualizarea datelor,conexiune pentru prezentarea datelor in retea
etc.
Cea de a doua solutie foarte simpla,este sa utilizati un prgram specia-
lizat pentru generarea aplicatiilor de tip Help.Un astfel de program este
inclus in mediul Visual FoxPro,in directorul Helpcomp,cu numele de HCW.
Programul contine un manual complet de utilizare si un tutorial,astfel
incat este foarte usor de exploatat.Acest program genereaza manuale Help
standardizate,asemanatoare cu cel utilizat si de Visual FoxPro.Datele si
informatiile nu sunt arhivate intr-un tabel de tip .dbf,ci sunt arhivate
in file izolate,de tip .rtf (Rich Text Format).Ca rezultat,datele vor
putea fi prezentate mult mai elegant,cu titluri si sublinieri,cu fonturi
si culori diferite,etc...,dar vor ocupa un volum mult mai mare de memorie
si nu vor putea fi exploatate in alte aplicatii.In plus,filele de tip
.rtf nu pot fi editate decat cu programe specializate.Acest program este
insa extrem de usor de aplicat si intretinut,si asigura o forma eleganta
de prezentare a datelor (are aspect comercial).
EXEMPLU : lansati programul cu Hcw.exe (din Windows)
apoi,din meniul File (al ferestrei Microsoft Help Workshop),alegeti
New si selectati optiunea Help Project.Alegeti un nume oarecare si direc-
torul in care doriti sa instalati proiectul.
Se va deschide o interfata grafica cu butoane,in care puteti adauga
filele sursa,eventualele imagini de tip .BMP sau ferestrele utilizate
pentru prezentare.Apasati butonul Files,apoi Add si adaugati filele sursa
dorite (De exemplu din Samples/Tastrade/Help alegeti fila Ttrade.rtf ).
Apoi confirmati cu OK.Pentru a finaliza proiectul,apasati butonul Save
and Compile.Se va afisa rezultatul compilarii.Pentru a verifica programul
deschideti din Windows directorul si executati fila (are un icon sub sub
forma de carte cu un semn de intrebare).
-108- DEPANARE SI INTRETINERE
Realizarea unui program informatic cuprinde o serie intrega de etape
succesive,pornind de la conceptia de ansamblu si organizarea principale-
lor module si structuri si terminand cu etapa de editare a fiecarei file
din program.Pentru programele mari,se utilizeaza diagrame de lucru si
grafice de etapa.Modulele pot fi realizate de programatori diferiti(uneori
sute sau chiar mii) si trebuie sa poata fi integrate dupa un sistem de
organizare integrat,standardizat.In fiecare dintre aceste etape,se pot
strecura erori mai mici sau mai mari,unele dintre ele extrem de greu de
identificat si corectat.
Cele mai frecvente erori de programare sunt:
1.erori depistate in etapa de compilare
2.erori depistate doar in timpul executiei
3.erori logice - intervin doar in anumite situatii
4.erori de conceptie si structurare
5.exceptii si incompatibilitati hardware/software
6.erori de portabilitate pe alte platforme
7.erori accidentale
1.Erorile depistate in etapa de compilare pot fi erori de ortografie sau
erori de sintaxa.Nu toate erorile de ortografie pot fi depistate astfel,
ci doar cele care afecteaza cuvintele cheie.In functie de versiunea de
program,compilatorul analizeaza fiecare linie de cod,prin comparatie cu
un set de sabloane,in care sunt fixate o serie de conventii de limbaj (
cum se formeaza identificatorii,sintaxa corecta a fiecarei functii,modul
de declarare si setare a variabilelor de memorie etc.).Nu exista o regula
fixa pentru conceptia programului compilator,motiv pentru care pot exista
diferente foarte mari de la un compilator la altul,dar in esenta,toate
compilatoarele executa acelasi set de operatii de control.Erorile posibile
pot fi impartite in mai multe categorii : -erori vitale,erori majore si
erori neglijabile.Erorile vitale nu pot fi ignorate si impiedeca executia
programului.Restul erorilor pot fi ignorate in anumite situatii,dar numai
cu acordul programatorului sau al utilizatorului avizat.Pentru fiecare
astfel de eroare,compilatorul returneaza un mesaj de eroare.Aceste mesaje
de eroare sunt structurate in programul Help,atat alfabetic cat si in
functie de codul numeric sau parametrul returnat.In general sunt usor de
depistat si corectat si nu necesita alte instrumente specializate.
2.Erorile depistate doar in momentul executiei,sunt generate de liniile
de cod in care fiecare cuvant este formulat si editat corect,dar interpre-
tarea de ansamblu genereaza un rezultat fals sau incorect.Acest gen de
erori este mai dificil de corectat,mai ales atunci cand eroarea nu se
exprima decat in anumite circumstante.Pentru depistarea si corectarea
acestor erori,sunt necesare programe specializate.Visual FoxPro pune la
dispozitie un set intreg de astfel de instrumente,grupate in fereastra
Debugger si in wizard-ul Documenting Wizard.In esenta,pentru acest gen
de depanare,se fragmenteaza executia in module din ce in ce mai mici,pana
cand se identifica eroarea,apoi se executa modulul respectiv linie cu
linie,pana cand se identifica si cauza propriu zisa.De cele mai multe ori,
este o eroare determinata de alegerea unui format gresit pentru date,sau
de formularea gresita a unor expresii (Exemplu: se utilizeaza prea putine
zecimale si la calcule cu valori foarte mari,aproximarile nu se mai inca-
dreaza in marja de eroare).
-109-
O astfel de eroare extrem de frecventa,este determinata prin returnarea
unor valori situate in afara domeniului de definite.Exemplu: se utilizeaza
un format numeric restrans si o expresie matematica perfect corecta,dar
care,la valori extreme returneaza rezultate situate in afara domeniului de
reprezentare.
Pentru modulele mici de program,fereastra Debugger,prin ferestrele sale
specializate: Trace,Watch,Locals,Call stack si Output,ofera suficiente
informatii pentru a putea identifica si corecta o astfel de eroare.Pentru
acest scop,trebuie ca programul sa fie executat pentru toate circumstan-
tele posibile,iar calculele si operatiile sa se execute si pentru valorile
extreme.De multe ori,se apeleaza la persoane specializate in "testarea
programelor".Un exemplu tipic il reprezinta persoanele angajate pentru
testarea jocurilor grafice si pentru identificarea eventualelor limite
sau situatii extreme,denumite generic "bugg-uri".
Nu toate erorile posibile pot fi depistate astfel.Unele programe vor
necesita verificarea cu programe specializate de verificare si control.
De exemplu,pentru aplicatiile economice,in care fiecare calcul inseamna
bani,se vor proiecta si utiliza programe care verifica fiecare expresie
de calcul,pentru toate valorile posibile din doemniul de reprezentare si
apoi confrunta rezultatele cu unul sau mai multe programe similare.
Alte programe specializate vor verifica modul in care aplicatia gestio-
neaza spatiul de memorie,viteza de executie per operatie,volumul de memo-
rie de operare consumat per operatie,etc.Ca rezultat,intre doua programe
perfect functionale si corecte,pot exista diferente destul de mari in
ceea ce priveste siguranta si operatibilitatea.Fiecare firma specializata
genereaza un set de astfel de programe de verificare si control.Daca
doriti,puteti sa proiectati si realizati astfel de programe,cu care sa
verificati aplicatiile pe care le realizati.Un astfel de program,poate
pune in evidenta "mici defecte" ce nu pot fi sesizate altfel.
3.Erorile logice nu se refera la o eroare de logica in conceptia pro-
gramului,ci sunt erori generate de functiile care opereaza cu date de tip
logic.Valorile logice posibile sunt TRUE,FALSE si NULL.O eroare foarte
frecventa este atunci cand se precizeaza conditiile logice pentru o anu-
mita secventa de operatii.In majoritatea situatiilor se vor rezolva doar
cele doua situatii logice TRUE sau FALSE si se va omite rezolvarea condi-
tiei posibile NULL.Ca rezultat,atunci cand functia logica respectiva va
returna o valoare de tip NULL,programul nu va gasi nici o solutie de con-
tinuitate si va returna un mesaj de eroare.Un exemplu tipic il reprezinta
functiile logice pentru datele preluate din tabelele de tip .dbf.Atat timp
cat cursorul se gaseste in interiorul tabelului,functiile vor returna o
valoare de tip TRUE sau FASE.Daca dintr-un motiv sau altul,se executa o
comanda NEXT sau SKIP,dupa ultima inregistrare din tabel,cursorul se va
deplasa in afara tabelului si va returna o valoare de tip NULL.Din acest
motiv,atunci cand se utilizeaza functii logice trebuie solutionata si
conditia NULL,chiar daca in aparenta aceasta situatie nu va intervenii
niciodata.Lucrurile sunt mult mai complicate atunci cand se utilizeaza
suite de functii logice,in care conditia returnata de o astfel de functie
declanseaza un alt set de conditii logice.Acest gen de situatie este
extrem de greu de depanat si necesita constructia unor grile de verificare
binara sau ternara a tuturor situatiilor posibile (se dezvolta arbori bi-
nari sau ternari- sau se verifica cu programe specializate ).
-110-
4.Erorile de conceptie si structurare - nu pot fi verificate si sau
depanate de nici un program automat.Este necesara o analiza atenta,atat
a fiecarui modul,cat si a modului in care sunt interconectate doua sau
mai mlute astfel de module.In etapa de proiectare,se realizeaza la inceput
o diagrama a principalelor module si a conexiunilor necesare,apoi se trece
la realizarea fiecarui modul.In etapa de depanare,se procedeaza exact
invers.Se verifica la inceput fiecare modul,apoi se verifica fiecare co-
nexiune,si doar la final se verifica functionalitatea de ansamblu.
Erorile de conceptie nu pot fi corectate.Eventual,se poate inlocui un
modul cu un alt modul similar,sau se pot adauga module de conversie si/sau
corectie,care sa anuleze defectele modulului conceput gresit.
Una dintre cele mai frecvente erori de conceptie se datoreaza lipsei
de analiza in perspectiva a unei anumite aplicatii.Exemplu: nu se apre-
ciaza corect spatiul de memorie necesar pentru dezvoltarea unei aplicatii
timp de mai multi ani,Ca rezultat,dupa un timp oarecare,programul va fi
autolimitat din lipsa de spatiu de memorie (tampoane prea mici).
De cele mai multe ori,tentativa de a corecta o astfel de eroare este
mult mai dificila decat realizarea unui program nou.O situatie mai spe-
ciala,este atunci cand programul este perfect functional,dar necesita
unele restructurari,fie pentru a fi compatibil cu un alt sistem de ope-
rare,fie pentru a putea schima date cu o alta platforma similara.In aceste
situatii,se recomanda adaugarea unui modul specializat (sau o fila .DLL).
5.Exceptiile si incompatibilitatile hardware/software nu sunt determi-
nate de program ci sunt generate de aparatura de calcul pe care este exe-
cutat programul.In etapa actuala,standardele de constructie sunt unificate
global,iar majoritatea programelor si aplicatiilor sunt portabile pe orice
tip de calculator.Totusi,exista o varietate extrem de mare de posibilitati
de extindere sau restructurare a memoriei de operare.Fiecare tip de pro-
cesor are unul sau mai multe tampoane interne de memorie,si un set oare-
care de conexiuni cu modulele de tip DIMM,SIM,CACHE etc.Uneori,programa-
torii profesionisti utilizeaza astfel de extensii de memorie pentru a
creste la maximum functionalitatea,dar uita sa specifice configuratia
hardware in care a fost realizat un anumit program.Este recomandabil ca
atunci cand realizati programe de uz comercial,sa utilizati o configuratie
standard medie,fara sa apelati la extensii sau "upgrade-uri".Daca volumul
de operatii executate pe unitatea de timp necesita o anumita configuratie
hardware,acest fapt trebuie specificat in manualul de asistenta tehnica.
Regula "de aur" este urmatoarea: -un program este cu atat mai bun cu cat
este mai simplu,ocupa mai putin spatiu,este mai rapid si are pretentii cat
mai mici in ceea ce priveste configuratia "hardware".
Solutiile pentru acest gen de situatii sunt de obiecei dificile sau
extrem de dificile.In unele situatii,absenta unui anumit tip de modul de
memorie poate fi suplinita artificial.Pentru acest scop se creaza in
memoria inscriptibila un tampon de memorie,ce va putea fi scris si citit
la fel ca memoria de operare.Acest gen de solutie nu se recomanda insa,
deoarece rescrierea repetata a tamponului de memorie va duce in timp la
uzura fizica sau chiar la coruperea datelor.O alta solutie este apelul la
un alt calculator interconectat,sau conectat in retea,care va prelua la
nevoie (temporar) functiile respective.
Exista programe specializate,care "dez-asambleaza" fiecare operatie si
apoi afiseaza "harta interna de procesor" (in binar sau assembler).
-111-
6.Erorile de portabilitate pot fi intotdeauna corectate,dar necesita
cunostiinte avansate de programare si acces la toate structurile progra-
mului respectiv.Acest gen de operatii nu se executa decat de catre firma
producatoare,prin conventie cu restul partenerilor si beneficiarilor.
7.Erorile accidentale,intervin datorita unor situatii si/sau conditii
independente de program,sau de masina pe care se executa.Exemple: o pana
de curent,suprascrierea accidentala a unui segment de memorie sau a unui
modul de progam,infectarea cu un "virus informatic" din retea,erori induse
de un utilizator neavizat,defecte mecanice ale unitatii de lucru,etc.
Pentru toate aceste situatii,este recomandabil sa existe in permanenta o
copie de siguranta a programului si a principalelor arhive de date,astfel
incat programul sa poata fi refacut complet,chiar si in cazul unei supra-
scrieri accidentale.Programele "anti-virus" nu sunt o solutie radicala.Un
astfel de program nu poate preveni "atacul" cu un virus necunoscut,dar
poate identifica si stopa "atacul" datelor prin virusii identificati ante-
rior.Unele defecte de memorie (sectoare defecte) pot sa apara si prin
uzura fizica (suprascrieri repetate ale memoriei inscriptibile).
In concluzie,procesul de verificare si control,sau cel de depanare a
programelor si aplicatiilor este destul de complex si nu se refera doar
la identificarea eventualelor erori.Fiecare analist programator are o
serie de obiceiuri si tabieturi,generate de experienta anterioara.Sunt
extrem de utile programele de analiza automata,dar aceste programe nu pot
suplini munca analistului.In general,fiecare tip de aplicatie si fiecare
limbaj de programare necesita o pregatire speciala si un set specific de
programe de analiza.Nu este recomandabil sa acumulati mai multe notiuni,
decat sunt strict necesare pentru aplicatiile cu care lucrati in mod
curent.In particular,mediul Visual Foxpro,se distinge prin capacitatea
de a lucra cu tabele si cu baze de date.Munca de intretinere a programelor
generate cu Visual FoxPro se rezuma de obicei la verificarea periodica si
intretinerea tabeleor si a bazelor de date.Prin operatii repetate asupra
lor,tabelele pot contine inregistrari nule sau incomplete,inregistrari
"orfane" generate de modificarea tebelei de integritate,sau poat fi
blocate de un utilizator care "a uitat" sa deblocheze tabelul dupa ce a
fost deschis EXCLUSIV.
Pentru verificarea si intretinerea tabelelor,este bine sa utilizati
programe de verificare automata.Aceste programe,nu sunt decat niste pro-
grame simple si efectueaza asupra tabelului toate operatiile posibile
de sortare si ordonare sau filtrare.Daca un tabel contine mai multe
"chei de indexare",programul de control va contine si toate filele de
indexare necesare.Este bine sa pastrati intotdeauna si o copie de sigu-
ranta a filelor de indexare,pentru a putea reveni oricand la o solutie
anterioara de sortare a datelor (filele de indexare se corup frecvent).
Alte programe automate pot efectua actualizarea automata a tabelelor,sau
pot copia tabelele pentru a forma "copia de siguranta".
In general nu este bine sa restructurati permanet un tabel.Daca este
strict necesar sa adaugati coloane noi,este mai bine sa creati un tabel
nou si apoi sa copiati datele din primul tabel.Daca creati un tabel mai
mic,pastrati si tabelul original (datele eliminate nu mai pot fi recupe-
rate ulterior).Rescrierea repetata a unei file poate genera erori.Pastrati
copia de siguranta pe un alt calculator (sau pe un disc optic).
-112- INTERNET
Visual FoxPro,ofera o gama destul de larga de posibilitati pentru uti-
lizarea partajata a datelor,fie in retele locale,fie prin reteaua Inter-
net.Daca sunteti incepatori,este indicat sa apelati la persoane abilitate,
sau sa urmati un curs de specializare pentru munca in retea.
Orice eroare in retea,poate afecta munca unui numar variabil de uti-
lizatori,sau se poate multiplica exponential.Din acest motiv,toate bazele
de date accesibile prin retea,sunt sub supravegherea continua a unui admi-
nistrator de retea.Pentru orice probleme specifice,contactati administra-
torul de retea (cel care va asigura conexiunea la Internet).
Cea mai simpla operatiune,este sa cautati asistenta tehnica,sau sa
verificati articolele de specialitate,variantele de "upgrade",programele
si componentele din oferte,etc.Pentru acest scop,puteti utiliza din meniul
Help,optiunea "Microsoft on the Web",cu una dintre variantele sale: Free
Stuff,Product News,Frequently asked Questions,Online Support,For Develo-
pers Only Home Page,Send Feedback,Best of the Web,Search the Web,Web Tuto-
rial sau Microsoft Home Page.
O alta operatiune extrem de simpla,este sa utilizati wizard-ul denumit
"WWW Search Page Wizard" pentru a genera o fila de tip HTML care poate
prelua date dintr-un tabel de tip .dbf.Cu acest gen de fila puteti veri-
fica periodic o anumita data,sau chiar un grup de date.
O operatiune putin mai complexa,este sa utilizati o baza de date,sau
chiar un grup de baze de date,in sistem partajat.Pentru acest scop,bazele
de date trebuie sa fie instalate in server,trebuie sa posedati o conexiune
valabila la retea si un program de acces.Operatiile asupra tabelelor si
bazelor de date din retea sunt similare cu cele asupra bazelor de date
locale,cu cateva diferente.Operatiile care modifica sau altereaza perma-
nent tabelul sau baza de date (cum sunt :INSERT,INSERT BLANK,MODIFY STRUC-
TURE,PACK,REINDEX si ZAP) nu se pot executa decat dupa ce a fost setata
proprietatea SET EXCLUSIVE ON.Un astfel de tabel,care a fsot deschis
exclusiv,va fi blocat pentru toti ceilalti utilizatori.In plus,orice
operatie de acest gen,poate deranja semnificativ aplicatiile altor utili-
zatori din retea,care au conexiuni cu tabelul respectiv.Pentru acest gen
de operatii,se recomanda utilizarea unor programe automate,care deschid,
efectueaza toate actualizarile si apoi inchid baza de date intr-o frac-
tiune de secunda si apoi trimit un mesaj de avertizare la toti utilizatori
conectati,prin care semnalizeaza operatiile efectuate.Acest gen de ope-
ratii nu se pot invata in timp real,in retea,decat daca va conectati la
un site specializat.Pentru a studia si verifica aplicatii de acest gen,
se recomanda sa utilizati o retea locala,cu 4-10 terminale.
Versiunea Visual Foxpro 5 nu este foarte generoasa cu obiectele desti-
nate pentru munca in retea.Incepand cu versiunea Visual FoxPro 6,se adauga
un set complet de componente noi,pentru ca versiunile urmatoare sa adauge
si interoperabilitatea cu platforma Java si cu orice aplicatie de tip Web.
Exista obiecte specializate,care pot transforma orice tabel,sau orice fila
de tip VisualFox in fila de tip HTML,sau in aplicatie Web.Pentru orice
informatii suplimentare,consultati administratorul de retea.
Nu este necesar sa proiectati aplicatii speciale,doar pentru retea.Cu
putina munca,orice aplicatie locala poate fi conectata la retea.Daca este
absolut necesar sa creati aplicatii Web,atunci utilizati o versiune cat
mai recenta (Visual FoxPro 9) si obiectele specializate.
-113- CONCLUZII GENERALE
Visual FoxPro este un mediu de programare complex.Combina programarea
orientata spre obiecte cu structuri de arhivare si prezentare a datelor
sub forma de baze de date si tabele relationale.Pentru comunicarea dintre
diferitele componente si module,se pot utiliza atat mesajele de tip Win-
dows cat si evenimentele FoxPro,metodele si evenimentele fiecarui obiect,
sau proceduri si bucle de repetitie special concepute pentru acest scop.
Prin compartimentarea programelor in obiecte vizuale,se asigura atat
o viteza mai mare de procesare (se lucreaza cu volume de memorie mai mici
per unitatea de timp) cat si o flexibilitate mai mare in etapele de veri-
ficare si control sau in cele de intretinere a aplicatiilor.Fiecare obiect
vizual este echivalentul unui mic program independent,ce contine un set de
variabile de un anumit fel,functii si proceduri,evenimente sau structuri
temporale pentru organizarea si ierarhizarea operatiilor.In momentul exe-
cutiei,fiecare obiect ocupa un tampon separat de memorie.Ca rezultat,o
eventuala defectiune a unuia dintre obiecte,nu va afecta intregul program,
ci doar obiectul respectiv (depanarea va fi mult mai usoara).
Obiectele de tip vizual se pot combina intre ele,pentru a forma o
interfata grafica intre utilizator si program.Cu ajutorul acestei inter-
fete,utilizatorul va putea folosi un program oarecare,chiar daca nu are
notiuni elementare de programare.Pentru a reglementa schimbul de date
dintre utilizator si calculator se pot utiliza butoane de comanda,casete
de dialog,tabele relationale si foi pentru calcul tabelar,rapoarte si
selectii de date,analize grafice sau reprezentari binare,etc.
Interfata grafica nu este obligatorie.Se pot realiza programe/aplicatii
clasice,cu file de tip program,sau se pot introduce comenzile direct in
fereastra de comenzi.Combinatiile de procedee tehnice,asigura o varietate
de mijloace de exprimare ce poate satisface pretentiile oricarui progra-
mator.In plus,mediul Visual FoxPro accepta si coduri scrise in C++ sau
Assembler precum si obiecte de tip ActiveX,editate in oricare dintre pro-
gramele compatibile cu sistemul de operare.
Pentru construirea obiectelor,se utilizeaza sabloane specializate denu-
mite clase.Exista un grup de astfel de clase,ce formeaza nucleul standard,
la care se pot adauga orice alte clase specializate,definite de d-voastra
sau achizitionate din diferite surse.Obiectele sunt instante ale acestor
clase si respecta proprietatile de baza ale oricarui obiect:
1.au un anumit domeniu de vizibilitate (incapsulare)
2.mostenesc proprietatile si metodele ancestorilor (mostenire)
3.accepta netode si evenimente diferite pentru acelasi identificator,
atunci cand sunt mostenite de la ancestori diferiti.Pentru a apela o
astfel de metoda,trebuie specificat si numele clasei de baza (polimorfism)
Pentru construirea unui obiect din clasa de baza,in mod normal se apeleaza
functia constructor.In Visual FoxPro,exista o serie de mijloace tehnice
prin care aceasta operatie se realizeaza automat.Astfel obiectele se pot
crea utilizand un instrument de constructie denumit Builder sau Wizard,
sau utilizand butoane specializate.Pentru fiecare obiect standard exista
si un buton dedicat pentru constructia obiectului.Altfel spus,Visual Fox-
Pro utilizeaza o interfata grafica,pentru a putea proiecta si programa o
alta interfata grafica.Prin acest mecanism,obiectele vizuale se pot uti-
liza "in cascada".Ca rezultat,se poate crea un program destul de complex,
doar cu cateva click-uri de mouse.
-114-
Obiectele create cu instrumente automate nu sunt complete.Contin un
set intreg de proprietati,metode si evenimente,dar majoritatea lor nu
sunt definite si prin urmare nu pot fi apelate direct.Pentru ca un astfel
de obiect sa fie functional,este necesar sa editati codurile necesare
pentru fiecare metoda apelata si sa setati valorile actuale ale proprie-
tatilor ce urmeaza sa fie apelate in program.Obiectele contin si un numar
foarte mare de proprietati si metode ce nu vor fi apelate in program si
nu este necesar sa fie setate sau redefinite.Prezenta acestor proprietati
si metode nu afecteaza cu nimic memoria consumata in timpul executiei
(decat daca sunt redefinite).Aceste proprietati si metode,vor ramane in
rezerva,pentru a putea adauga in viitor noi functionalitati.
Pentru a edita metodele si evenimentele obiectelor,este necesara o buna
conoastere a functiilor Foxpro si a principilor de programare structurata
pe obiecte.Cea mai frecventa omisiune este generata de spatiul de vizibi-
litate a variabilelor apelate.Pentru structurile de memorie incapsulate in
acelasi obiect,este simplu si comod sa utilizati pointerul "This",dar
pentru structurile de memorie situate in afara obiectului activ,este
extrem de important sa specificati exact calea de acces.
Visual Foxpro contine un numar foarte mare de functii proprii si de
variabile implicite,la care se adauga functiile API Windows,mesajele
Windows,proprietatile,metodele si evenimentele obiectelor etc.Este impo-
sibil sa retineti acest amalgam de date.Sucesul este asigurat de usurinta
cu care va folositi de programul Help.Exista trei metode prin care puteti
cauta ceva:
1.utilizati meniul Index,pentru a cauta alfabetic un termen oarecare
2.utilizati meniul Find pentru a cautare avansata
3.utilizati meniul Contents,pentru a alege o anumita functie dintr-un
grup de date de acelasi fel,sau determinata de un anumit context de memo-
rie.Acest meniu este extrem de valoros,deoarece grupeaza datele si struc-
turile de acelasi fel.
Primele doua metode sunt utile pentru a cauta informatii despre un
termen cunoscut,iar cea de a treia metoda este utila pentru a cauta un
termen oarecare,atunci cand stiti doar domeniul general de interes,dar
nu stiti exact ce anume cautati.Primele doua metode nu necesita o prezen-
tare suplimentara.
Primul capitol din Contents se intituleaza Language Reference.In
acest director,fila Language Reference A-Z,contine toate elementele de
limbaj ce formeaza standardul Vusual FoxPro.Acestea sunt elementele pe
care compilatorul le utilizeaza pentru a verifica codurile editate de
d-voasta.Pentru orice eroare de sintaxa returnata de compilator,puteti
consulta aceasta fila,pentru a identifica standardul acceptabil.
Directorul Language Contents,contine un grup de file in care sunt
grupate structurile ce pot fi apelate pentru un anumit tip de situatie.
Aceste file sunt: Classes and Objects (contine toate functiile ce opereaza
asupra claselor sau obiectelor),Properties(contine toate proprietatile
standard ce pot fi utilizate pentru a defini un obiect),Events(contine
toate evenimentele standard ce pot caracteriza un obiect),Methods(contine
metodele standard ce pot caracteriza un obiect),System Variables(contine
lista completa a variabilelor de sistem),si alte file in care se prezinta
elementele nou aparute fata de versiunile anterioare ale limbajului
Visual FoxPro.Utilizati aceste file pentru a concepe o clasa sau subclasa.
-115-
Puteti utiliza aceste file,fie pentru informatii suplimentare despre
o anumita caracteristica a unei clase sau a unui obiect,fie pentru a
alege caracteristicile pe care doriti sa le redefiniti in sublcasa creata.
Urmatorul director (Language Categories) grupeaza principalele elemente
de limbaj,astfel:
1.Data Types -contine functiile grupate dupa tipul de data asupra
caruia actioneaza (caracter,data,timp,numeric)
2.Databases - contine toate functiile si comenzile ce opereaza asupra
tabelelor relationale si a bazelor de date
3.Visual FoxPro Enviroment - grupeaza functiile si comenzile utile
pentru a construi mediul de memorie in care actioneaza functiile si
procedurile.Unele dintre ele,necesita un anumit context de memorie.
4.Shared Acces to Data - grupeaza functiile si comenzile utile pentru
lucrul in retea cu tabele de date partajate,precum si setarile ce
pot caracteriza o anumita sesiune de lucru
5.Input and Output -grupeaza functiile si comenzile necesare pentru a
introduce sau prelua date (formatare,taste de comanda si comenzi
prin mouse,meniuri si bare de meniu,imprimare,rapoarte etc.)
6.Programming -grupeaza functiile si comenzile utile pentru a putea
realiza operatiile frecvente: manipularea ariilor de date,depanarea
si tratarea erorilor,administrarea evenimentelor,functii de nivel
inferior (la nivel de byte),gestionarea variabilelor,programarea
orientata spre obiect,executia programului sau progrmarea structu-
rata.
Urmatorul director (API Library Construction) -grupeaza descrierea
functiilor Windows API ce pot fi apelate pentru construirea unei interfete
grafice.Functiile sunt grupate atat alfabetic,cat si in functie de catego-
ria din care fac parte (tipul de operatie executata).In plus contine si
o lista a evenimentelor Visual Foxpro si o lista a codurilor Hex pentru
taste si combinatii de taste utilizate ca "short-cut".
Cel de al doilea capitol,denumit "Tehnical Reference" contine infor-
matii utile privind filele din program ce pot fi utilizate in aplicatiile
de uz comercial,lista codurilor de eroare,structura filelor acceptabile,
descrierea amanuntita a conventiilor de limbaj si informatii utile pentru
sistemul de operare(coduri,extensii,taste short-cut,descrierea sistemului)
Capitolul urmator,denumit "Interface Reference" contine o descriere
succinta a principalelor instrumente specializate (designers,windows,
wizards,builders,toolbars,menus,debugger).
In capitolul "Samples and Utilities" sunt prezentate cateva programe
"ajutatoare" si un set de exemple functionale ce pot reprezenta un schelet
de baza in etapa de invatare a limbajului Visual Foxpro.Exemplele contin
principalele mijloace de expresie,si modul in care au fost implementate.
Nu este suficient sa copiati fiecare solutie tehnica oferita.Trebuie sa
intelegeti fiecare element din exemple,apoi sa experimentati si sa creati
obiecte si interfete proprii.Incepeti cu un set limitat de proprietati si
metode,apoi puteti dezvolta modulele spre structuri din ce in ce mai
complexe.Pastrati fiecare modul functional.Va putea fi util pentru un alt
proiect,sau va putea reprezenta punctul de plecare,pentru o viitoare apli-
catie.Pastrati cate o copie de siguranta pentru fiecare program definiti-
vat si pentru fiecare baza de date completa.Nu este obligatoriu sa imitati
procedeele standard.Puteti sa va formati un stil personal de lucru.
-116-
Pentru orice program profesional,trebuie sa acordati o atentie speciala
si mediului de operare in care se executa programul (Enviroment).In linii
mari,se disting mediul de operare al sistemului FoxPro (Foxpro Enviroment)
si mediul de operare al datelor (Data Enviroment).Mediul de operare al
sistemului cuprinde absolut toate variabilele,constantele de memorie,
obiectele,functiile si procedurile,sau conexiunile cu filele externe de
tip DLL,ce au vizibilitate in spatiul de operare al sistemului Foxpro.
Acest mediu de memorie poate fi configurat,fie cu ajutorul functiilor
de tip SET sau SYS,fie utilizand meniurile din Tools/Options.Pe langa
variabilele si constantele de sistem,ce sunt prezente in memorie in orice
circumstante,se pot deschide diverse file de tip DLL (biblioteci cu legare
dinamica),din care se extrag temporar diverse variabile,functii si proce-
duri.Este foarte important sa eliberati din memorie toate aceste date
auxiliare,in momentul in care nu vor mai fi necesare pentru executie.In
caz contrar,memoria de operare se va umple progresiv,pana cand nu va mai
exista spatiu liber pentru desfasurarea operatiilor si programul se va
bloca.Cu cat utilizati mai multe obiecte,si deschideti mai multe astfel
de biblioteci,cu atat este strict necesar un control riguros al memoriei
de operare.Pentru programele simple se pot utiliza ferestrele Debugg si
functiile ce verifica memoria,dar pentru programele complexe,sunt necesare
tabele si diagrame de control,sau chiar programe specializate,care sa
desfasoare in liste,toate elementele prezente in spatiul de memorie.
Mediul de operare pentru date (Data Enviroment) este un obiect de tip
container in care se incapsuleaza cursorul si obiectele relationale ce se
utilizeaza intr-o fereastra,sau pentru crearea unei selectii sau a unui
raport.Cu alte cuvinte,Data Enviroment este un modul mai mic de memorie,
in care se grupeaza elementele ce trebuie sa partajeze acelasi spatiu de
vizibilitate.EXEMPLU: tabelele de tip .dbf,cu filele de indexare si cu
obiectele vizuale in care se vor prezenta datele extrase din tabele.
Cu cat manevrati mai abil spatiul de memorie,cu atat programul va rula
mai usor si mai rapid.Atunci cand programati o aplicatie,trebuie sa aveti
si o viziune de perspectiva a obiectelor utilizate.Exemplu: daca utilizati
o baza de date,trebuie sa preconizati si la ce dimensiuni maxime vor putea
ajunge tabelele ce o formeaza.In cazul in care tabelele vor avea dimen-
siuni foarte mari,este bine sa programati si solutia prin care aceste
tabele vor putea fi fragmentate si analizate apoi in etape succesive.
Pentru sistemul de operare Windows 95,nu se pot utiliza decat solutii
de procesare seriala a datelor,chiar si atunci cand se apeleaza la solutii
de tip multi-tasking.Pentru sistemele de operare moderne,se pot concepe si
solutii de procesare paralele.In acest caz,fie se fragmenteaza memoria de
operare in mai multe tampoane independente,fie se lucreaza in paralel cu
mai multe module de memorie de operare.In acest caz,viteza de lucru creste
proportional cu numarul de linii paralele pe care se lucreaza.
In general,este recomandabil sa utilizati pentru programele comerciale
doar memoria de operare standard.Programele care necesita diverse configu-
ratii hardware si extensii de memorie,sunt greu de exploatat si depanat.
Daca este necesar sa lucrati cu mai multe module de memorie,este recoman-
dabil sa utilizati intotdeauna perechi identice,astfel inca sa utilizati
un modul pentru operatiile de intrare a datelor si unul similar pentru
operatiile de iesire a datelor.Cu cat modulele de memorie de operare sunt
mai mari,cu atat creste capacitatea de lucru a sistemului.
-117-
Care este semnificatia practica a ideilor de mai sus ? Sa presupunem ca
doriti sa extrageti date dintr-un tabel sursa ce contine un numar foarte
mare de inregistrari.Daca utilizati un wizard,acesta va incarca in memorie
intregul tabel.Exista riscul sa depasiti spatiul de memorie si programul
se va bloca inainte de a proiecta primul obiect.Situatia inversa este
atunci cand programul functioneaza perfect,pana la un anumit moment dat,
cand,prin adaugarea permanenta de noi inregistrari,tabelul creste prea
mult si depaseste spatiul de memorie.
O alta situatie in care se depaseste memoria de operare este in cazul
buclelor de repetitie.Pentru un numar limitat de repetitii programul este
perfect functional,dar prin adaugarea de date noi,sau prin cresterea numa-
rului de repetitii se depaseste spatiul de memorie.
Spatiul de memorie poate fi insuficient si in situatiile in care se
utilizeaza solutii de activare "in cascada" a obiectelor,sau algoritmi de
generare automata a obiectelor sau ariilor de memorie.
Pentru a preintampina acest gen de situatii,este indicat sa verificati
cu atentie memoria de operare ramasa libera,dupa fiecare operatie prin
care se modifica structura tampoanelor de memorie.Mai mult decat atat,
sa verificati memoria ramasa libera si in cazul situatiilor extreme,in
care utilizatorul apeleaza la maximum capacitatea de lucru a programului
realizat de d-voastra.
Pentru programele complexe,este bine sa realizati diagrame de etapa,
in care sa reprezentati schematic toate elementele prezente in memorie,si
volumul de memorie ramasa libera.Pastrati toate aceste diagrame,pentru a
putea depana programul in viitor.La nevoie,atunci cand este necesar sa
depanati programul,fragmentati programul in aceleasi puncte si apoi
creati o diagrama de control si verificati structura memoriei.Acest pro-
cedeu este asemanator cu cel utilizat de electronisti pentru a verifica
un circuit (masoara curentii in anumite puncte cheie ale circuitului).
Simplul fapt ca un anumit tip de data este prezent in memorie,nu garan-
treaza ca va fi si accesibil pentru toate obiectele din program.Pentru ca
o data oarecare sa fie accesibila,este necesar sa fie inclusa in acelasi
spatiu de vizibilitate.Daca mediul de memorie este fragmentat in module si
compartimente,este necesar ca data apelata sa fie inclusa in acelasi com-
Dostları ilə paylaş: |
|
|