Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Izolacija variabli i proedura

[es] :: Perl :: Izolacija variabli i proedura

[ Pregleda: 3855 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Branko
Branko Petrović
Čačak

Član broj: 4123
Poruke: 89
*.cac.sezampro.yu



+1 Profil

icon Izolacija variabli i proedura18.11.2002. u 08:29 - pre 260 meseci
Pišem poslovnu aplikaciju u Perl/Tk. Aplikacija je svaki danom sve veća i u principu nastaviće stalno da se širi. Da bi ubrzao pokretanje aplikacije u "glavni" program sam stavio samo inicijalizaciju globalnih variabli i meni sistem, a pojedinačne programe pozivam preko funkcije eval. Sada imam problem kako da izolujem funkcije koje definišem u pojedinačnim programima.
Kada startujem isti program istovremeno 2 i više puta ( recimo paralelno se gledaju kartice promena za dva kupca) ili kod ponovnog startovanja istog programa dobijam poruke o redefiniciji svih sub-ova koji se definišu u programu. Sve radi kako treba , bez obzira na poruke, ali me ova upozorenja ipak plaše. NA KOJI NAČI MOGU DA IZOLUJEM SVE VARIJABLE I PROCEDURE U POZVANOM PROGRAMU, ODNOSNO KAO DA IH SE POTPUNO OSLOBODIM PO OBAVLJENOM POSLU. Pretpostavljam da je resenje u objektima, ali mi je potrebna pomoc .
 
Odgovor na temu

alex
Aleksandar Radulovic
Senior Software Engineer, Spotify
Stockholm, Sweden

Moderator
Član broj: 71
Poruke: 2194
*.juventus.is

Jabber: alex@a13x.info
ICQ: -1
Sajt: www.a13x.info


+1 Profil

icon Re: Izolacija variabli i proedura18.11.2002. u 09:50 - pre 260 meseci
U pravu si, resenje je ili u objektima ili u koriscenju modula (sto mu se otprilike svodi na isto)..

Znaci, napravis module za svaki zasebni deo (npr, te tvoje kartice) i u modulima definises sve operacije koje mogu da se izvode za taj deo. U glavnom programu samo ubacis modul i kreiras objekat tog modula:
Code:

use Kartica;

$kartica = new Kartica($idbroj);


Koriscenje modula znatno olaksava posao izmene delova programa a uz to je i sam kod citljiviji i pregledniji.

Sto se tice pisanja modula, imas dosta informacija o tome na Internetu, a mozda bi najbolje bilo da kupis Lama Book i Camel Book.

Pozdrav,
alex.
Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x ||
linkedin.13x
 
Odgovor na temu

Branko
Branko Petrović
Čačak

Član broj: 4123
Poruke: 89
*.cac.sezampro.yu



+1 Profil

icon Re: Izolacija variabli i proedura18.11.2002. u 10:19 - pre 260 meseci
Modula ima oko 200. Kako da izbegnem da sve module kompajlira pri pokretanju programa i kako da "počistim" iza njega kada završi sa radom ?
Parče koda bi dobro došlo. Šta da stavim u "glavni" program, kao da pozovem modul ...
 
Odgovor na temu

alex
Aleksandar Radulovic
Senior Software Engineer, Spotify
Stockholm, Sweden

Moderator
Član broj: 71
Poruke: 2194
*.juventus.is

Jabber: alex@a13x.info
ICQ: -1
Sajt: www.a13x.info


+1 Profil

icon Re: Izolacija variabli i proedura18.11.2002. u 11:42 - pre 260 meseci
Koristeci eval funkciju, tvoj glavni program kompajlira tvoje module svaki put kada ih eval-uje. To ces izbeci tako sto ces te tvoje module napraviti kao prave Perl module. Te tvoje module tesko mozemo nazvati pravim modulima.

Na ovom linku:
http://world.std.com/~swmcd/steven/perl/module_mechanics.html
naci ces detaljne informacije o pisanju Perl modula, tako da nema potrebe
da ti pisem detaljnije o tome.

Takodje, ovaj link je veoma interesantan, daje malo vise informacija:
http://mathforum.org/~ken/perl_modules.html

Sto se tice parceta koda, pa vec sam ti dao primer u mojoj prethodnoj poruci. Napises modul, nazoves ga Kartica (fajl Kartica.pm) i u svom glavnom programu ga ukljucujes sa:
Code:

use Kartica;


Zatim, kada hoces da kreiras objekat koji je definisan u tom modulu, pozivas ga otprilike ovako:
Code:

$kartica = new Kartica(opcija1 => "Blabla", opcija2=>"12345");


Recimo da u objektu Kartica imas metod PrikaziKarticu():
Code:

$kartica->PrikaziKarticu();


Easy as that! U sustini, pisanje i koriscenje Perl modula je krajnje jednostavno a veoma mocno.

Pozdrav,
alex.
Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x ||
linkedin.13x
 
Odgovor na temu

Branko
Branko Petrović
Čačak

Član broj: 4123
Poruke: 89
*.cac.sezampro.yu



+1 Profil

icon Re: Izolacija variabli i proedura19.11.2002. u 09:24 - pre 260 meseci
Mislim da se nismo razumeli. Preformulisaću pitanje tako da bude jasnije :
Kako treba pisati VELIKU aplikaciju u Perl-u , ali tako da što manje "jede" računarske resurse.
Čini mi se da je nerazumno na početku navesti :
use mod001;
use mod002;
...
use mod999;
...i tako kompajlirati ogroman broj modula (to traje !!!) i držati ih u memoriji kada najveći deo njih verovatno neće biti upotrebljen do kraja rada programa.
DA LI POSTOJI MOGUĆNOST DA :
1. Učitam modul po zahtevu.
2. Obavim posao sa njim ( kreiram objekat, ...)
3. Uklonim iz memorije sve vezano za modul (ne samo objekat)
 
Odgovor na temu

alex
Aleksandar Radulovic
Senior Software Engineer, Spotify
Stockholm, Sweden

Moderator
Član broj: 71
Poruke: 2194
*.juventus.is

Jabber: alex@a13x.info
ICQ: -1
Sajt: www.a13x.info


+1 Profil

icon Re: Izolacija variabli i proedura19.11.2002. u 11:08 - pre 260 meseci
Onda su ti potrebni pravi objekti - pogledaj funciju bless.
Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x ||
linkedin.13x
 
Odgovor na temu

dwarf
Beograd, Srbija

Član broj: 1328
Poruke: 336
*.yubc.net



Profil

icon Re: Izolacija variabli i proedura19.11.2002. u 11:51 - pre 260 meseci
Mislim da se modul za to sove AutoLoader ili tako nesto. S druge strane, znam sigurno da ce eval(); da odradi posao ako ga zovnes u sred koda. Tako mozes modul da ucitas kako ti je volja, a ne na pocetku programa.

Alex je u pravu s druge strane. Potrebni su ti pravi objekti ako hoces da "cistis" za njima. Pogledas perldoc perltoot, ako se dobro secam (ili, alternativno, odes na http://www.perldoc.com/ i tamo gledas).
 
Odgovor na temu

Branko
Branko Petrović
Čačak

Član broj: 4123
Poruke: 89
*.cac.sezampro.yu



+1 Profil

icon Re: Izolacija variabli i proedura20.11.2002. u 12:21 - pre 259 meseci
Zahvaljujem se na pomoći. Problem sam rešio. Umesto imenovanih koristio sam anonimne sub-ove koji mogu da se lokalizuju.
 
Odgovor na temu

dukenukem
Nemanja Nikolic
Beograd

Član broj: 970
Poruke: 99
*.118.EUnet.yu

ICQ: 35310908


Profil

icon Re: Izolacija variabli i proedura26.11.2002. u 12:16 - pre 259 meseci
ja to obicno 'vako:
Code:

require "$type.pm";
$type->DisplayMain();

$type se dinamicki odredjuje. na primer, $type="Static" ce pozvati DisplayMain() iz Static modula - recimo, parsiranje staticnih html-stranica, $type="Forum" ce pozvati DisplayMain() iz Forum.pm etc etc
= come get some =
 
Odgovor na temu

[es] :: Perl :: Izolacija variabli i proedura

[ Pregleda: 3855 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.