Search  
Friday, May 25, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Clase - VCX si PRG  Clasa CUSTOM, s...
 Clasa CUSTOM, sau o alta abordare
 
 4/17/2006 12:47:03 PM
User is offlineroxy
70 posts




Clasa CUSTOM, sau o alta abordare
 (Romania)

Hi,
Am o intrebare de genul "voi cum ati face?" E vorba mai mult de abordare.

As vrea sa ma folosesc  de conceputul clasa-obiect, insa dilema mea este din nou balansul intre a o face de dragul artei sau pentru un avantaj real.
Incerc sa expun cat mai pe scurt si simplificat datele problemei, sa nu ajung la un intreg roman aici numai pentru introducere .

Se da o baza de date  (exista deja si stuctural nu cred ca merita a fi modificata, pentru ca e destul de bine gandita) care cuprinde:
1 .Catalog de produse:  CodPr  (cheie primara), Nume,DesenCom, etc
2. Catalog de repere: CodRep  (cheie primara), DenRep, DesRep, Provenienta,etc
3. Structura produs: CodPr,CodRep,Buc,  ( cu  CodPr+CodRep cheie primara)
   (este relatie one-to-many de la primul tabel, si desigur fiecare CodRep se regaseste in catalogul de repere).
4. Tehnologie reper:  CodRep, NrOp, Atelier, DenumireOp,Utilaj,Categ,OreManop, etc
    CodRep+NrOp cheie primara, one-to-many din tabelul 2
5. Materiale reper:  CodRep,NrOp, CodMat,Um,Norma,Dim_teh, etc
   CodPr+CodMat cheie primara, one-to-many din tabelul 2

Obs. Acelasi reper poate sa apara in mai multe produse. Nu toate produsele au structura, nu toate reperele au tehnologie sau materiale.

In realitate lucrurile sunt mai complexe, intre Produs si Reper mai exista o structura de tip subansamblu, pe "n" nivele structurale, care subansamblu trebuie privit la randul lui ca un reper pentru ca are definitie,  descriere tehnologica si  materiale proprii, si face parte si el din Catalogul de repere. Insa putem ignora deocamdata  acest fapt pentru simplificarea problemei.
Deasemenea mai exista diverse tabele de definitii (Ateliere, Catalog Materiale,Utilaje, Categorii, etc) neesentiale aici. Si mai exista tabelul MatNeg: CodMat, Furnizor, Prioritate, PretNegociat  cu relatie one-to-many de la Catalog Materiale.

In final se vrea  o aplicatie complexa in care se afiseaza toate aceste informatii, se operaza modificari (functie de drepturile utilizatorului)  sa fac diverse calcule. De ex, pornind de la un produs (selectat dupa oricare criteriu posibil) utilizatorul sa  vada usor structura sa, si drill-down, tehnologia sau materialele pe firecare repere.  Idem pornind de la catalogul de repere, drill-down, tehnologia sau materialele pe reper.  Sau de la un produs sa se obtina totaluri pentru oricare din caracteristicile sale insumabile (de. total ore manopera, total ore manopera pe ateliere, total valoare materiale, etc ). Calculele cerute pot fi:
a. punctuale - de ex COST produs= Val.mat+ Val.manopera + diverse acareturi.
b. globale  - adica pornind de la un lot de produse (definit in alta aplicatie, de ex. o comanda, o lansare in productie, un previzionat) se cere lotul aferent de repere cu traseul sau, sau  manopera, sau materialele, total sau pe ateliere, pe utilaje etc.

Imi cer scuze pentru povestea prea lunga, nu vreau sa va cer solutii de-a gata, ma lupt cu astea de cativa ani buni in "fox-ul vechi".

Intrebarea mea este: se preteaza toate astea la o abordare OBIECTUALA ?

Ok, am baza de date, bine definita. Pot sa ma apuc sa scriu, form dupa form cu afisarea  celor de mai sus, eventual cu refolosirea unora.
De ex pot sa apelez formul "TehnologieReper" de oriunde transmitandu-i CodReper.Pentru selelctarea unui produs sau a unui reper din catalog,  pot folosi combo sau griduri cu ordonare prin clik pe header. Pentru calcule, sa pun cate un buton care apeleaza o metoda a formului tot cu parametru.

DAR,  daca as face o clasa numita PRODUS. O alta numita REPER ???
De tip CUSTOM (???) As obtine oricand Obiectul UNPRODUS precizand codul.

 Ok. As adauga proprietati la acesta clasa,  cum ar fi TotalOreManopera,  care sa contina o valoare, pe care as sti cum sa o calculeaz, cu o metoda a clasei numita sa zicem CalculMAnopera.


Ok. Dar ce ma fac cu partea vizuala? Afisarile de tot felul. De ex. Form-urile care trebuie sa afiseze structura produsului one-to-many ? 
Inteleg (cred) conceptul de produs, ca are caracteristici, comportament, dar nu stiu cum  sa ma folosesc de el vizual.
Pot sa adaug Form-uri ca si componente ale unei clase de tip custom? Cum?

 4/17/2006 1:20:37 PM
User is offlineanonymous
0 posts


Re: Clasa CUSTOM, sau o alta abordare
 (Romania)

Referitor la baza de date ue as aduce unele imbunatatiri:

  •  CodPr  (cheie primara) nu as folosi ca si cheie primara. E bine sa folosesti o cheie primara care sa faca numai identificarea. Atat. Asta este treaba ei.  Codul produdului este o caracteristica. Codul reperului la fel etc. Trebuie sa te ocupi suplimentar de intretinrea cheilor si nu merita.
  • As rupe relatiile "mai multe la mai multe" in relatii "una la mai multe" cu tabele de jonctiune. Un elev are mai multe manuale. Un manual poate apartine mai multor elevi. Tabela elevi: ID, elev, tabela manuale: ID, manual, tanela de jonctiune: ID, ID_elev, ID_manual. Manualele le aloc elevilor in tabela de jonctiune. Pot astfel sa adaug cate manuale vreau, carui elev vreau. Mai mult, intretinerea tabelei elevi si manuale este foarte simpla (nu stiu daca este gandita asa baza de date fara sa o vad - scuze daca e asa sau mai bine).
  • Pentru reutilizarea codului poti folosi clase atat vizuale cat si non-vizuale. Clase vizuale derivate din clase form as face pt. nomenclatoare. Toate nomenclatoarele trebuie sa poata adauga inregistrari, sa stearga etc. Se poate generaliza. O clasa non-vizuala ar fi de ex. una de tratare a erorilor.

Pot sa adaug Form-uri ca si componente ale unei clase de tip custom? Cum?  Eu zic ca unui form trebuie sa-i adaugi o clasa custom si nu invers.

 

 4/17/2006 1:33:20 PM
User is offlineDoru
160 posts
www.aquila.ro
5th




Re: Clasa CUSTOM, sau o alta abordare
 (N/A)

Formuri nu se pot adauga decit in formseturi, nu in alte clase ( custom, container).

Poti face asemenea clase, si sint bune pentru incapsulat diverse proprietati si metode cum ai spus pentru un reper/produs, pe care poti sa le folosesti oriunde in aplicatie ai nevoie de acele caracteristici fara sa mai scrii acelasi cod in mai multe locuri. Aceste clase vor trebui sa suporte si actualizarea tabelelor inapoi - sa zicem cind pui OreManopera=10 prin metoda assign sa modifice tabela de provenienta.

Aceste obiecte vor instantia automat si subobiectele si sa faca o colectie de obiecte gen coloane in grid - clasa PRODUS va contine o colectie de REPERE si sa poata fi accesate prin Produs.Reper(i)

La afisare nu vei scapa de cod ca sa iei aceste proprietati si sa le pui in treeview sau grid.

Cind vei instantia un Produs acesta va cotrobai prin tabele si va tot instantia reperele si subreperle si va consuma timp si resurse care poate nu o sa ai nevoie.


Cristian Tenea
Aquila
 4/17/2006 2:03:24 PM
User is offlineroxy
70 posts




Re: Clasa CUSTOM, sau o alta abordare
 (Romania)


Multumesc mult pentru idei. Cheia primara, e cam tarziu sa o schimb, desi e logic ceea ce spui. Sunt legata si de alte aplicatii.

De fapt chiar folosesc "tabela de jonctiune"  (fara sa stiu ca asa ii zice), aceasta este StructuraProdus. Intru totul de acord ca ar trebui sa am clase vizuale pentru "intretinerea" cataloagelor si clase non vizuale pentru alte chestii.   "Eu zic ca unui form trebuie sa-i adaugi o clasa custom si nu invers"   OK, mi-ai dat de gandit.

"Clasa PRODUS va contine o colectie de REPERE si sa poata fi accesate prin Produs.Reper(i)."  Interesant,nu ma gandisem asa, voi incerca sa folosesc.

Daca nu va plictisesc... o sa revin cu alte "opinteli".

Rodica

  Visual FoxPro  Clase - VCX si PRG  Clasa CUSTOM, s...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement