Upoznajmo Fox - funkcije
 
Novosti
Visual FoxPro
FoxPro Forum
Vicevi
Kontakt
Uvod
Upoznajmo Fox
Knjige
Časopisi
Konferencije
Korisni linkovi
 
 
Funkcije, procedure, metodi, subrutine, potprogrami...

Svi ovi nazivi podrazumevaju potprogram ili deo koda u okviru većeg programa koji obavlja određenu operaciju - posao.
Uobičajeno je da se funkcijom nazivaju one subrutine koje na kraju vraćaju neku vrednost, dok se procedurom nazivaju programi koji ne vraćaju nikakvu vrednost.
Metodi su vrlo slični funkcijama, samo što su pridruženi klasama ili objektima. U daljem tekstu ja ću koristiti uglavnom termin - funkcija.

Pozivanju funkcije može da se pridruži i jedan ili više parametara, koji mogu biti: izrazi, promenjive, druge funkcije i objekti.
?date() && današnji datum
?year(date()) && godina
?left("Majstor",3) && vraća Maj

Procedure možete pozvati i na sledeći način:
do dan with ldDatum
Metodi se pozivaju referencirajući klasu(objekat) u kome se nalaze.
thisform.mojsupermetod()

Čemu to služi, a uz to i radi!?!

Osnovna svrha korišćenja funkcija je eliminisanje dupliranja istog koda i omogućavanje ponovnog korišćenja istog koda na različitim mestima u aplikaciji, kao i u više različitih aplikacija.
Osim toga, segmentiranje koda u manje delove koji se lakše mogu obrađivati i proširivati je takođe neophodno radi efikasnijeg razvoja programa, što u isto vreme olakšava i samu čitljivost koda.
I na kraju, savremeno programiranje podrazumeva upotrebu sakrivanja informacija preko korišćenja interfejsa da bi se ostatak programa sačuvao od konkretne implementacije.
To u prevodu znači, da vam je dosta da znate kako da koristite određenu funkciju i šta su rezultati njenog pozivanja, bez da morate da znate kako je interno rešen problem.
Na primer, možete napisati namensku funkciju koja će snimati izmene u podacima
MojSave()
bez obzira da li se podaci čuvaju u Foxovim DBF tabelama, na MS SQL bazi, txt fajlovima, XML-u ili nečem drugom, ali je vi uvek pozivate na isti način.

Grupisanje funkcija je moguće po nekoliko kriterijuma. Na primer, imamo funkcije koje rade sa podacima i to sa određenim tipovima podataka(manipulacija datumom, stringom itd.), zatim funkcije koje rade sa fajlovima, okruženjem, nizovima, matematičke funkcije itd.
Ja nemam nameru da ovde izlažem čak ni te grupe funkcija, a kamoli pojedinačne funkcije, to je već odlično urađeno i u samom helpu Visual FoxPro-a i u sjajnoj Whil Hentzen-ovoj knjizi Fundamentals

Istorija i UDF(User defined functions)

Osim ugrađenih funkcija koje su vrlo korisne, glavni posao odrađivaće vam funkcije koje ćete sami pisati. Takozvane UDF ili User Defined Functions su upravo ti programi. Nekada davno, u vreme proceduralnih programa, programi su se pisali tako što su se pravile biblioteke funkcija ili procedura koje su radile određenu stvar. Mnoge od tih funkcija su sada ugrađene direktno u jezik, ali potreba za pisanjem takvih biblioteka nije prestala.

Teoretski, mogli ste imati jedan jedini fajl(PRG) u kome su se nalazile i funkcije/procedure koje pozivate. Kako se taj program znao neverovatno uvećati, snalaženje je bilo vrlo otežano, a slična funkcionalnost se tražila i u drugim programima koje pravite.
Zbog toga, neminovno je došlo do seljenja svih tih funkcija u zasebne fajlove, koje ste mogli pozivati direktno, ako ste pre toga postavili pokazivač na njih sa:
SET PROCEDURE TO ImePrograma

Kako to izgleda danas?

Iako se i danas u istoj meri koriste proceduralni fajlovi(biiblioteke funkcija), organizacija je ipak drugačija. Zbog mnogih prednosti objektno orijentisanog programiranja, umesto funkcija dominiraju metodi ili metodi događaja(event methods) pridruženi objektima. Na sistemske ili korisničke akcije reaguje objekat i poziva odgovarajući metod pridružen događaju(event method).
Na primer, ako korisnik klikne mišem na neko dugme na obrascu, biće pozvan CLICK method pridružen događaju CLICK u tom dugmetu.
Vi naravno možete pisati i namenske metode, ali njih morate sami pozivati, kao što je gore navedeno.
Ono što je interesantno je da metod pridružen događaju možete zvati i kroz kod. Recimo, gore pomenuti događaj CLICK možete sami pozvati sa:
thisform.dugme.click()
i isti kod će biti izvršen, kao da je korisnik sam kliknuo na odgovarajuće dugme. Međutim, iako to zvuči interesantno, a i može biti korisno ponekad, takva akcija samo ukazuje na loše napisan kod.


Ovde bi se moglo još toga dodati, ali se opet ova stranica odužila, pa ćemo to dodati kada budemo pokrivali objekte, klase i slično.

 

Prethodno poglavlje - Naredbe, komande
 

 


 Novosti |  Visual FoxPro  |  FoxPro Forum   |  Vicevi   |  Kontakt  
Copyright  2006 Lapurda Co.  All Rights Reserved.
Site designed by  Lapurda Technologies