Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 8 odgovora
  • 5.062 pregleda

Najnovija ↓

Izolacija variabli i proedura 18.11.2002. u 09:29 · pre 291 mesec #1
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 .
Re: Izolacija variabli i proedura 18.11.2002. u 10:50 · pre 291 mesec #2
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.
Potpis
Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x ||
linkedin.13x
Re: Izolacija variabli i proedura 18.11.2002. u 11:19 · pre 291 mesec #3
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 ...
Re: Izolacija variabli i proedura 18.11.2002. u 12:42 · pre 291 mesec #4
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.
Potpis
Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x ||
linkedin.13x
Re: Izolacija variabli i proedura 19.11.2002. u 10:24 · pre 291 mesec #5
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)
Re: Izolacija variabli i proedura 19.11.2002. u 12:51 · pre 291 mesec #7
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).
Re: Izolacija variabli i proedura 20.11.2002. u 13:21 · pre 291 mesec #8
Zahvaljujem se na pomoći. Problem sam rešio. Umesto imenovanih koristio sam anonimne sub-ove koji mogu da se lokalizuju.
Re: Izolacija variabli i proedura 26.11.2002. u 13:16 · pre 291 mesec #9
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
Potpis
= come get some =
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme