You are on page 1of 195

Marta Ambrozi

OBJEKTNO ORIJENTISANO PROGRAMIRANJE

Novi Sad 2009.

SADRAJ
SADRAJ Predgovor UVOD 1. UKRATKO O NASTANKU VISUAL BASIC.NET-A 2. RAZVOJNO OKRUENJE VISUAL BASIC.NET-A 2.1 Linija menija  2.2 Paleta sa alatkama (Toolbar) 2.3 Kutija sa alatkama (Toolbox) 2. 4 Prozor svojstava 2.5 Jo neki prozori u VB.NET-u... 3. FUNKCIONISANJE RAUNARA 3.1 Uloga raunara u poslovanju 3. 2 Reavanje problema bez ogranienja 3. 3 Reavanje problema sa ogranienjima 4. LOGIKE OPERACIJE 4.1 Osnovne logike operacije 4.2 Sloeni iskazi 4. 4 Primena logikih operatora u oblasti kompjutera 4. 4. 1 Logika operacija konjukcija 4.1.2 Logika operacija disjunkcija 4.4.3 Logika operacija iskljuivo ili 4. 4. 4 Sloeni iskazi u raunarskoj obradi 4. 5 Operatori u Visual Basic-u 4.6 Petlje i upravljake strukture  5 9 11 15 17 19 20 20 25 27 29 34 36 47 57 57 58 63 67 69 72 75 80 86

VI

4. 6.1 Struktura For...Next 4. 6. 2 Struktura Do/Loopl 4. 6. 3 Struktura If/Then/Else 4. 6. 4 Struktura Select 5. ELEMENTI PROGRAMSKIH BLOKOVA  5.1 Tipovi podataka 5.2 Promenljive  5.3 Konstante 5. 4 Komentari 5. 5 Prazan prostor 5. 6 Rad sa brojevima 5. 7 Rad sa stringovima  5. 8 Povezivanje (konkatenacija) 5. 9 Rad sa Datumima 6. OBJEKTNO ORIJENTISANO PROGRAMIRANJE 6. 1 Osvrt na MICROSOFT.NET FRAMEWORK 6.2 Objekti 6. 3 Enkapsulacija 6. 4 Dogaaji 6.5 Apstrakcija objekata:VIDLJIVOST 6. 6 Klase objekata 6. 6. 1 Izgradnja klasa  6. 6.2 Mogunost ponovnog korienja koda 6. 7 Funkcije (Potprogrami, procedure , podrutine) 6. 7. 1 Sintaksa procedure Sub 6. 7. 2 Pozivanje procedure Sub

87 88 91 95 101 102 103 106 108 109 109 115 116 122 125 126 129 132 133 134 134 136 139 140 141 142

VII

6. 7. 3 Funkcijske procedure 6. 7. 4 Nazivi funkcija  6. 7. 5 Analiza primene parametara u procedurama 6. 8 Nasleivanje 6. 9 Polimorfizam 6. 10 Programska naredba u Visual Basic-u 7. RAD SA PODACIMA 7. 1 Vektori 7. 2 Matrice 7. 3 Nizovi u visual basic.Net-u 7. 4 Sortiranje i pretraga nizova 7. 5 Strukture 7. 6 Kolekcije 7. 6.1 Brisanje stavki sa liste 7. 6. 2 Listanje i prikaz stavki u nizu 7. 7 Dinamiki niz 7. 8 Viedimenzionalni niz 8. 2 Povezivanje aplikacije sa bazom podataka 8. 2 Dodavanje kontrole na formu aplikacije 8. 3 Dodavanje kontrola za navigaciju sa podacima LITERATURA

144 145 146 148 150 150 153 153 154 155 159 160 164 166 169 170 172 178 182 183 191

8. RAD SA BAZAMA PODATAKA U VISUAL BASIC.NET-U177

PredgoVor
Programiranje, kao vetina izrade aplikacije, zahteva poznavanje elementarnog znanja, dobrog logikog razmiljanja sa primesama kreativnosti. Savremeni alati za izradu aplikativnih softvera su se razvili do tolike mere da omoguuju razvoj veoma kompleksnih informacionih sistema zasnovanih na najnovijim raunarskim tehnologijama. Ispratiti tu iroku oblast sa strunog aspekta zahteva ipak sistematino savlaivanje programerskih metodologija, koncepata informacionih sistema ali i alata. Postoji odreena diferencijacija u oblasti informatike. Neki se bave samo izradom aplikacija, neki multimedijalnim sistemima, projektovanjem baze podataka, administriranjem podataka itd. Ali za sve je to potrebno odreeno znanje. U okviru predmeta Programiranja na smeru menadera poslovne informatike Fakulteta za menadment izuava se nain kreiranja aplikacije. Stoga, ova knjiga je namenjena kao potrebna literatura za predmet Programiranja. Sam koncept knjige je zasnovan na popularnoj paradigmi programiranja objektno orijentisanom programiranju, ali zadire i u logike aspekte razmiljanja, kao neophodne podloge za razvoj programerskog razmiljanja. Sa ovog aspekta mogu se zaokruiti dve velike celine knjige. Prvi deo odnosi se na elementarna znanja koja su potrebna jednom programeru bez obzira na programski alat. Poto veina knjige se bavi principom programiranja pomou nekog savremenog softverskog alata i esto je zapostavljeno ono to je osnovno u ovoj oblasti. Od te osnove ne moemo pobei, bez obzira koliko je tehnika uznapredovala. Jo uvek raunar funkcionie sa starim, dobrim nulama i jedinicama i na potpuno istoj logici. Ono to je toliko odskoilo u razvoju savremenih softverskih alata je njena laka primena pri razvoju aplikacije. Drugi deo knjige je iskljuivo usredsreen na objektno orijentisani princip graenja aplikacije. Izloena je osnovna koncepcija objektne orijentisanosti. Za savlaivanje ove koncepcije u knjizi se demonstriraju i konkretni primeri i to pomou alata koji je potpuno objektno orijentisan Visual Basic.NET. Cilj je da studenti ovladaju ovom vetinom, a da na osnovu steenog znanja se mogu dalje razvijati i u druge sfere informatike. S obzirom da knjiga sadri i osnovnu programersku metodologiju, a ne samo izlaganje

Objektno orijentisano programiranje

upotrebe komponenata alata, mogu ga koristiti i oni koji su van ovih nastavnih okvira. Naposletku elim da se zahvalim svima koji su doprineli i omoguili da se ova knjiga objavi, ali i onima koji su dali podrku svemu tome.

UVOD
Iako razvoj i primena savremenih raunarskih tehnologija nema duboke istorijske korene, ipak je to oblast koja belei najbre i naj drastinije promene poslednjih decenija. Pojava personalnih raunara i revolucionarni korak nainjen Microsoft-ovim Windows okruenjem, omoguili su masovnu primenu raunara, ujedno pribliavajui ga korisniku. Evidentno je da su raunari svugde oko nas: na poslu, u koli, kod kue itd. Prodrli su u sve sfere naeg ivota, gde je intelektualni rad oveka pogodniji putem raunara. Dugotrajni i zamorni poslovi polako padaju u zaborav, a poslovni procesi postaju bri. Da bi raunar mogao da izvede odreeni posao mora se obuiti za to. To je maina, vetaka tvorevina, koja ne poseduje sopstveni intelekt. Raunaru je potrebno saoptiti kako i ta e da radi, to se odvija putem kreiranog programa. Raunari, kada reavaju postavljene zadatke, izvravaju programe pisane za tu namenu. U savremenim trendovima izuavanja procesa programiranja esto se postavlja pitanje kojoj oblasti pripada programiranje: da li je to oblast istog inenjerstva zasnovanog iskljuivo na strogim naunim principima, ili je to moda samo vetina kojom su sposobni da vladaju pojedinci a moda se moe svrstati u umetnost. Sve ove tri oblasti su vane i ne iskljuuju jedna drugu. Programiranje nije vetina koju poseduju samo neki talentovani pojedinci sa darom za identifikovanje i reavanje problema. Programiranje se moe savladati i nauiti. Naravno, potrebno je posedovati i kreativni duh za izradu programa, neto vetine ali i savladati metodologiju programiranja zasnovanu na

12

Objektno orijentisano programiranje

naunim principima. Svrsi shodno je uvaavati steena znanja i iskustva iz ove oblasti, koja izviru iz odreenih zakonitosti u vidu ogranienja, kriterijuma i mogunosti izbora. Reavanje nekog problema nije stihijski. Ne radi se metodom pokuaja i pogreke, ve je potrebno primeniti odreenu ustanovljenu metodologiju kreiranja programa. Prema tome moemo jednostavno postaviti definiciju: Programiranje je kreativan postupak izrade programa. Smatra se da je to vetina iju osnovu ini stvaranje i izrada algoritama pri emu se koriste programski jezici. Poi na intelektualni put, kao to je programiranje, zahteva formiranje mentalne mape, slino kao kada se odluimo otii na neko egzotino putovanje. Primena odreene metodologije i sistemskog pristupa u reavanju problema dovodi do adekvatnih rezultata. Cilj je da se eliminie neizvesnost u pronalaenju reenja. To znai da je reenje elegantno, pregledno i sigurno se pronalazi. ak se pri tome pokazuje i odreena sigurnost u proceni vremena izrade. Postupak kreiranja programskog reenja obuhvata nekoliko faza: analizu problema na konceptualnom nivou: definisanje i opis problema odreivanje skupa ulaznih i izlaznih podataka izrada formalne i neformalne specifikacije predvianje potrebnih instrukcija za reavanje problema na apstraktnom nivou plan izrade programa: plan realizacije na osnovu specifikacije saoptavanje reenja raunaru kodiranje i unos u raunar, testiranje programa, eksploataciju programa i dokumentovanje programa.

Objektno orijentisano programiranje

13

Analizom problema formira se idejno reenje na konceptualnom nivou. Jednostavno reeno utvruje se ta e taj program da radi. Spoznajom njegove namene, ulaznih i izlaznih vrednosti kao i analizom procesa koji se preslikavaju u program nastaje algoritam za realizaciju postavljenog problema. To predstavlja plan programa. Algoritam se konkretizuje nizom programskih instrukcija putem nekih od programskih jezika. Primena programskih jezika zahteva uvaavanje odreenih pravila sintakse programskog jezika (gramatiku - jezika). Da bismo konkretizovali nae reenje postavljenog zadatka potrebno je vladati i nekim odreenim alatom. Jedan od pogodnih jezika za upoznavanja izrade programa je Visual Basic.NET. Relativno je lako za uenje i primenu, pa e ovde, osim logike i tehnike, objektno orijentisano programiranje biti upotrebljeno za konkretno savlaivanje vetine kreiranja softverskog reenja. Zavrni deo postupka programiranja zahteva proveru izvoenja zadatih instrukcija. Putanjem u probni rad kompajliranjem programskog koda - utvrujemo da li taj program radi po naim oekivanjima. U sluaju neoekivanog ponaanja potrebno je izvriti korekciju programskih instrukcija. Inae, ako zadovoljava naa oekivanja i svrsi shodno obavlja postavljeni zadatak, program se moe pustiti u rad u realnom okruenju tj. prei na njegovu konkretnu eksploataciju.

1. UKRATKO O NASTANKU VISUAL BASIC. NET-A


Prethodnik Visual Basic.Net-a, Visual Basic 6.0 spadao je u grupu brzih razvojnih aplikacija i bazirao se na izvoenju dogaaja. Moe se rei da je VB.Net naslednik Visual Basic-a 6.0., iji su osnovni elementi i koncepti preuzeti i znatno izmenjeni. Put razvoja ovog alata sledi u kratkim crtama. Uvoenjem Windows okruenja 1991. godine nastaju drastine promene u programiranju. Kreiranjem korisnikog interfejsa (engl. user interface) postaje jednostavnije, bez kompleksnih kodova. Do tada programeri su morali biti veoma dobro obueni za programski jezik C++ i biti upoznati sa osnovnim blokovima gradnje samog sistema Windows. Druga vana injenica koja je dovela do prekretnice u programiranju pored Windows okruenja je pojava Microsoft Word-a i Excel-a. Oni su pruali sasvim nove mogunosti. Korisniku su na raspolaganju palete sa alatkama. Osim toga, ovi alati podravaju istovremeno izvravanje vie aplikacija, a unutar glavnog prozora se moe koristiti vie prozora. Tada nastaje ideja da se ovi elementi ugrade i u programske jezike, ime bi se olakalo i bre bi se stvarale aplikacije. Treba istai da drevne programerske tehnike tj. nain i logika razmiljanja ipak ostaju osnova kreiranja programa, promene se pokazuju u pojednostavljenu alata za kreiranje programa.

16

Objektno orijentisano programiranje

Ono to je Windows okruenje promenilo je zamorno pisanje dugih tekstualnih programskih kodova. Alati razvijeni za brzo kreiranje i izradu programa zasnovani su na konceptu ugradnje gotovih elemenata u operativni sistem. Interfejs aplikacija se oslanja na crtanje prozora i elemenata (komponenata), pa se programiranje ovde svodi na definisanje osobina pojedinih komponenata. Zadate akcije nad komponentama se izvravaju generisanjem dogaaja. Primer jednog od takvih dogaaja je pritisak tastera mia, pri emu e se izvriti neki dogaaj, realizovati neka akcija. Kakvu akciju e dogaaj izvriti zavisi od unetog programskog koda. To moe biti izlazak iz programa, otvaranje nekog dokumenta i slino. Od prvih verzija Visual Basic-a prevaljen je put, u kome je Microsoft neumorno radio na usavravanju ovog alata, konano dostiui do potpuno orijentisanog objekta. Pre nego to pristupimo savlaivanju osnovne metodologije programiranja bie nekoliko rei o integrisanom razvojnom okruenju Visual Basic-a, ali prevashodno osvrnuemo se i na digitalni raunar kao sredstvo rada, na njegove elemente i funkcionisanje.

2. RAZVOJNO OKRUENJE VISUAL BASIC. NET-A


Konkurencija na tritu softverskih reenja je nezaobilazna ak i po pitanju razvoja programa. Pogotovu je to izraeno kada se radi o softverskim aplikacijama za velike organizacione sisteme. Sredstva koja omoguuju veu brzinu, ujedno ne gubei na kvalitetu izrade sveobuhvatnih poslovnih reenja, su savremena integrisana razvojna okruenja. Pruaju fleksibilnost kreiranja programskog reenja, to je podloga agilnosti u prilagoavanju novim mogunostima. Integrisano razvojno okruenje (integrated development environment IDE) predstavlja delimino automatizovanu softversku aplikaciju koja znaajno olakava razvoj programskih reenja. Obino obuhvata editor izvornog koda za pisanje programskih kodova, kompajler i interpretator za prevod izvornog programa u binarni, mainski oblik, program za pronalaenje greaka (debugger) i niz drugih alata. Primeri integrisanog razvojnog okruenja su Visual Studio, Delphi, JBuilder, FrontPage and DreamWeaver Ovde emo se vie osvrnuti na razvojno okruenje koji je Microsoftov proizvod: Visual Studio.NET. Prvi pokuaj ove kompanije u stvaranju programskog okvira nije se mogao pohvaliti integrisanou, jer je obuhvatao samo skup nepovezanih softverskih alata i uslunih programa. Odreeni stepen integrisanosti alata i uslunih programa nainjen je kasnije, razvojem Visual Studija 6.0, sa ciljem da se obezbedi jedan izvor i okvir za razne programerske potrebe. To znai da mogu podjednako sluiti programerima za razvoj Web aplikacija, programerima za razvoj samostalnih aplikacija

18

Objektno orijentisano programiranje

ili celom timu za izradu velikih stratekih softverskih aplikacija na nivou organizacije. Takoe sadri alate za razvoj multimedijskih sadraja. Sa Visual Studio.NET-om nainjen je jo jedan korak unapreenja ovog okvira, tako da se radi o potpuno Integrisanom Razvojnom okruenju. Konkretno sadri Visual Basic, Visual C++, Visual Java#, Visual C# i razne druge zajednike alatke npr. Visual Studio Solution. Pokretanjem Visual Studio.NET-a otvorie se prozor na kom se pojavljuje Integrisano Razvojno okruenje (IDE) sa startnom stranom (Start Page). Pokretanjem novog projekta otvara vam se mogunost biranja alata sa kojim ete raditi Visual Basic.NET, Visual C#, Visual Java # itd. Na slici 21 prikazana je poetna strana (Start Page) za Microsoft Visual Basic 2005 Express Edition, alat pomou koga e se uiti programiranje, a ima velike slinosti sa verzijom VB.Net 2003 .

Slika 21: Prikaz poetne strane (Start Page)

Objektno orijentisano programiranje

19

Novi projekat se pokree odabirom i aktiviranjem dugmeta Create Project ili otvaranjem neke druge postojee aplikacije sa dugmetom neposredno iznad opcije Create Project-a Open Project. Ali da se vratimo na Start-nu stranu i da vidimo ta ova kartica sadri. Na njoj se nalazi sledee: Liniju menija Paletu sa alatkama (Toolbar) Kutiju sa alatkama (Toolbox) Solution Explorer

2.1 Linija menija


Veoma je slina drugim menijima Microsoft-ovih proizvoda. U njemu se nalaze sledee komponente (slika 22):

Slika 22: Prikaz linije menija

File: programi za otvaranje i zatvaranje datoteka i projekata. A kao i u svim Microsoft-ovim alatima ovde se moe izai iz aplikacije Edit: komande za isecanje, kopiranje, umetanje teksta i objekata, Find, Replace itd. View: pomae u podeavanju radne povrine. Omoguuje brz pristup prozorima kao to su: Solution Explorer, Database Explorer Toolbox, prozor svojstava (Properties) i slino Project: za dodavanje raznih drugih datoteka u aplikacije Build: za pokretanje aplikacije bez korienja okruenja Visual Basic.NET-a Debug: za otkrivanje greaka i za pokretanje/zaustavljanje rada aplikacije pri njegovom izvravanju. Data: daje mogunost da doemo do informacija iz baze podataka. Nije aktivan u toku pisanja koda.

20

Objektno orijentisano programiranje

Format: pomou njega dovodimo u red niz neurednih prozora. Slui za nametanje prozora onako kako e se pojaviti kod korisnika. Tools: obuhvata komande za konfigurisanje Visual Studia.NET IDE-a, ali sadri i komande za veze sa drugim spoljanjim alatima koji su moda instalirani. Window: Slui za upravljanje prozorima Community: Omoguena je komunikacija sa drugim programerima i korisnicima VB.Net programskog alata za razmenu miljenja, za pomo i slino Help

2.2 Paleta sa alatkama (Toolbar)


Na njoj se nalaze najee koriene funkcije (slika 22). Sadri niz paleta alata, od kojih moemo odabrati one koje najee upotrebljavamo u meniju.

2.3 Kutija sa alatkama (Toolbox)


Visual Basic.Net je programski jezik koji se zasniva na programiranju pomou komponenata. Komponente se zovu kontrole. Visual Basic u sebi sadri unutranje kontrole (engl. intrinsic controls), koje su smetene u kutiji sa alatkama (Toolbox). To je standardni skup kontrola koje su ugraene u okruenje Visual Basic.Net-a. Oni se automatski pojavljuju, kreiranjem novog projekta. (Pokretanjem Veiw>Toolbox-a ili postoji i mogunost otvaranja sa Ctrl+Alt+X). Slika 23 prikazuje listu standardnih kontrola grupisanih po odreenoj loginoj celini kao to su naj uobiajeno koriene kontrole (engl. Common Controls), kontrole za kreiranje i rad sa menijima, podacima itd. Visual Basic.NET ima mnoge kontrole ali u nastavku su date samo neke od njih sa kratkim objanjenjem.

Objektno orijentisano programiranje

21

Slika 23: Lista standardnih kontrola u VB.Net-u

1. Pokaziva (Pointer) podrazumevana alatka u Toolbox-u 2. Dugme (Button) Jedna od najpopularnijih kontrola VB-Net-a. Koristi se za izvravanje nekih dogaaja kao to je npr. dodavanje podataka u bazu podataka, izvravanje aritmetikih izraunavanja ili nekih sloenijih obrada podataka i slino. Iako ova kontrola moe pokrenuti razliite dogaaje, kada se doda

22

Objektno orijentisano programiranje

na formu aplikacije i pokrene editor za kod pojavljuje se podrazumevani dogaaj Click (slika 2-4)

Slika 24: Ilustracija programskog koda za dogaaj Click dugmeta na formi

3. Polje za potvrdu (CheckBox) Prua mogunost da se na odreeno pitanje odgovori sa YES (da) ili NO (ne). 4. Polje za tekst (TextBox) Druga najee koriena kontrola je polje za tekst. Slui za rad sa promenljivama. Moe se koristiti i za tekst sa mnogo redova. Ako je tekst toliko dugaak da prevazilazi veliinu okvira TextBox-a, onda okvir moe imati sopstvene trake za pomeranje. Uneti podaci (tekst) u ovom polju mogu da se obrauju, za razliku od Label-a. 5. Kontrole za prikaz teksta (Label) Pomou ove kontrole prikazujemo tekst u naoj aplikaciji. Slino ovoj kontroli je i LabelLink koji daje mogunost primene hiperlinka. Slui za oznaavanje kontrole i drugih delova obrasca. One samo saoptavaju neto, ali tekst unet u njih se ne obrauje. 6. Lista (ListBox) To je lista stavki unutar okvira. 7. Polje za grafiku (PictureBox) Ova kontrola ima vie mogunosti: ona moe sluiti kao kontejner (slino frame-u), zatim reaguje na odreen skup dogaaja i konano takoe podrava razliite formate slike.

Objektno orijentisano programiranje

23

Pogodna je kada se radi o aplikacijama koje koriste programski interfejs (API). 8. Okvir (GroupBox) Upotrebljava se za razvrstavanje kontrola u logike grupe, ime one postaju preglednije. Istovremeno omoguuju i rad sa ovom kontrolom. Pored toga oni su i kontejner i tako su i grupisani. 9. Dugme opcije (OptionButton ili Radio buttons) Funkcionisanje OptionButton-a je slino starim radio-aparatima u kolima. Samo pritisnuto dugme moe biti aktivno. Pritiskom na drugo dugme, trenutno aktivno dugme se iskljuuje i ukljuuje se odabrano dugme. Znai u pritisnutom stanju moe biti samo jedno dugme. Druga bitna stvar je da na obrascu moe postojati vie grupa ovih kontrola. U tom sluaju oni se razdvajaju okvirima. Tada je mogue odabrati opciju i u jednoj i u drugoj grupi. 10. Padajua lista (ComboBox) Ova kontrola objedinjuje funkcije kontrole ListBox i TextBox. Korisnik ga upotrebljava tako to iz padajue liste bira podatak (stavku), koji se zatim unosi u okvir za tekst. Postoje tri razliita stila ComboBox-a: Obina padajua (Dropdown list) korisnik moe da bira sa liste ali ne moe da unosi tekst za tu namenjenu kontrolu, Jednostavna kombinovana lista (Simple Combo) korisnik moe da upie svoj izbor, ali je lista i dalje otvorena. Kombinovana padajua lista (Dropdown Combo) Kombinuje padajuu listu i unos teksta svog izbora. 11. Horizontalna (HScrollBar) i 12. Vertikalna traka za pomeranje (VScrollBar) Koriste se za pomeranja po kontroli, i to najee u okviru za tekst. 13. Povezivanje sa podacima (Data) Omoguava pristup bazama podataka

24

Objektno orijentisano programiranje

Na slici 25 prikazane su ostale grupe kontrole od kojih su istaknute grupe: kontrole za rad sa menijima kontrole za rad sa podacima i i sl.) kontrole za rad sa dijalozima - (slue za otvaranje, uvanje datoteka

Slika 25: Prikaz ostalih grupa kontrola kao to su kontrole za rad sa menijima, podacima, komponentama, dijalozima itd.

Objektno orijentisano programiranje

25

Pokretanjem novog projekta otvara nam se novi prozor, prikazan na slici 2 6, pri emu se odabira alat kojim se radi i ta e da se radi npr. izrada aplikacije. Po otvaranju prozora za kreiranje novog projekta, ponuena nam je aplikacija, naziv (engl. Name), u ovom sluaju je WindowsApplication1 koji se moe promeniti po elji.

Slika 26: Pokretanje novog projekta za izradu nove aplikacije

Nakon odreivanja naziva aplikacije i pritiskom na dugme OK otvara se sledei prozor (slika 27) gde je posebno naznaen Prozor svojstva Properties.

2. 4 Prozor svojstava
Kontrole pri kreiranju programa u Visual Basic-u predstavljaju objekte. Svaki objekat, slino bilo kojem objektu realnog sveta, poseduje odreene karakteristike, osobine.

26

Objektno orijentisano programiranje

Primera radi osobine cvea su boja, veliina, oblik, vrsta i slino. Pored toga, svaki objekat moe da ispoljava odreeno ponaanje, izvesti neku akciju. Tako i nad objektima se mogu desiti neke akcije. Spomenute osobine se zovu svojstva (properties), a akcije nad objektom metode (methods). Prilikom programiranja panju emo usmeriti najvie na svojstva, jer je neophodno da ih paljivo pregledamo i odredimo kod svakog objekta. Podeavanje se vri u prozoru svojstva (properties) to se nalazi na desnoj strani ekrana i izgleda kao na slici 2 8.

Slika 27: Polazni ekran za kreiranje nove aplikacije

Objektno orijentisano programiranje

27

Prozor svojstva (properties) sadri kategorije kao to su : Pristupanost (Accessibility) Izgled (Appearance) Ponaanje (Behavior) Data Dizajniranje (Design) Itd.

Slika 28: Prozor svojstva

2.5 Jo neki prozori u VB.NET-u...


Database Explorer za upravljanje bazama podataka kako lokalno tako i u mrei. Tu se vri konekcija sa bazom podataka. Prozor Design ili kako ga inae nazivaju dizajner slui za izradu korisnikog interfejsa. Kao to je ve reeno interfejs se crta. Osim toga tu se ispituje i kod. Solution Explore prozor koji prikazuje hijerarhijski pregled reenja programa. (Sadri: projekte, kodove i ono to reava neke probleme).

28

Objektno orijentisano programiranje

Slika 29: Prozori koji se mogu koristiti u radu sa VB.Net-om

Prozor task list pokazuje greku prilikom pokretanja koda. U ovom prozoru se bira stavka koja dovodi do reda koda gde se nalazi greka. Pogled Class (pojavljuje se u Solution Explorer-u kao kartica) prikazuje hijerarhije klasa sa osobinama i svojstvima koje poseduju. Klasa obuhvata podatke i funkcije koje manipuliu sa njima inei jednu celinu. Svojstva su podaci a metode funkcije odnosno pod programi. Prozor Output javlja se kao rezultat pokretanja koda. Dynamic Help (dinamika pomo)- nalazi se u krajnjem donjem desnom uglu celokupnog obrasca koji moe pruiti pomo u toku izrade aplikacije. Odabiranjem bilo ega u IDE, moe se videti lista stavki koji se odnose na odabrani objekat.

3. FUNKCIONISANJE RAUNARA
Digitalni raunar predstavlja univerzalno sredstvo pomou kojeg reavamo niz razliitih zadataka. Metoda koja dovodi do efektivnog reenja postavljenog zadatka zasniva se na izvoenju skupa logikih, aritmetikih i transportnih operacija. Rezultat ove metode je opte reenje, koji sadri niz koraka, a na osnovu ega se pristupa reavanju zadatka pomou raunara. Zahteva se da postupak pronalaenja opteg reenja, koji ima sledee osobine: uoptenost to se odnosi na mogunost reavanja bilo kog zadatka; osobine odreenost zadatak mora biti razumljiv i taan, bez mogunosti da se proizvoljno tumai i rezultativnost pod kojim se podrazumeva da dovodi do reenja nakon odreenog broja koraka. Postupci koji se odlikuju ovim osobinama se zovu ALGORITMI. Od njih nastaju programi, kada se pojedini koraci postupka reavanja ralanjenih na elementarna dejstva predstave, pomou raspoloivog skupa instrukcija (osnovnih operacija) raunara. Osim ovih osobina algoritmi treba da zadovolje sledee uslove: Definisanost - svaka operacija ili pravilo mora imati definisano i samo jedno znaenje, tj. rezultat svake operacije mora biti jasno definisan.

30

Objektno orijentisano programiranje

Diskretnost - jedan algoritamski korak se obavlja u jednom vremenskom intervalu. Konanost mora da postoji odreen, konaan, broj koraka algoritma. Efikasnost - odreena je brzinom i jednostavnou algoritma. Elementarnost jednostavna pravila za dobijanje izlaznih veliina na osnovu ulaznih veliina, u svakom algoritamskom koraku. Usmerenost za svaki skup ulaznih veliina postoji definisan rezultat Univerzalnost razliiti ulazni podaci dovode do odgovarajuih rezultata. Elastinost primenljivost algoritma na razliite varijante izvornih podataka. Programi mogu biti jednostavni ili sloeni u zavisnosti od broja osnovnih operacija. Bitno je istai da savremeni raunari mogu izvesti i do nekoliko milijardi operacija u sekundi. Termini koji se koristi za osnovne operacije u sferi programiranja su instrukcija, nalog, naredba i slino. Da bismo stvorili sliku o tome kako e raunar da izvede neki zadatak, koji smo mi prethodno reili i saoptili raunaru upotrebom programskog alata proviriemo u samo funkcionisanje raunara. Na slici 31 prikazan je model uproenog raunarskog sistema sa svojim komponentama. To su centralni deo raunara, ulazno/izlazne jedinice, a koji su povezani putem kanala. Centralni deo raunara sadri: 1. jedinicu za obradu podataka, 2. operativnu memoriju, 3. upravljaku jedinicu, 4. operativni sistem, Zatim slede komponente: 5. ulazno/izlazne jedinice,

Objektno orijentisano programiranje 6. periferne memorije i 7. kanali za komunikaciju

31

Na slici 31 su prikazani i tokovi podataka , programske instrukcije i instrukcije u obliku upravljakih intervencija (3).

Slika 31: Model uproenog raunarskog sistema

Kao to se i iz samog naziva ove komponente primeuje jedinica za obradu podataka, koja ima zadataka da obradi tj. da izvri aritmetike operacije kao to su sabiranje (+), oduzimanje (-) itd. U nekim sluajevima uporeuje veliine odnosno izvodi logike operacije (<, >, =,..). Ove operacije vre se na podacima koji mogu po prirodi porekla biti izvorni ili meu rezultati. Kada je nareena operacija izvrena dobija se konani rezultat. U raunaru se pored izvornih podataka, meu rezultata i rezultata, uvaju programi u operativnoj memoriji. Treba istai da je model raunarskog sistema uproen tako, da ga moe na najpovoljniji nain ematski prikazati. Program je skup instrukcija, razumljivih raunaru, putem kojih se reavaju postavljeni problemi.

32

Objektno orijentisano programiranje

Uloga upravljake jedinice da interpretira tumai instrukcije programa. Nakon toga generie upravljake impulse koji se prosleuju odreenim komponentama nalaui im da izvre odreene zadatke. Pored toga upravljaka jedinica nadzire i usaglaava rad celokupnog sistema. Kanali odnosno procesori za komunikaciju obezbeuju komunikaciju izmeu perifernih jedinca i centralnog dela raunara. Isto tako i omoguuju razmenu podataka i instrukcija operativne memorije sa ostalim delovima. Ova komponenta upravlja radom perifernih jedinica, tako to osnovne upravljake naredbe dobija od upravljake jedinice, dok ostalim delom upravlja sam. Ovi kanali su prisutni samo kod velikih savremenih raunara. Kod manjih raunara ovu ulogu preuzima upravljaka jedinica. To znai da prilikom upravljanja radom i razmenom podataka perifernih memorija upravljaka jedinica je potpuno posveena tom zadatku i nije u mogunosti da obrauje podatke u centralnom procesoru. Putem ulazno/izlazne jedinice se saoptavaju podaci i programi za njihovo izvrenje kao i dobijeni rezultat. I poslednja komponenta modela raunarskog sistema prikazanog na slici 31 je periferna memorija. Ona je neophodna u sluaju kada nema mesta u operativnoj memoriji ili ako elimo da sauvamo podatke na posebnim medijima, pa se podaci memoriu u cilju zatite. U nekim sluajevima pohranjuju se ak i programi eksterne memorijske jedinice. Prema tome, raunari su takve maine koji se mogu primeniti u razne svrhe. Pomou njih se mogu reavati razni problemi bilo da su matematikog, poslovnog ili nekog drugog porekla. Prilikom izvravanja programskih instrukcija oni obrauju podatke, to ilustruje ema na slici 32. Sa aspekta materijalnosti inioci raunarskog sistema se slino dele na materijalne i nematerijalne. Materijalni inioci se zovu hardverom i obuhvataju sve fizike komponente sistema: Operativnu memoriju Centralni procesor (aritmetika-logika i upravljaka jedinica) Periferne jedinice procesor za komunikaciju

Objektno orijentisano programiranje ulazno /izlazne jedinice periferne memorije. U nematerijalne tj. softver, spadaju: bazini i programi koji reavaju konkretne zadatke postupci i pravila (celokupno znanje raunara).

33

Slika 32: Ilustracija funkcionisanja raunara

Posebno treba skrenuti panju da tokom razvoja novih tehnologija, aritmetiko-logika jedinica i upravljaka jedinica zajedno predstavljaju centralni procesor raunara (mikroprocesor). Njihovo funkcionisanje je sinhrono. Aritmetiko-logika jedinica je zaduena za izvoenje aritmetikih i logikih operacija, dok upravljaka jedinica odreuje koje e operacije realizovati aritmetiko-logiku jedinicu. Takoe nalae i nad kojim podacima e te operacije biti izvrene, pri emu interpretira zadate instrukcije. Instrukcije (programi) i poetni podaci saoptavaju se raunaru putem tastature i mia ili iz nekog drugog izvora podataka (ULAZNA JEDINICA) i smetaju se u MEMORIJSKU JEDINICU raunara. Memorija se sastoji od niza numerisanih elija radi pronalaenja pohranjenih informacija. Mesto pohranjenih informacija u memoriji odreeno je rednim brojem elija ili kako se to u raunarskoj terminologiji zove memorijske adrese. U elijama memorije informacije se uvaju u obliku instrukcija ili podataka. Podaci mogu biti:

34

Objektno orijentisano programiranje ulazne veliine, meu rezultati (delimino obraeni podaci) i/ili konani rezultati.

Izvravanje instrukcija se ne odvija nasumice. Postoji unapred odreeni redosled izvravanja instrukcija koji je odreen programom. Program sadri sled instrukcija definisan algoritmom. Instrukciju, upravljaka jedinica, pronalazi po odgovarajuoj adresi, odnosno u eliji, gde je bila smetena. Njen zadatak je da sprovede instrukciju. Nakon interpretacije instrukcije nalae aritmetiko-logikoj jedinici da obradi podatke, pri emu dobijene rezultate upravljaka jedinica smeta u odreenu memorijsku eliju. Zatim upravljaka jedinica prelazi na interpretiranje druge instrukcije i na njenu realizaciju, pa na treu itd. Rezultati obrade saoptavaju se krajnjem korisniku putem IZLAZNIH jedinica, u koje spadaju monitor, disketni pogoni, CD/DVD ili tampai.

3.1 Uloga raunara u poslovanju


Istorijska razdoblja se mogu deliti u zavisnosti od aspekta posmatranja. Jedna od podela je i u odnosu na ljudske aktivnosti i razvoja sredstva za rad. Razdoblja koja su nastala su: poljoprivredno drutvo, nakon ega sledi industrijsko drutvo, sa pojavom i primenom parne maine. Pre neto oko pola veka nainjen je sledei revolucionarni korak u razvoju sredstava za rad. Pojavljuje se raunar, ijem je rasprostranjenom primenom ljudsko drutvo zakorailo u informatiko doba. Orua za rad nastala su sa ciljem da se olaka ovekov rad. Prema tome i raunar je sredstvo za rad isto kao i svaka druga maina, alat ili ureaj. Slino svim drugim oruima za rad i on poseduje odreene osobine koje treba da pogoduju oveku kada izvodi odreene radnje ili aktivnosti. Uporedo sa tim postoji jo i cilj, ili, moemo rei tenja, da se proces rada ubrza i ujedno da se pobolja kvalitet rada. Sa ovog stanovita raunar poseduje osobine kao to su: velika brzina, tanost, sposobnost uvaavanja velikog broja kriterijuma, neprekidan rad bez zamora,

Objektno orijentisano programiranje izuzetna mo pamenja, objektivnost (radi bez emocija).

35

Kada elimo da koristimo neko sredstvo za rad moramo biti svesni njegovih ogranienja, kao to su fizika, tehnika i eksploatacijska ogranienja. Druga znaajna stvar u vezi primene sredstava rada je poznavanje funkcionisanja tog orua. Dodue savremeni programski alati su toliko napredovali da nije potrebno do detalja poznavati svaku komponentu, ali na nekom globalnom nivou to je ipak potrebno. Odgovor na pitanje zato je to potrebno proizilazi od samog naina upotrebe bilo kog aparata. Vano je zbog poznavanja naina aktiviranja i mogunosti upravljanja oruem za rad. Sve ovo vai i za raunar poto spada u sredstva za rad. Raunar je maina ija je svrha da obavi odreeni zadatak putem primene i izvravanja niza instrukcija. U cilju da se u potpunosti iskoristi njegova osnovna osobina velika brzina neophodno je odabrati one instrukcije tj, ona upravljaka uputstva, kojima bi se skratilo dugo vreme ekanja prilikom izvrenja. To znai da program koji se izvrava treba da bude razumljivog oblika u raunaru. Program nije unapred ugraen u raunar, kao u veini automatizovanih orua za rad, ve se formira u zavisnosti od poslovnih potreba. On se pie u odgovarajuem programskom jeziku, koji se zatim prevodi na razumljiv oblik raunara, mainski jezik. Iz ovoga proistie da u primeni raunara u prvi plan dolazi njegovo programiranje, a to opet zahteva neka elementarna znanja o raunaru. Kao sredstvo za rad i raunar ima svoju svrhu upotrebe. Sa jedne strane ovek kada ga primenjuje eli da proiruje svoju intelektualnu snagu, dok sa druge strane eli da se oslobodi mnogih zamornih i dugotrajnih poslova. U prethodnom poglavlju je ve bilo rei o tome da raunar moramo osposobiti, nauiti poslu koji elimo da obavi umesto oveka. Da bi raunar izvrio postavljene zadatke mora postojati niz instrukcija koji e ga navoditi na reenje. Te instrukcije daje ovek. Znai da ovek sa svojom centralnom ulogom mora sagledati problem, analizirati ga i veoma precizno isplanirati postupak reavanja. Zatim je potrebno to reenje pretoiti u niz programskih instrukcija. Sledei korak je saoptavanje reenja u obliku programskog koda raunaru, koji e doslovce da prati svaku saoptenu instrukciju. Naravno, instrukcije se saoptavaju na odgovarajuem jeziku, odnosno, jeziku koji raunar razume. To je veoma vano jer raunar

36

Objektno orijentisano programiranje

izvodi mainske instrukcije, a te instrukcije su u binarnom kodu. Raunar obrauje podatke putem nule i jedinica. Ovakav binarni oblik rada je veoma sloen za oveka, pa je reenje naeno u korienju prevodioca. Tako sada ovek saoptava programske instrukcije na jeziku koji je za njega mnogo blii, a raunar ih ipak obrauje u binarnom kodu. Ovako opisana obrada podataka izgleda veoma jednostavna, ali u mnogim sluajevima, raunar ne dolazi jednim korakom do reenja. Nekada izvrava veoma sloene instrukcije. Po dosadanjem objanjenju videli smo da pri funkcionisanju raunarskog sistema nastaju rezultati obrade podataka. Takoe moe postojati i meu rezultat. On e se obraivati u kasnijim procesima obrade podataka. Zavretkom obrade, rezultati se saoptavaju korisniku. Iz ovoga sledi da pri pripremi postupka reavanja nekog problema moramo voditi rauna ne samo o samom postupku ve i planirati prostor za pohranjivanje podataka (bilo ulaza/izlaza ili meu rezultata), odnosno projektovati funkcionalno reenje. Iako ovo izgleda veoma banalno u dananje vreme kada postoje personalni raunari sa memorijama reda veliine tera bajta, a kamoli ono to mogu obezbediti umreeni raunari, ipak prostorno planiranje memorisanja podataka ima znaaja u praksi. Dobro isprojektovan sistem omoguuje bolje performanse, pogotovo kada su u pitanju projektna reenja za velike sisteme.

3. 2 Reavanje problema bez ogranienja


Kada se pone sa objanjenjem ta je programiranje, i kako se pri tome izvravaju instrukcije najee odmah se uranja u savremene pristupe programiranja zaboravljajui neke fundamentalne stvari. To elementarno znanje je ono na koje se grade ak i svi savremeni pristupi. Zato emo se radi bolje ilustracije kako raunar obrauje podatke malo vratiti u drevna vremena programiranja. Poeemo od jednostavnog primera. Sada emo raunar posmatrati kao jednostavni kalkulator koji treba da izvri odreenu aritmetiku operaciju. Ulazne veliine brojeve saoptiemo putem tastature, a rezultat e se pokazati na ekranu. Analiziraemo jednostavan problem: sabiranje tri broja. A+B+C=Z Za izvoenje operacije sabiranja treba predvideti odgovarajui prostor za brojeve A, B i C. Vano je napomenuti da u mainskoj obradi

Objektno orijentisano programiranje

37

podataka postoje ogranienja: odjednom se moe sabrati samo dva broja tj. argumenta. Znai, imaemo jedan meu rezultat koji moe biti: A+B ili A+C ili B+C i to u zavisnosti od toga za ta emo se odluiti da bude prvi ulazni element. Dobijeni meu rezultat se takoe smeta u operativnu memoriju. On je neophodan za sledei korak sabiranja. Predvieni prostor u operativnoj memoriji za meu rezultat oznaiemo sa D. D=A+B ili D=A+C ili D=B+C Do sada smo izloili samo matematiki postupak, ali za ceo postupak raunanja mi moramo saoptiti podatke raunaru. Isto tako i on nama mora prikazati reenje problema. To se postie davanjem odreenih instrukcija. REZULTAT predvianja reavanja problema: kako e se izvriti komunikacija raunara i oveka, zovemo PLAN OPERATIVNE MEMORIJE. Njime predviamo kako e se podaci saoptiti raunaru, na koji nain e se rezultat prikazati na ekranu, kako e se zadatak izvriti u raunaru, koji su prostori potrebni za izvorne podatke, meu rezultate i rezultate. Slika 33. ilustruje plan operativne memorije za sabiranje tri broja. Kada postoji ve plan operativne memorije moemo i da ponemo sa reavanjem zadatog problema.

Slika 33.: Plan operativne memorije za sabiranje tri broja

38

Objektno orijentisano programiranje

Sledee pitanje je koje predznanje treba da imamo o samom zadatku. Prvenstveno treba da smo upoznati sa kojim brojevima e se izvriti aritmetika operacija. To je vano razjasniti, jer raunar izvodi operacije sa konkretnim brojevima, a mi to moramo saoptiti raunaru, tj. da ih definiemo. Postupak saoptavanja se zove davanje instrukcija raunaru, to je oznaeno na slici 33 sa strelicama. Za konkretni primer imamo tri instrukcije za itanje podataka:

Ovo su izvorni podaci, odnosno konkretni brojevi koje elimo da saberemo, a koje uitavanjem smetamo u operativnu memoriju. Sada nailazimo na problem sabiranja. To moemo izvesti na vie naina:

Z=(A+B)+C Z=(B+C)+A Z=(A+C)+B


Shodno tome i instrukcije mogu initi tri razliita skupa:

Objektno orijentisano programiranje Slika 34 prikazuje ostala dva skupa moguih instrukcija.

39

Slika 34.: Prikaz moguih instrukcija u planu operativne memorije

40

Objektno orijentisano programiranje

Kada reavamo problem mi razmatramo sva mogua reenja od kojih emo odabrati najpogodniji za primenu u raunaru. U ovom sluaju nije toliko vano koji emo skup instrukcija da odaberemo, jer je nain reavanja isti, pa emo odabrati instrukcije d i e. Kada izvrimo instrukciju sabiranja d stvara se meu rezultat koji smetamo u predvienu lokaciju D. Zatim sabiramo meu rezultat i broj C, to se izvodi instrukcijom e i smeta se u polje Z. Sada jo ostaje da se dobijeni rezultat saopti krajnjem korisniku, to je na slici 34 oznaeno sa instrukcijom j. Ako bolje pogledamo sliku 34 vidimo da odabrane instrukcije {a, b, c, d, e, j} ne moemo izvesti bilo kako. Tu postoji odreeni redosled. Izmeu instrukcija se javlja zavisnost, jer raunar, kako smo ve spomenuli, obavlja aritmetiku operaciju sa konkretnim brojevima. Da bi polje D (meu rezultat) mogao da se sabere sa treim brojem, neophodno je da se saberu prethodna dva broja. Ako je polje D prazno raunar nema ta da doda broju C. Znai, instrukcija d ne moe biti izvrena pre nego to su izvrene instrukcije a i b. Slino je i sa instrukcijom e , pa i sa instrukcijom j. Za izvrenje instrukcije e neophodno je izvriti instrukciju itanja treeg broja i sabrati sa meu rezultatom. Zakljuak je da meu instrukcijama postoji uslovljenost. Iako na ovom primeru to deluje prilino lako, kod sloenih problema uoavanje uslovljenosti je nekad presudno za uspeno izvoenje programskih instrukcija. Uslovljenost meu instrukcijama moemo prikazati grafikim putem usmerenog grafa. Ovaj jednostavan instrument za prikazivanje uslovljenosti sastoji se od lukova i vorova. vorovi su instrukcije, a lukovi (usmerene strelice) koje pokazuju uslovljenost meu njima. Usmereni graf naeg odabranog skupa instrukcija za sabiranje tri broja, prezentovan je grafiki na slici 35.

Slika 35.: Graf uslovljenosti sabiranja tri broja

Objektno orijentisano programiranje Simboli koji se koriste za prikazivanje grafa su sledei:

41

Verovatno e se svako zapitati zato je potreban graf uslovljenosti instrukcija kada se jednostavno moe napisati programska instrukcija. Zato to sa jedne strane sintetizuje sve zavisnosti, pa se oni putem crtea lako uoavaju. Sa druge strane pomou njega uoavamo skup moguih instrukcija. Ako ne postoji meuzavisnost instrukcija tada je potpuno svejedno kojim redosledom emo te instrukcije izvriti, kao na primer kod unosa izvornih podataka (uitavanje brojeva): a, b, c a, c, b b, a, c b, c, a c, a, b c, b, a Iz ovoga sledi da postoji est moguih skupova instrukcija za uitavanje brojeva. Kod instrukcija c i d takoe nema meuzavisnosti. Tako dobijamo ukupno osam moguih redosleda izvoenja instrukcija:

42

Objektno orijentisano programiranje

Slika 36.: prikaz moguih redosleda izvoenja instrukcija

Kada imamo uvid u mogunosti izvoenja instrukcija mi raspolaemo razliitim mogunostima reavanja nekog problema. Na nama ostaje da odaberemo najadekvatniji skup instrukcija. Kako emo to uraditi? Kako emo znati da smo odabrali ba najbolje reenje? Postoje razliiti kriterijumi odabira reenja i oni zavise od postavljenih zahteva. Moe biti u pitanju npr. brzina izvoenja. Meutim, nekada nam nee ni biti vano koje reenje emo odabrati. U tom sluaju je jedino vano da se zadatak obavi. I na kraju odabiranjem adekvatnog reenja dolazimo do GRAFA ALGORITMA, prikazanog na slici 37. Pri tome ostala reenja nas vie ne interesuju. Poto je ovde izneta samo osnovna logika razmiljanja kreiranja reenja ali ne i realizacija programskog reenja, sada emo pogledati kako tu logiku i da primenimo praktinim radom.

Objektno orijentisano programiranje

43

Slika 37.: Graf algoritma sabiranja tri broja

Pokretanjem novog projekta zapoinjemo kreiranje programa. Pojavljuje nam se prazna forma (Form1) kao to je to prikazano na slici 38. Na formu se smetaju sledee kontrole iz kutije sa alatkama (Toolbox-a): 1. dve kontrole za prikaz teksta (Label), 2. etiri polja za unos brojeva (Textbox), 3. jedno dugme (Button) za izvravanje operacije sabiranja U kontrolu za prikaz teksta unosi se obavetenje za korisnika ta treba da uradi i ta je ishod operacije sabiranja. Ispod toga su smetena polja za unos tri broja koja treba da se saberu i jedno polje za prikaz rezultata. I na kraju na formu se nanosi dugme ija uloga je da realizuje operaciju sabiranja.

44

Objektno orijentisano programiranje

Slika 38: Program za sabiranje tri broja

Kontrole predstavljaju objekte. Obzirom da se radi o objektno orijentisanom programiranju sledi podeavanje njihovih svojstava u prozoru svojstava. Tabela 31. sadri spisak svojstva koja su podeena za kontrole kao to je naziv, tekst i font.
Tabela 31: Svojstava kontrola programa za sabiranje tri broja

Kontrole Textbox1 Textbox2 Textbox3 Textbox4 Label1 Label2 Button

Naziv Name) txtA txtB txtC txtZ

Tekst (Text)

Font (font) Microsoft Sans Serif; 12pt Microsoft Sans Serif; 12pt; style=Bold, Italic Microsoft Sans Serif; 12pt; style=Bold, Italic Microsoft Sans Serif; 12pt; style=Bold, Italic

Prazno Unesite tri broja Rezultat

btnSabiranje

Operacija sabiranja

Kada su podeena svojstva, pristupa se pisanju koda. Kao to je ve reeno ta treba na program da uradi, to mi treba da mu saoptimo i to putem programskih instrukcija. U Visual Basic.Net-u to ostvarujemo tako to dvo-klikom na odabranu kontrolu otvorimo editor koda. U konkretnom sluaju to je dugme na formi (slika 38), i zadajemo sledee programske instrukcije:

Objektno orijentisano programiranje

45

U skladu sa karakteristikama programskog alata Visual Basic.Net-a prilikom otvaranja editora za kod pojavljuje se editor oblika prikazan na slici 39.

Slika 39: Editor koda

46

Objektno orijentisano programiranje

U delu gde se nalazi pod programska procedura Private Sub i End Sub unosimo nain kako emo sabrati tri broja, i to za sluaj kada se oni unose u pojedinana polja.
Private Sub ..... End Sub

Poto je u ovom alatu omogueno da se izvri cela operacija sabiranja i jednom koraku i to: A+B+C=Z onda to moemo i zadati tako. Ali ako pogledamo uoiemo da postoji jo niz programskih redova osim navedenog za sabiranje. Da bi to bilo omogueno, prvo moramo predvideti prostor za unos promenljive tj. polja: txtA, txtB, txtC i txtZ (slika 310). Zatim da bi raunar mogao da radi dalje sa njima poto smo uneli brojeve u tekstualna (znakovna) polja moramo ih smestiti u promenljive definisane u kodu A, B, C kao i Z za prikaz rezultata. Oni se odnose na preuzimanje i smetanje promenljivih za dalji rad. Najpre se deklariu promenljive, a zatim se navodi programski kod za preuzimanje vrednosti: Dim A As Single A = txtA.Text Kada su brojevi sabrani dodeljuje se vrednost smetena u Z polju pod nazivom txtZ.

Objektno orijentisano programiranje

47

Slika 310: Prostor za unos brojeva i odreivanje naziva polja

3. 3 Reavanje problema sa ogranienjima


U prethodnom delu razmatrali smo problem sabiranja tri broja kada nije postojalo nikakvo memorijsko ogranienje prostora. Za svaku instrukciju imali smo po jedno polje obezbeeno. Isti ovaj problem sada emo reavati kada nam je maksimalno ogranien prostor za podatke. U ovom sluaju na raspolaganju su nam samo dva memorijska polja U i S. Mi takoe imamo da uitamo tri broja (A,B,C) ijim sabiranjem se stvara meu rezultat i konani rezultat. Broj meu rezultat nam je zasad nepoznat. Pre nego to pristupimo reavanju neophodno je istai da se memorijsko polje svaki put prazni pri prihvatanju nove vrednosti. To znai da ako rezultat sada smetamo u neko polje ono e izgubiti prethodnu vrednost i bie preklopljen vrednou koja je poslednja uneta.

48

Objektno orijentisano programiranje

Onda emo odabrati jedno polje za unos podataka, recimo U. Meu rezultat i rezultat smestiemo u polje S. Neka A ima vrednost 6 (A=6). Tada uitavanjem broja A u raunar polje U e imati vrednost 6. Postavlja se pitanje ta dalje? Mi nemamo vie polja da uitamo i drugi broj, broj B=2, i nemamo tree polje za smetanje meu rezultata. Na raspolaganju nam je samo jo polje S. Sada nam ostaje mogunost da ovo reimo uvoenjem aritmetike operacije u ovom primeru sabiranje pre svakog narednog itanja podatka. Tada polje S dobija vrednost 6 i moemo uitati broj B (B=2). Polje U dobija vrednost 2, a u narednom koraku prenosi se u polje S. Jednostavnim prenosom prethodna vrednost S (S=6) bi se gubila, ali uvoenjem sabiranja ona dobija vrednost 8. Nain izvoenja ovih operacija se moe se napisati kao: S=S+U a ematski prikaz sabiranja u sluaju ogranienja ilustruje slika 311.

Slika 311.: Ilustracija sabiranja tri broja u sluaju memorijskog ogranienja

Ovo matematiki nije ispravno. Znak jednakosti = ovde ne znai jednako, ve predstavlja instrukciju smetanja neke vrednosti u S. Matematika formula ovog problema bi bila: Sn+1=Sn+U gde je S niz. Sn je opti lan, a Sn+1 je naredni lan niza. Matematiki gledano naredni lan niza jednak je zbiru prethodnog lana niza. Plan operativne memorije za izvoenje raunske operacije sabiranja tri broja sa maksimalnim ogranienjem (dve lokacije) se moe prikazati kao na slici 312 na kome postoji niz instrukcija:

Objektno orijentisano programiranje

49

Vrednost polja S neophodno je postaviti na nulu pre izvoenja aritmetike operacije, zbog toga to se konani rezultat ne prazni iz tog polja. U sluaju da ponovo elimo da saberemo tri broja, sa sasvim novim vrednostima sabrae se i prethodno dobijeni konani rezultat. Dodeljivanjem poetne vrednosti polju S nulira se njegov zbir na poetku sledeeg sabiranja. Sada kada je polju S dodeljena vrednost nula moe da se pristupi unosu izvornih podataka. Instrukcijom b smeta se prvi broj u lokaciju U. Naredna instrukcija koja sledi je c, putem kojeg se izvodi aritmetika operacija sabiranja. Ako je prvi broj bio 2 onda vrednost S postaje takoe 2.

Slika 312.: Instrukcije za sabiranje tri broja sa maksimalnim memorijskim ogranienjem

50

Objektno orijentisano programiranje

Sledei broj koji treba sabrati je 6. Instrukcijom d se taj broj unosi u lokaciju U. Sabiranje vrednosti polja U sa prethodnom vrednou u S se izvodi instrukcijom e, pa je vrednost polja S osam: S=2+6=8. Neka je vrednost poslednjeg broja 15. Tada dodavanje poslednjeg broja poinje instrukcijom f za smetanje poslednjeg broja u lokaciju U. Izvrenjem instrukcije g formira se konani rezultat sabiranja. Poto S sadri prethodno dobijeni meu rezultat 8, na taj broj se dodaje 15, pa je S=8+15=23. Konani rezultat se saoptava korisniku instrukcijom h koja daje naredbu za ispisivanje na ekranu. Grafiki prikaz meuzavisnosti skupa instrukcija {a,b,c,d,e,f,g,h} je dat na slici 313, gde instrukcije zaokruene isprekidanim linijama predstavljaju vezane instrukcije. to znai da posle instrukcije f mora nastupiti izvrenje instrukcija g. Graf uslovljenosti prikazuje opte reenje zadatog problema, gde je broj konkretnih reenja est, i to u zavisnosti od redosleda instrukcija koji su oznaeni brojevima na slici 314.

Slika 313.: Graf uslovljenosti instrukcija sa maksimalnim memorijskim ogranienjem

Objektno orijentisano programiranje

51

Slika 314.: Prikaz moguih reenja sabiranja tri broja sa memorijskim ogranienjem

Iako algoritam za sabiranje tri broja (slika 315) prikazuje prvu varijantu konkretnog reenja neophodno je skrenuti panju na to, da ovaj algoritam vai za bilo koju varijantu.

52

Objektno orijentisano programiranje

Slika 315.: Graf algoritma za sabiranje tri broja u sluaju memorijskog ogranienja

Ako paljivije analiziramo graf algoritma na slici 315, moemo uoiti jo neke detalje. Upadljivo je ponavljanje instrukcija {c,e,g} i instrukcija {b,d,f}. Raunar svaki put ponavlja instrukciju itanja i sabiranja, ime nastaju odreena pravila u izvoenju operacije sabiranja. Kao zakljuak moemo rei da poetni uslovi postavljaju ogranienja u reavanju zadatih problema. Uporeenjem reenja sabiranja tri broja na dva naina sa i bez prostornog ogranienja primeuje se da se broj lokacija smanjilo sa 5 na 2. Usled toga broj reenja se takoe smanjilo sa 24 na 6, ali se broj instrukcija povealo sa 6 na 8. Ako sada pristupimo reavanju zadatka pomou Visual Basic.Net-a, moe se uoiti da reenje odudara od konvencionalnog proceduralnog pisanja programa u samoj realizaciji programskih kodova, ali ne i od logike reavanja zadatka. Na slici 316 prikazano je reenje pomou alata za objektno orijentisano programiranje.

Objektno orijentisano programiranje

53

Slika 316.: Sabiranje brojeva sa ogranienim prostorom za smetanje brojeva

Predviena su dva tekstualna polja: jedan za unos brojeva i jedan za prikaz rezultata. Na formi su uneta i dva dugmeta: Clear za poetak novog sabiranja i dugme Sabiranje za realizaciju aritmetike operacije. Osim toga forma sadri i nekoliko kontrola za prikaz teksta (Label), poto moramo korisniku naznaiti i ta treba gde da uradi i gde e se prikazati rezultat. Na formi se u ovom reenju nalaze jo dve labele (slika 317) da bi se videlo ta se deava u pozadini, odnosno da se vizuelno prikae kako raunar obavlja proces sabiranja.

Slika 317: Kontrola (Label) koja prikazuje smetanje vrednosti u S

54

Objektno orijentisano programiranje

Nakon kreiranja forme odnosno izrade poetnog ekrana za unos i predvienog naina prikazivanja rezultata obrade, slede instrukcije za obradu podataka. Dvo-klikom na dugme Sabiranje ulazimo u editor za kod i u delu Public definiemo promenljive. Zato ne delu pod programa i zato na celokupnom nivou, bie detaljnije razmatrano kasnije, za sada je bitno da su promenljive definisane. Public Class Form1 Inherits System.Windows.Forms.Form Dim S As Single
Dim U As Single

U narednom, za proceduru koja se odnosi za izvravanje dogaaja vezanih za dugme Sabiranje, dodaju se sledei programski kodovi prikazani u oznaenom delu:
Private System._ Sub btnSabiranje_Click(ByVal sender As

Object, ByVal e As System.EventArgs) Handles_ btnSabiranje.Click za prikaz sadraja polja U U = txtU.Text za prikaz sadraja polja S nakon unosa vrednosti u polje u lblS.Text = S Dodavanje vrednosti S i prikaz rezultata S = S + U txtS.Text = S End Sub

Objektno orijentisano programiranje

55

Na formu je dodato jo jedno dugme (Clear) koji ima ulogu da brie sadraj polja i da postavlja S na nulu, a to se postie sledeim kodovima:
Private Sub btnClear_Click(ByVal sender As System._ Object, ByVal e As System.EventArgs) Handles_ btnClear.Click S = 0 txtS.Clear() txtU.Clear() lblS.Text = S End Sub

Sve ovo dovodi nas do toga da sumiramo ta pri reavanju problema posredstvom raunara moramo potovati. Postoje odreena pravila kojih se moramo pridravati bez obzira na alat kojim baratom. 1. Prvo pravilo koje ne smemo da izgubimo iz vida jeste da raunar obrauje samo konkretne podatke. 2. Oni se mogu saoptiti na vie naina raunaru, to se opet reflektuje na izdavanje instrukcija (Pogotovu je to olakano sa savremenim pristupima u projektovanju programskih reenja). 3. Reavanje problema i pisanje rezultata je mogue samo ako se obezbedi i prostor za smetanje izvornih podataka, meu rezultate i rezultate u operativnoj memoriji. 4. U sluaju aritmetikih operacija mogue je dobijene rezultate smestiti i u prostor predvien za izvorne podatke. 5. Iz ovoga sledi da itanjem vie podataka u isto polje, prethodni sadraj tog polja se ponitava. 6. I na kraju neophodno je saoptiti rezultat korisniku.

56

Objektno orijentisano programiranje

Postoje i niz drugih pravila o kojima moramo voditi rauna, ali smo ovde istakli samo neke elementarne. Navedeni su samo neki od naj znaajnijih pravila koji se potuju nezavisno do programskog jezika. Drugo, pri reavanju nekog problema preporuljivo je sagledati problem i reavati ga sistematino i postupno. Osvrnuemo se ponovo na prethodna dva primera. ta je bilo zajedniko kod njihovih reavanja? Prvenstveno zahtevali smo neki odgovor od raunara. Zahtevali smo neko reenje. On moe da nam da odgovor samo ako smo obezbedili uslove za to. Mi treba da planiramo na osnovu izvornih podataka i naih zahteva i nae poruke, oekivane rezultate, reenja. U tu svrhu izrauje se PLAN ULAZA i PLAN IZLAZA. Planiranjem ulaza i izlaza u sutini mi definiemo kako e se odvijati komunikacija izmeu raunara i korisnika. Sledee to je potrebno izraditi je plan operativne memorije: za prihvatanje ulaznih podataka, memorisanje meu rezultata i pripremu rezultata. Ovaj plan zavisi od uslova i ogranienja koji izvire iz postojeeg problema, pa planovi mogu biti razliiti. Kada smo obezbedili polazne osnove prelazimo na izradu pregleda potrebnih instrukcija, to nam omoguava ispitivanje zavisnosti meu instrukcijama. Oni se zatim prikazuju grafom uslovljenosti instrukcija. To predstavlja opte reenje datog problema pri konkretnim uslovima i konkretnim ogranienjima. Kao to smo uoili, kod reavanja jednostavnih problema nije bila sporna uslovljenost i zadatak se mogao reiti veoma lako, ali kod veoma sloenih zadataka esto je problem tok odvijanja programa. Odreivanjem niza akcija stvaramo tok izvravanja i time smo stvorili mogunost da po odgovarajuim kriterijumima biramo jedno konkretno reenje i da ga saoptimo raunaru. Graf algoritma je prikaz konkretnog reenja.

4. LOGIKE OPERACIJE
Raunar je maina sposobna da memorie i izvrava niz instrukcija, to ga ini svestranijim od obinog kalkulatora. Izrazita razlika u odnosu na kalkulator, koji izvodi samo aritmetike operacije odrava se i u mogunosti zakljuivanja. Stremljenje ka oponaanju ovekovog razmiljanje dovodi do primene logikih operacija. Putem logikih operatora stvara se mogunost modelovanja i formalizovanja procesa miljenja. Logika je nauka koja se bavi procesom miljenja. To je nauka koja stavlja teite na miljenje kao sredstvo vrednovanja, saznanja objektivnog sveta. U osnovi bavi se procesom miljenja: koji su razlozi nekog problema, koji su zakljuci i na osnovu kojih argumenata (iskaza) su ti zakljuci nastali. Logikim procesom miljenja mi dolazimo do injenica i istine. U sutini mi tada formiramo sud o neemu. Logika kao nauka ispituje forme miljenja, njihove odnose i logike operacije. Prema tome, osnovni elementi logike su POJAM i SUD, a proces miljenja SKUP LOGIKIH OPERACIJA SA NJIMA. Logike operacije i iskazi mogu biti osnovni i sloeni.

4.1 Osnovne logike operacije


U svakodnevnom ivotu mi stvaramo miljenje o nekome ili neemu. Mi u sutini donosimo sud, tvrdimo da li je neto istinito ili ne. Na iskaz, tvrdnja, sud ne mora biti istinit, nikom osim nas.

58

Objektno orijentisano programiranje

Sada moemo rei ta je tvrdnja, sud ili iskaz. To je takva izreena ili pisana reenica koja moe biti istinita ili neistinita, ali ne moe biti istovremeno oba. Oznake logikih vrednosti iskaza su: I ili 1 za istinu i N ili 0 za neistinu. U daljem tekstu analiziraemo neke iskaze u cilju boljeg upoznavanja sa osnovama logike, pri emu emo odrediti njihovu logiku vrednost. A: Beograd je glavni grad Srbije. B: Sneg je crn. C: Rat i mir je napisao Petar Petrovi Njego. D: 4>7. E: Devojka je lepa. F: Mladi je snaan. Navedeni iskazi su osnovni logiki iskazi sa sledeim logikim vrednostima: A je istinit, B, C i E iskazi su neistiniti. U sluaju E i F ne moemo da utvrdimo logiku vrednost sve dok ne identifikujemo o kome je konkretno re. Ne moemo rei da li je devojka lepa ili da li je mladi snaan, jer ne znamo tano o kojoj devojci, odnosno o kom mladiu je re.

4.2 Sloeni iskazi


Iskazi koje smo dosada naveli su elementarni ili osnovni iskazi. Ali u realnom ivoti nije sve tako jednostavno. Mi u svakodnevnom ivotu uglavnom koristimo sloenije iskaze, sastavljenih od elementarnih. Kako oni nastaju? Pa jednostavno povezivanjem osnovnih iskaza putem logikih operatora. Ovi operatori su: konjukcija (i) disjunkcija (ili) i negacija (ne).

Objektno orijentisano programiranje

59

Sloeni iskazi takoe mogu biti istiniti ili neistiniti, ali je sada pitanje koja je njihova logika vrednost. Poto su sainjene od osnovnih logikih iskaza njihove logike vrednosti zavise od logikih vrednosti osnovnih iskaza i primenjenih operatora. Znai, sloeni iskaz je funkcija osnovnih logikih iskaza. Na datom primeru osnovnih iskaza pokuaemo da formiramo sloene iskaze: G: Pada kia. H: Danas je neradni dan. J: Danas je vana sportska utakmica. K: Danas je interesantna pozorina predstava. Sada emo skovati sloene iskaze. Kako e se oni formirati? Prvenstveno zavisie od toga da li smo ljubitelji sportskih aktivnosti ili kulturno umetnikih programa. ta emo odabrati od navedenih mogunosti zavisi i od toga da li je lep dan i da nemamo nikakve obaveze. Onda bi se nae ponaanje moglo formulisati na sledei nain: X1 ako pada kia i imam slobodan dan i postoji vana sportska utakmica, idem u sportsku halu. X2 ako ne pada kia idem u etnju. X3 ako je danas sportska utakmica ili pozorina predstava idem da gledam bar jednu od njih. X4 u sluaju da ne pada kia i imam slobodan dan idem u prirodu. Vidimo da je sloeni iskaz X1 sastavljen od osnovnih iskaza G, H i J, koji su povezani sa rei i. Ovo je logika operacija koju zovemo konjukcija.

60

Objektno orijentisano programiranje

Da bi sloeni iskaz bio istinit, poto se radi o konjukciji, sva tri osnovna iskaza moraju biti istinita. Naziv konjukcije potie iz latinske rei conjungere to znai spajati. Oznaka za konjukciju je , pa sloeni iskaz moe da se formulie i na sledei nain: X 1 = X 1 (G, H , J )

X1 = G H J
U sluaju sloenog iskaza X2 imamo samo jedan logiki operator negaciju i jedan osnovni iskaz. To je iskaz G.

Simbol za negaciju je , pa je logika vrednost X2 istinita ako je osnovni iskaz G neistinit.

X 2 = G
U sluaju iskaza X3 imamo dva osnovna iskaza J i K koji su povezani sa rei ili. Uslov da bi sloeni iskaz bio istinit dovoljno je da jedan od osnovnih iskaza bude istinit. Logika operacija u ovom sluaju je disjunkcija (disjungere lat. razdvajati) i oznaava se sa .

Iskaz X3 moemo napisati i na sledei nain: X3 = J K

Objektno orijentisano programiranje

61

Ako primenimo slina pravila prethodno obrazloenih sloenih iskaza, tada X4 iskaz sastoji se od dva logika operatora (negacije i konjukcije) i dva osnovna iskaza.

X 4 = G K
Tabele istinitosti za logike operacije Tabele istinitosti su matematike tabele primenjene u oblasti logike pomou kojih se utvruju vrednosti logikih iskaza. One daju listu svih moguih logikih vrednosti sloenih iskaza. Tabele istinitosti za razliite logike operacije objasni emo tako to emo odabrati dva osnovna iskaza A i B, koji sainjavaju sloeni iskaz. Sloeni iskaz je funkcija osnovnih logikih iskaza A i B i oznaiemo ga sa X:

X = X (A, B )
Svaki od ova dva osnovna iskaza moe imati samo dve logike vrednosti: istinito ili neistinito. Broj kombinacije njihovih logikih vrednosti je etiri: 1. kombinacija A istina 2. kombinacija A istina 3. kombinacija A neistina 4. kombinacija A neistina i i i i B istina B neistina B istina B neistina

U zavisnosti od toga koji je operator primenjen u sloenoj funkciji, razlikujemo tabele istinitosti za logiki operator konjukciju, disjunkciju i negaciju. Dalje emo videti koje su vrednosti sloenog iskaza kada je u pitanju logiki operator konjukcija. Logika vrednost sloenog iskaza je istinita samo ako su oba osnovna iskaza istinita. Sloeni iskaz je neistinit u ostalim sluajevima, to je prikazuje i tabela 41 .

62

Objektno orijentisano programiranje A 1 1 0 0 B 1 0 1 0 X 1 0 0 0

Tabela 41: Tabela istinitosti logike funkcije KONJUKCIJE

U sluaju da se radi o logikoj funkciji disjunkcije (tabela 42) logika vrednost sloenog iskaza e biti istinita ako je bar jedan osnovni iskaz istinit. Sloeni iskaz X je pogrean samo u sluaju kada su oba elementarna iskaza pogreni.

A 1 1 0 0

B 1 0 1 0

X 1 1 1 0

Tabela 42: Tabela istinitosti logike funkcije DISJUNKCIJE

Ako je u pitanju negacija funkcije X, tada je re o jednolanoj funkciji ija vrednost zavisi od vrednosti tog lana (tabela 43 ). Ako je A istinit onda je X neistinit i obrnuto..

A 1 0

X 0 1

Tabela 43: Tabela istinitosti logike funkcije NEGACIJE

Do sada su opisane osnovne logike operacije. Pored njih interesantna je jo i logika operacija iskljuivo ili.

Objektno orijentisano programiranje

63

Za ovu operaciju je karakteristino da je logika vrednost sloenog iskaza istinita samo ako je jedan od osnovnih iskaza istinit. U sluaju da su oba iskaza nesitinita ili istinita rezultat ove funkcije je neistinit (tabela 44). A 1 1 0 0 B 1 0 1 0 X 0 1 1 0

Tabela 44: Tabela istinitosti logike funkcije ISKLJUIVO ILI

4. 4 Primena logikih operatora u oblasti kompjutera


Do sada smo se upoznali sa iskazima, logikim operacijama i kako se dolazi do logike vrednosti sloenih iskaza. Sada ve znamo ta su tabele istinitosti i kako se transformiu ulazne logike vrednosti u odnosu na primenjeni logiki operator. Logiki operatori se koriste u matematici kod teorije skupova, Boolovoj algebri, ali su nali mesto i u praktinoj primeni. Komparacija primene nekih logikih operatora prikazuje slika 41.

Slika 41: Primena logikih operatora

64

Objektno orijentisano programiranje

Ovoj oblasti posvetili smo posebnu panju zbog toga to ini osnovu savremenih digitalnih raunara. Ne samo slova, rei ve i blok tekstova koji se memoriu u brojanom, digitalnom obliku. Funkcionisanje digitalnog raunara zasnovano je na binarnoj obradi podataka, gde moe postojati samo dva stanja: namagnetisano i ne namagnetisano, analogno prekidaima elektrinih kola ukljueno/iskljueno. Radi ilustracije uloge logikih operacija u svakodnevnom ivotu uzet je primer elektrinih kola. Jednostavne logike operacije konjukcija, disjunkcija i negacija se mogu uporediti sa elektrinim kolima. Prvo u nizu je prikaz redno povezanih prekidaa u eletrinom kolu, to se moe prezentovati pomou logike operacije konjukcija. Sijalica koja se nalazi u ovom elektrinom kolu svetlee samo ako su oba prekidaa zatvorena. Logiku operaciju disjunkciju moemo prikazati pomou paralelno vezanih elektrinih prekidaa. U tom sluaju sijalica e da svetli ako je bar jedan od prekidaa zatvoren. Pretposlednji u nizu je negacija, koja moe biti istinita samo ako je A neistinito. Sijalica e da svetli ako prekida nije aktiviran. Pored osnovnih logikih operatora postoje jo i sloeni logiki operatori. Ovde je posebno istaknut sloeni logiki operator iskljuivo ili zbog veoma este primene u raunarskoj oblasti. Nastaje kombinacijom osnovnih logikih operatora konjukcije, disjunkcije i negacije. Prikazano elektrinim kolom to bi bilo paralelno vezana redna kola. Prikazani primeri odnosili su se na formiranje sloenih iskaza putem logikih operacija, ali sada je pitanje kako raunar izvodi logike operacije i nad kojim iskazima. Razlikujemo dve vrste iskaza u odnosu na podatke: iskazi koji se odnose na osobine podataka ona ukazuje da li neka osobina postoji ili ne i iskazi koji se odnose na relacije sa podacima.

Objektno orijentisano programiranje

65

to se tie druge vrste iskaza one mogu biti izmeu dva broja A i B:

A= B A B A> B A< B A B A B

(A jednako B) (A nije jednako B) (A vee od B) (A manje od B) (A vee ili jednako sa B) (A manje ili jednako sa B)

Sada emo odabrati jedan od osnovnih iskaza, recimo A B . Ovaj iskaz moe imati dve logike vrednosti 1 ili 0. Vrednost 1 znai da je relacija ispunjena, a 0 da nije. Kako se to pokazuje u odnosu na brojane vrednosti? Uzmimo na primer da je A = 7 i da je B = 3 i primenimo relaciju recimo A > B . Tada je logika vrednost za iskaz 7 > 3 istinita tj. 1 . U sluaju da je A = 7 i da je B=15 relacija nije ispunjena i vrednost e biti 0. Ispitivanje logike vrednosti nekog osnovnog iskaza je prikazan na slici 42 .

Slika 42: Grafiki prikaz instrukcije za ispitivanje istinitosti logikih vrednosti iskaza

Kako se to odvija putem raunarske obrade pokazaemo na sledeem primeru. Data su dva podatka A i B koji imaju brojane vrednosti. Potrebno je odrediti koji je vei broj, odnosno kreirati algoritam za tampanje veeg broja od zadatih vrednosti.

66

Objektno orijentisano programiranje Instrukcije kojima emo reiti zadatak su: a) Unos (uitavanje) podataka A i B b) Nalaenje veeg od brojeva A i B

c) Smetanje naenog reenja u lokaciju za pripremu izlaznih podataka d) tampanje sadraja lokacije za izlazne podatke. Problem sa kojim se ovde suoavamo jeste nain pronalaenja veeg broja od zadatih brojanih vrednosti. To se postie postavljanjem relacije meu njima (< , >). Odabraemo sledeu relaciju:
A> B

Relacija je ispunjena ako je A vee od B . U obrnutom sluaju relacija nije ispunjena. Ako je relacija ispunjena, zadatak odreivanja veeg od brojeva A i B je reen i moemo da smestimo u polje MAX vrednost A. Plan operativne memorije sa potrebnim instrukcijama ilustrovan je na slici 43.

Slika 43: Plan operativne memorije sa potrebnim instrukcijama

Objektno orijentisano programiranje

67

Slika 44.: Graf algoritma za iznalaenje veeg broja

Instrukcije {a, b, c1, c2, d} se mogu prikazati grafom algoritma (slika 44). Instrukcijom b proverava se logika vrednost unetih brojeva. Nakon toga sledi izvravanje instrukcije c. Ona se u sutini sastoji od dve grane c1 (grana NE) i c2 (grana DA). Koja e se instrukcija od njih izvriti zavisi od unetih brojanih vrednosti. Ako je A=3, a B=6 onda e logiki iskaz imati vrednost neistina i izvee se grana NE . U polje MAX upisae se vrednost 6. U sluaju da su brojane vrednosti sledee A=8 i B=4 logiki iskaz e biti istinit i realizovae se grana DA, pa e se u polje MAX preneti vrednost A, odnosno broj 8. Na ovom jednostavnom primeru upoznali smo se sa nainom ispitivanja logike vrednosti nekog osnovnog iskaza pomou raunara. U narednom delu upoznaemo se i sa ispitivanjem logike vrednosti sloenih iskaza. 4. 4. 1 Logika operacija konjukcija Jedna od znaajnih karakteristika raunara, koju smo ve naveli na poetku, je velika brzina rada. Raunar u veoma kratkom vremenu moe obraditi velike koliine podataka. Pomou raunara u mogunosti smo da ispitamo i logike vrednosti niza osnovnih ili sloenih iskaza. Sa nainom ispitivanja osnovnih iskaza pomou raunara smo se ve upoznali. Ovo steeno znanje moemo dalje nadgraditi upoznavanjem strukture sloenih iskaza. Jedan od moguih naina formiranja sloenih iskaza je i primena logike operacije konjukcije.

68

Objektno orijentisano programiranje

Za ispitivanje logike vrednosti sloenog iskaza Z posluie sledei primer. Neka je Z sloeni iskaz sainjen od osnovnih iskaza X i Y koji povezuje logiki operator konjukcije.
Z = X Y

Osnovni iskazi su sledei: X: m<17 i Y: n=18 Prethodno smo se ve sreli sa tabelama istinitosti logike funkcija, gde smo videli da je logika funkcija konjukcija istinita samo u sluaju da su oba osnovna iskaza istinita. Sada je pitanje kako to ispitivanje izvriti pomou raunara. Polazei od toga da sloeni iskaz moe imati dve logike vrednosti 1 (istinit) ili 0 (neistinit), na zadatak je da postavimo takav redosled instrukcija koje dovode do logike vrednosti 1 sloenog iskaza. To znai da i osnovni iskazi moraju imati vrednost 1. Redosled e biti kao to je to prikazan na slici 45. Prvo e se izvriti instrukcija ispitivanja logike vrednosti osnovnog iskaza X, a zatim iskaza Y. Ako je X istinit realizuje se grana DA i moe uslediti instrukcija ispitivanja logike vrednosti osnovnog iskaza Y. Ako je logika vrednost Y takoe istinita onda vai da je sloeni iskaz istinit. Jednostavnije, prvi osnovni iskaz se ispituje bezuslovno. Kod ispitivanja logike vrednosti ostalih osnovnih iskaza postavlja se uslov da je prethodni osnovni iskaz istinit. Karakteristino je da svi iskazi moraju imati logiku vrednost istina.

Slika 45: Struktura sloenog iskaza pri logikoj operaciji konjukcije

Objektno orijentisano programiranje

69

Ako imamo sloeni iskaz Z koga sainjava vei broj osnovnih iskaza (X1, X2, X3, X4) gde je (X1 : m>5, X2 : n>15, X3 : p=18, X4 : q<25)

Z = X1 X 2 X 3 X 4
imaemo strukturu prikazanu na slici 46.

Slika 46: Struktura logike operacije sa veim brojem osnovnog iskaza

4.1.2 Logika operacija disjunkcija Drugi nain stvaranja sloenog iskaza je primena logikog operatora disjunkcije na osnovne iskaze, pa emo u narednom izlaganju da se upoznamo sa ispitivanjem logike vrednosti ovakvih sloenih iskaza putem raunara. Raunar uvek ispituje logiku vrednost osnovnih iskaza. Kada se radi o sloenim iskazima on izvrava isti postupak: proverava svaki osnovni iskaz pojedinano. Svaki iskaz moe imati jednu logiku vrednost: ili je istinit ili neistinit. Kada dajemo instrukciju za utvrivanje logike vrednosti ne smemo da gubimo iz vida da svaki osnovni iskaz ima jedan ulaz i dva mogua izlaza (grana za logiku vrednost istina i grana za logiku vrednost

70

Objektno orijentisano programiranje

istinit). Ove dve izlazne grane se meusobno iskljuuju, ili se realizuje jedna ili druga, ali nikada obe istovremeno (slika 47).

Slika 47: Grafiki prikaz grananja iskaza u zavisnosti od logike vrednosti

I u sluaju ispitivanja logike vrednosti sloenih iskaza sastavljenih od osnovnih iskaza logikim operatorom disjunkcije vodiemo se prema tabeli istinitosti. Davanje instrukcije prikazaemo na jednom primeru. Neka je Z sloeni iskaz sastavljen od osnovnih iskaza X i Y:
Z = X Y

X:

m > 25 i Y:

n < 18

Z: = (m > 25) v (n < 18) Logika vrednost iskaza Z je neistinita kada su logike vrednosti osnovnih iskaza neistinite (pogrene). U svim ostalim sluajevima iskaz Z je istinit. Tada postupka ispitivanja putem raunara poinje utvrivanjem logike vrednosti prvog osnovnog iskaza. Utvrivanje logike vrednosti narednog iskaza sledi samo ako je logika vrednost prethodnog iskaza neistinit. To znai da se ovaj postupak ostvaruje putem grane ne (logike vrednosti neistina), pri emu struktura sloenog iskaza izgleda kao na slici 48.

Objektno orijentisano programiranje

71

Slika 48: Struktura sloenog iskaza pri logikoj operaciji disjunkcije

Ako je osnovni iskaz X istinit tada po logici sledi da e i sloeni iskaz biti istinit. Shodno tome, da bi sloeni iskaz imao istinitu logiku vrednost vano je da bar jedan iskaz bude istinit. Primera radi slika 17. ilustruje sled instrukcija za logiku funkciju disjunkcije koji je primenjen u sloenom iskazu Z. Osnovni iskazi su X1, X2, X3, X4 gde je (X1 : m>15, X2 : n>35, X3 : p=18, X4 : q<25)

Z = X1 X 2 X 3 X 4

Slika 49: Instrukcije za logiku funkciju disjunkcije sa vie osnovnih iskaza

72

Objektno orijentisano programiranje 4.4.3 Logika operacija iskljuivo ili

Pored logikih operatora konjukcije i disjunkcije sloeni iskazi mogu nastati i primenom logikog operatora iskljuivo ili (u literaturi esto sa oznakom XOR). Pre nego to objasnimo sled instrukcija za utvrivanje istinitosti ovakvog sloenog iskaza podsetiemo se tabele istinitosti. Ova logika operacija ima vrednost istina samo ako jedan od osnovnih iskaza je istinit. U sluajevima da su svi osnovni iskazi isitniti ili neistiniti sloeni iskaz e imati logiku vrednost neistina. Shodno tome i postupak utvrivanja logike vrednosti sloenog iskaza za logiku operaciju iskljuivo ili putem raunara se zasniva na ovom principu. Prvi korak je davanje instrukcije za ispitivanje istinitosti prvog osnovnog iskaza (X) . U narednom koraku zadaje se instrukcija ispitivanja logike vrednosti sledeeg osnovnog iskaza, sa tim da se njegova istinitost ispituje i po grani da i po grani ne. Prema prikazanoj strukturi sloenog iskaza Z na slici 410. vidimo da je pozitivan ishod ispitivanja logike vrednosti sloenog iskaza istinit ako je m vee od 25 i ako n nije vee od 30 ili obrnuto. Z= X X: + Y n > 30 m > 25 i Y:

Slika 410: Struktura sloenog iskaza pri logikoj operaciji iskljuivo ili

Objektno orijentisano programiranje

73

Povezivanje veeg broja osnovnih iskaza putem logikog operatora iskljuivo ili prikazuje slika 411., gde se sloeni iskaz Z sastoji od osnovnih iskaza X1, X2 i X3 Z= X1 + X2 + X3

Slika 411: Prikaz kompletne strukture za sluaj sa tri osnovna iskaza

Ovo je kompletna struktura za sluaj sa tri osnovna iskaza koji se odlikuje odreenim osobinama: 1. broj potrebnih instrukcija je 7, 2. broj izlaznih grana je 8, 3. broj grana sa istinitim logikim vrednostima je 3, a sa neistinitim 5 (toliko grana sa istinitim vrednostima koliko ima iskaza) 4. sadri nepotrebne instrukcije, jer utvrivanjem logike vrednosti istina za X1 i X2 nema potrebe za daljim proveravanjem. Istu ovu strukturu moemo i uprostiti na osnovu osobina strukture (slika 20). Takva uproena struktura takoe moe obezbediti isti efekat. Kriterijum za postupak uproavanja strukture je broj osnovnih iskaza koji sainjavaju sloeni iskaz. Vrednost sloenog iskaza e biti istinit samo po putanji gde se u grananjima nalazi samo jedna istinita vrednost. Na slici 412 takve putanje su zaokruene.

74

Objektno orijentisano programiranje

Slika 412.: Uproena struktura iskljuivo ili sa tri osnovna iskaza

Kako izgleda ova logika funkcija pri izvravanju instrukcija na raunaru doaraemo slikom 413, gde sloeni iskaz ima etiri osnovna iskaza.

Slika 413.: Struktura iskljuivo ili sa etiri osnovna iskaza

Objektno orijentisano programiranje 4. 4. 4 Sloeni iskazi u raunarskoj obradi

75

Retko emo se u realnom ivotu susresti sa tako jednostavnim iskazima iskljuivo sastavljenih od jedne vrste logike funkcije. Obino su to problemi koji sadre razne kombinacije konjukcije, disjunkcije, negacije i logike funkcije iskljuivo ili, to se odraava na sloenost programa. Kada reavamo neki problem putem raunara prvo to treba da uradimo je analiza iskaza koji se odnose na dati problem. Analiza nije jednostavna, jer su iskazi obino deskriptivnog oblika. Izraeni su reenicama. Njima se opisuje ta treba uraditi i koji su zahtevi postavljeni u vezi sa zadatkom. Ovakav oblik obino sadri veliki broj rei, nekada ak i nepotrebnih. Da bi se izbegle greke u izradi programa takav sloeni iskaz se formalizuje. Iskaz Z je sloeni iskaz iz realnog ivota sastavljen od razliitih manje sloenih iskaza (Z1, Z2,Z3,Z4,Z5). Tada se logika funkcija Z moe izraziti na sledei nain: Z = Z (Z1, Z2, Z3, Z4, Z5) a logike funkcije koji su zastupljene su disjunkcija i konjukcija i to u sledeoj kombinaciji :

Z = Z1 Z 2 [(Z 3 Z 4 ) Z 5 ]

Pri tome su manje sloeni iskazi:

(D1 = 5) (D2 > 4)] (D3 < 7 ) Z1 = [


Z 4 = (D7 > 5) (D7 < 12 1 2 ) Z 3 = (D5 = 6 ) (D6 = 8)

Z 2 = (D4 = 5) (D4 = 7 ) (D4 > 25 2 5 )

Z 5 = (D8 > 4 ) (D8 < 17 1 7 ) (D9 >10 1 0 ) (D9 < 20 2 0 )


Ovako definisan sloeni iskaz podloga je za dalji postupak odreivanja logike vrednosti. Sledei korak u tom postupku je odreivanje potrebnih instrukcija. Treba istai da u tom procesu nije dovoljno samo definisati instrukcije, ve je neophodno odrediti i strukturu instrukcija. Pod strukturom podrazumevamo odnose meu instrukcijama. Do toga dolazimo postepeno i moe da se odvija u dva smera. Jedan nain je definisanje odnosa polazei od sloenog iskaza Z do najosnovnijeg

76

Objektno orijentisano programiranje

iskaza. Drugi nain je obrnuti postupak, kada analiziramo odnose meu osnovnim iskazima i polako izgraujemo strukturu ka sloenom iskazu. Nain kreiranja strukture sloenog iskaza po drugom pristupu obuhvata niz koraka kao to je: definisanje skupa osnovnih iskaza, kreiranje strukture na prvom nivou, kreiranje strukture na drugom nivou i kreiranje kompletne strukture. Definisanje skupa osnovnih iskaza u ovom primeru oznaiemo sa A i oni su sledei:

A1 = (D1 = 5)

A2 = (D2 > 4 )

A3 = (D3 < 7 )

A1 1 0 ) 13 3 = (D9 >10

A1 1 2 ) 0 = (D7 < 12 10

A7 = (D5 = 6 )

A4 = (D4 = 5)

17 A5 = (D4 = 1 7 )

A11 1 = (D8 > 4 )

A8 = (D6 = 8)

A1 2 0 ) 14 = (D9 < 20 4

17 A1 7 ) 2 = (D7 < 1 12

A9 = (D7 > 5)

A6 = (D4 >25 2 5

Nakon toga pristupamo kreiranje strukture na prvom nivou koji obuhvata manje sloene iskaze Z1, Z2, Z3, Z4, Z5. Tada je Z1 definisan na sledei nain:

Z1 = [A1 A2 ] A3

gde su potrebne instrukcije za utvrivanje logike vrednosti ponaosob za svaki najosnovniji iskaz (A1, A2, A3). Struktura uslova za sloeni iskaz Z1 prikazana je na slici 414.

Slika 414.: Struktura instrukcija za iskaz Z1

Objektno orijentisano programiranje

77

Zatim sledi utvrivanje strukture instrukcije za iskaz Z2 koga definiu osnovni iskazi A4, A5 i A6.

Z 2 = A4 A5 A6
Strukturu instrukcija za ovaj sloeni iskaz ilustruje slika 415.

Slika 415.: Struktura instrukcija za iskaz Z2

Poto su iskazi Z3 i Z4 oni imaju istu strukturu kao to to prikazuje i slika 416. Iskaz Z3 definisan je iskazima A7 i A8, a Z4 sa iskazima A9 i A10.

Z 3 = A7 A8

Z4 = A9 A10

Slika 416: Struktura instrukcija za iskaz Z3 i Z4

78

Objektno orijentisano programiranje

I poslednja struktura na prvom nivou za ovaj primer je za iskaz Z5, koji se sastoji od iskaza A11, A12 , A13 i A14. Ilustraciju te strukture prikazuje slika 417

Z4 = A11 A12 A13 A14


Kada su kreirane strukture iskaza na prvom nivou, nastupa sledei korak: kreiranje strukture sloenog iskaza na drugom nivou. Ovde se koncentriemo na strukturu koju kreiraju funkcije manje sloenih iskaza: Z1, Z2, Z3 ,Z4 i Z5.

Slika 417.: Struktura instrukcija za iskaz Z5

Za konkretni primer sloeni iskaz sadri logike funkcije disjunkciju i konjukciju i predstavljen je na sledei nain:

Z = Z1 Z 2 [(Z 3 Z 4 ) Z 5 ]
Struktura ovog iskaza prikazana je na slici 418. Konaan korak u procesu kreiranja strukture sloenog iskaza je kreiranje kompletne strukture iskaza. Da bismo doli do ovog koraka bilo je potrebno ispitati osnove iskaze zadatog konkretnog sloenog iskaza Z i pri tome formirati korak po korak sloenije strukture.

Objektno orijentisano programiranje Sloeni iskaz za ovaj primer je funkcija Z: Z = Z (Z1, Z2, Z3, Z4, Z5)

79

Na drugom nivou kreirali smo strukturu sa manje sloenim iskazima od Z1 do Z5 za zadati primer. Zamenom strukture drugog nivoa sa pojedinim strukturama (Z1, Z2, Z3, Z4, Z5) sa prvog nivoa kreiraemo kompletnu strukturu. Pri tome dobijamo strukturu prikazanu na slici 419. Ovakvim nainom moemo kreirati i strukture veoma sloenih iskaza.

Slika 418: Struktura instrukcija iskaza Z

80

Objektno orijentisano programiranje

Slika 419: Struktura instrukcija iskaza Z na detaljnijem nivou

4. 5 Operatori u Visual Basic-u


Primena logikih struktura je veoma znaajna u programiranju. Kada se za neki postavljeni problem kreira program uvek se polazi od logikih struktura i iskaza koji taj problem opisuju. Osnovni princip kreiranja

Objektno orijentisano programiranje

81

programa je idejno reavanje problema. To je osnova budueg programa i pri tome uvaavamo sintaksu programskog jezika kojeg koristimo. Treba istai da je primena logikih iskaza i operatora kljuna u upravljakim strukturama za izraavanje raznih uslova putem kojih se usmerava izvravanje programa. Mada svaki programski jezik ima svoju sintaksu, operatori koji se koriste za konkretizaciju logikih iskaza u programima su u veini sluajeva slini. Moda se razlikuju u nekim oznakama operatora. U ovom odeljku osvrnuemo se na logike operatore koji se koriste u Visual Basic-u. Oni se dele na: Aritmetike operatore Poredbene operatore Logike operatore U grupu aritmetikih operatora spadaju operatori kojima izvravaju osnovne aritmetike operacije poznate iz matematike. Pored njih postoje i neki operatori koji nisu poznati iz matematike ali ovde emo se upoznati sa njihovom namenom i simbolom. Operator sabiranja

Za sabiranje se koristi znak plus kao i u matematici. Vano je istai da se samo isti tipovi podataka mogu sabrati. Ako se radi o sabiranju dva broja koji su razliitog tipa npr. jednog celobrojnog i jednog decimalnog, Visual Basic e automatski prevesti (konvertovati) celobrojni u decimalni i sabrati ta dva broja. O tipovima podataka bie rei kasnije. Primer (moe se uraditi u editoru koda za Form1): Debug.Print(2 + 3)
Debug.Print(2 + 4.2)

(Na ekranu u prozoru Immediate treba se ispie rezultat nakon pokretanja programa: 7 i 6.2 kao to to pokazuje slika 420).

82

Objektno orijentisano programiranje

Slika 420: Prikaz rezultat u prozoru Immediate

Operator oduzimanja Slino operatoru sabiranja i za operator oduzimanja se upotrebljava simbol oduzimanja iz matematike. Takoe slui za oznaku negativnog broja. Primer (rezultat u prozoru Immediate): Debug.Print(7 5)
Debug.Print(2 - 4.2)

(Na ekranu treba se ispie rezultat nakon pokretanja programa: 2 i -2.2). Operator mnoenja

Simbol za operaciju mnoenja dve promenljive, konstante ili literala je zvezdica.

Objektno orijentisano programiranje Primer (rezultat u prozoru Immediate): Debug.Print(2 * 5)

83

(Na ekranu treba da se ispie rezultat nakon pokretanja programa: 10). Operator deljenja

Simbol deljenja je kosa crta koje se koristi kao i kod obinog kalkulatora. (Deljenje nulom daje greku.) Primer (rezultat u prozoru Immediate): Debug.Print(12 / 6) (Na ekranu treba da se ispie rezultat nakon pokretanja programa: 2). Operator celobrojnog deljenja \ Primenom operatora celobrojnog deljenja vrednosti dva broja se zaokruuje u celobrojne. Rezultat e takoe biti celobrojan. Za bolje razumevanje uporediemo operatore obinog deljenja i celobrojnog deljenja. Primer obinog deljenja (rezultat u prozoru Immediate): Debug.Print(13.6 / 2) (Na ekranu treba da se ispie rezultat pokretanja programa: 6.8). Primer celobrojnog deljenja (rezultat u prozoru Immediate): Debug.Print(13.6 / 2) (Na ekranu treba da se ispie rezultat nakon pokretanja programa: 7; zaokruuje se boj 13.6 na 14 i deli se sa 2; Rezultat je 7). Napomena: Preporuljivo je da se ovaj operator koristi kod deljenja celobrojnih vrednosti, da bi se izbegli nepoeljni rezultati. Operator stepenovanja ^ Simbol kojim se podie neki broj na stepen je ^. Primer (rezultat u prozoru Immediate):

84

Objektno orijentisano programiranje Debug.Print 3 ^ 2 (Na ekranu treba da se ispie rezultat nakon pokretanja programa je 9). Operator ostatak mod

Ovaj operator se primenjuje za izraunavanje ostataka kod deljenja. Takoe je preporuljivo da se koristi kod celobrojnih vrednosti, jer zaokruuje operande. Oznaka je mod. Primer (rezultat u prozoru Immediate): Debug.Print(8 Mod 5) (Rezultat na ekranu nakon pokretanja programa e biti: 3, jer se u 8 broj tri nalazi jedanput, a ostatak pri deljenju je 3). Debug.Print(8 Mod 2) (Rezultat: 0, jer nema ostataka pri deljenju). Poredbeni operatori slue za poreenje brojeva i brojano tekstualnih znakova. Najee se koriste u logikim iskazima i u upravljakim strukturama o kojima je ve bilo rei. U ove operatore spadaju operatori dodeljivanja vrednosti (znak: jednako), operatori za iskazivanje veeg ili manjeg broja, veeg ili jednog broja itd. Simboli koji se koriste prikazani su u tabeli 45.

Tabela 45: Simboli operatora

Primeri: Debug.Print(8 > 5) (Rezultat nakon pokretanja programa e na ekranu biti: True). Debug.Print(8 < 5)

Objektno orijentisano programiranje (Rezultat : False).

85

U logike operatore spadaju NOT (negacija), AND i OR. Oni se koriste stvaranju sloenih iskaza. U uvodu logikog razmiljanja ukazali smo da logiki operatori mogu imati samo dve vrednosti: istina (True) i greka (False). Logiki operator NOT pretvara logiku vrednosti istina (True) u greku (False). Primeri ( u prozoru Immediate): Debug.Print Not 14 > 25 (Rezultat e biti: True, jer je 14 > 25 pogreno, a sa logikim operatorom NOT bie suprotno od toga: bie istina). Logiki operator NOT se primenjuje i za invertovanje (tabela 46) operatora, to je nekada veoma zgodno u sloenim iskazima.

Tabela 46: Invertovanje putem operatora NOT

Logiki operator AND (i) upotrebljava se u sloenim izrazima za izraavanje konjukcije ( ). U sluaju ovog operatora logika vrednost celokupnog iskaza je istina, ako su oba iskaza istinita. Primeri: Debug.Print (14 > 20 And 14 > 25) (Rezultat e se prikazati u prozoru Immediate i bie: True). Debug.Print (Not 14 > 20 And 14 > 25) (Rezultat e biti: False). Za izraavanje logike funkcije disjunkcije koristi se operator OR (ili). Prema tabeli istinitosti sloeni iskaz e biti istina (True) ako je bar jedan od osnovnih iskaza istinit.

86

Objektno orijentisano programiranje Primeri ( u prozoru Immediate): Debug.Print (14 > 20 Or 14 > 25) (Rezultat e biti: True). Debug.Print (Not 14 > 20 Or 14 > 25) (Rezultat e biti: True). Ali u sluaju izraza Debug.Print (Not 14 > 20 Or 14 = 25) (Rezultat e biti: False).

Ovo su najee korieni logiki operatori u programiranju, iako postoje pored ovih i drugi logiki operatori.

4.6 Petlje i upravljake strukture


Kada raunar izvrava neki program on ita programske linije, instrukcije, red po red i tako ih i izvrava. Kada stigne do poslednje instrukcije on ga izvri i stane. Dalje nema instrukcije ta da radi. Pored toga esto emo se sresti sa problemom da se neke instrukcije ponavljaju, kao to to prikazuje i graf algoritma na slici 315. Ovaj konkretni algoritam je kratak, ali kada je problem sloeniji pogodnije je ugraditi uslovnu logiku u program kao to to prikazuje slika 318 . Prilikom pisanja kodova ugrauju se logike strukture, ime se u stvari odreuje ta treba sledee da se uradi.

Slika 421: Prikaz algoritma sa uslovnom logikom

Objektno orijentisano programiranje

87

Kodovi pored upravljake strukture zasnovane na uslovnoj logici omoguavaju ponavljanje nekih instrukcija, a mogu sadrati i grananja instrukcija radi usmeravanja naina izvravanja programa (slika 421). Upravljake strukture odreuju tok programa pri emu omoguuju izraunavanje petlji. Petlja e se izvriti zadati broj puta ili dok se ne ispuni neki uslov u zavisnosti od zahtevanog zadatka. Zbog toga postoje razliite strukture uslovne logike. 4. 6.1 Struktura For...Next Petlja For ... Next je struktura pomou koje se ponavlja blok programskog koda. Broj ponavljanja se definie u strukturi, gde je i broja koji se ponavlja zadati broj puta. Recimo da elimo da raunar ispie brojeve od 1 do 10 na ekranu (slika 422). Onda e programski blok sadrati petlju For ... Next :
Private Sub Button1_Click(ByVal sender As System._ Object, ByVal e As System.EventArgs) Handles_ Button1.Click Dim i As Integer For i = 1 To 10 Console.WriteLine("Vrednost i je: " & i) Next i End Sub

Slika 422: Prikaz rezultata For... Next petlje

Poto je poetna vrednost brojaa postavljena na jedan (i=1) raunar e ispisati 1, pa naredni broj 2, zatim 3 itd., sve dok ne premai zadatu vrednost. U ovom sluaju je to 10. Kada i dostigne vrednost 11 program e da stane. Kod svakog narednog izvrenja bloka koda vrednost brojaa i se poveava za 1.

88

Objektno orijentisano programiranje

Vrednost za koji se broja poveava odreujemo mi. Pogodnost je da postoji slubena re Step koja to omoguava.
Dim i As Integer For i = 1 To 50 Step 5 Console.WriteLine("Vrednost i je: " & i) Next i

Napomena - vai i za negativne brojeve:

Dim i As Integer For i = 50 To 1 Step -5 Console.WriteLine("Vrednost i je: " & i) Next i

4. 6. 2 Struktura Do/Loopl U nekim sluajevima neemo znati koliko puta treba da se izvri programski blok kodova, tako da For ... Next petlja nam nee koristiti. Umesto toga primenjuje se Do/Loop struktura. Karakteristino je da e se ova petlja izvravati sve dok se ne ostvari neki uslov. Moe se primeniti ne etiri razliita naina:

1.

Do While uslov naredbe se izvravaju dok je uslov ispunjen Loop

Kako to izgleda programski prikazano je na slici 423.

Objektno orijentisano programiranje Naredba koja ispisuje rezultat (slika 424 ) u prozoru Output je
Console.WriteLine(n)

89

Slika 424: Prozor Output pri izvrenju Do/Loop petlje

2.

Do naredbe e se izvriti jednom i ponavljae se dalje sve do god je uslov ispunjen While uslov

Slika 425: Petlja Do/ Loop kada se prvi put izvri naredba

90 3.

Objektno orijentisano programiranje


Do Until uslov Loop

naredbe se izvravaju dok uslov ne bude ispunjen

Kako to funkcionie uzeemo novi primer gde emo uneti vrednost u polje namenjeno za to (slika 426) i uneti sledei kod za dogaaj Click dugmeta Do Loop:
Dim n As Integer n = TextBox1.Text MsgBox(n) n = n + 1

Do Until n > 5

U ovom primeru moemo proizvoljno uneti promenljivu n. Ako unesemo broj manji od postavljenog uslova naredba e se izvravati jer je uslov da se naredba izvrava sve dok n ne bude vee od 5. U suprotnom nee se desiti nita, naredba se nee izvravati.

Loop

Slika 426: Petlja Do Until

Drugi nain, da se primeni Do Until petlja, je sledei: 4.


Do naredbe e se izvriti jednom uslov ne bude ispunjen

i ponavljae se dalje sve do god

Until uslov

Objektno orijentisano programiranje 4. 6. 3 Struktura If/Then/Else

91

Nekada je potrebno da se program ili blokovi kodova programa izvravaju pod uslovima Ako Onda. Naj jednostavnija logika struktura koja to omoguava je If/Then/Else. Ona je zasnovana na principu logikih kola, gde prekidai mogu imati dva stanja: tano ili netano. Sintaksa ove strukture je sledea:
If uslov Then End If naredbe

to se moe proitati ovako: ako je uslov ispunjen onda se izvre naredbe. Kada se izvri blok koda If/Then struktura se zatvara sa End If, koja je slubena re u Visual Basic-u. If Then strukturu najbolje emo demonstrirati kroz primer za unos imena. Forma za unos imena prikazana je na slici 427.

Slika 427: Program koji proverava unos imena

Za realizaciju potrebno je jedno polje za unos imena i jedno dugme ijim aktiviranjem pokreemo sledei programske linije:
Private Object_ Sub Button1_Click(ByVal sender As System.

ByVal e As System.EventArgs) Handles Button1.Click Dim Ime As String Ime = txtIme.text

If Ime <> "" Then End If

MsgBox("Ime je " & Ime)

End Sub

92

Objektno orijentisano programiranje

ta se tu u sutini deava kada se dva puta klikne na dugme? Ako korisnik unese neko ime (a tu se podrazumeva prazan karakter) pojavie se poruka koja ga obavetava o unetom imenu. Postavlja se pitanje ta se dogaa kada uslov nije ispunjen. U navedenoj If/Then strukturi nee se desiti nita, jer ne postoji deo programskog koda koji na to ukazuje. Ali ako primenimo strukturu sa kljunom rei Else:
If uslov Then Else naredbe 2 End If naredbe 1

realizovae se naredbe 2. U obinom govornom jeziku ovo se moe rei na sledei nain : Ako je ulov ispunjen onda se izvri naredba 1, inae e se uraditi naredba 2. U konkretnom primeru to e izgledati ovako, a prikaz rezultata kao na slici 325:
Dim Ime As String Ime = txtIme.text If Ime <> "" Then Else

MsgBox("Ime je " & Ime) MsgBox("Niste uneli ime! ")

End If

Slika 428: Struktura If Then Else

Objektno orijentisano programiranje

93

Postoji jedna pogodnost u vezi If/Then strukture, a to je mogunost ugnjedavanja u druge If/Then blokove. Meutim, dubina ugnjedavanja moe dovesti do problema, jer se programski kod uslonjava, a to moe prouzrokovati ne samo nepreglednost programa, ve i greke. Za primer ugnjedenog If/Then/Else strukture moe posluiti provera ispunjenosti uslova za dva razliita sluaja. Prvo se proverava da li je ispunjen uslov za oba sluaja. U sluaju da nije ispunjen uslov, treba utvrditi da li su uslovi tani pojedinano. Programski kod putem provere nalae da se tampa onaj uslov koji je ispunjen.
If uslov 1 And uslov 2 Then Else Print Oba uslova su tana

If uslov1 Then Else

Print uslov 1 je taan If uslov2 Then Else

Print uslov 2 je taan

End If

End If

End If

Print Oba uslova su netana

Ovakva struktura se moe napisati preglednije, jer Visual Basic omoguuje i upotrebu pojednostavljenog oblik prethodnog bloka:
If uslov 1 And uslov 2 Then ElseIf uslov1 Then ElseIf uslov2 Then Else Print Oba uslova su tana

Print uslov 1 je taan Print uslov 2 je taan Print Oba uslova su netana

End If

94

Objektno orijentisano programiranje

Ako prethodni primer proirimo sa unosom prezimena moemo proveriti da li je korisnik uneo bilo ta ili je uneo samo prezime ili samo ime, ili nije nita uneo. Pa bi onda programska struktura bila sledea:
Private Sub Button1_Click(ByVal sender As System.Object_ ByVal e As System.EventArgs) Handles Button1.Click Dim Ime As String Dim Prezime As String Ime = txtIme.Text Prezime = txtPrezime.Text

Ako je ispunjen i uslov1 i uslov2 If Ime <> "" And Prezime <> "" Then MsgBox("Prezime i ime su " & Prezime & " " & Ime) Ako je ispunjen uslov1 ElseIf Ime <> "" Then MsgBox("Niste uneli prezime! ") Ako je ispunjen uslov2 ElseIf Prezime <> "" Then MsgBox("Niste uneli ime! ") Inae nijedan uslov nije ispunjen Else End If End Sub MsgBox("Niste uneli ni ime ni prezime! ")

Na slici 429 prikazan je sled ovih komandi pri izvrenju programa.

Objektno orijentisano programiranje

95

Slika 429: Struktura ugnjedene If/Then/Else strukture u pojednostavljenoj formi

4. 6. 4 Struktura Select If/Then/Else je najee koriena uslovna logika struktura, ali kod sloenijih blokova kodova moe biti prilino neuredna. Tada se pribegava nekim drugim strukturama. Pogodnija struktura u takvim sluajevima je Select struktura, to emo objasniti na primeru. Primer: Treba napisati kod koji e ispisati nazive dana u nedelji. Promenljivom x oznaiemo dane u nedelji. Redni broj dana ukazae na dan u nedelji. U zavisnosti od toga koju vrednost ima promenljiva x ispisae se naziv dana. Kada bismo ovo napisali pomou If/Then strukture to bi izgledalo ovako:

96

Objektno orijentisano programiranje


If X=1 Then

ElseIf X=2 Then ElseIf X=3 Then ElseIf X=4 Then ElseIf X=5 Then ElseIf X=6 Then ElseIf X=7 Then End If

MsgBox (Ponedeljak) MsgBox (Utorak) MsgBox (Sreda) MsgBox (etvrtak) MsgBox (Petak) MsgBox (Subota) MsgBox (Nedelja)

Isti ovaj kod napisan uz pomo Select strukture uprostio bi ceo blok iji rezultat je prikazan na slici 4-30:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim X As Integer X = txtX.Text Select Case X Case 1 txtDan.Text Case 2 txtDan.Text Case 3 txtDan.Text Case 4 txtDan.Text Case 5 txtDan.Text Case 6 txtDan.Text Case Is = 7 txtDan.Text End Select End Sub

= "Ponedeljak" = "Utorak" = "Sreda" = "etvrtak" = "Petak" = "Subota" = "Nedelja"

Objektno orijentisano programiranje

97

Slika 430: Prikaz dana u nedelji pomou Select strukture

Select struktura se zasniva na izvravanju sluajeva (engl. case). Promenljiva X se navodi na poetku strukture. Za svaku vrednost promenljive odreuje se sluaj koji zapoinje sa kljunom rei Case. Za svaki sluaj navodi se vrednost promenljive, nakon ega sledi proizvoljan broj naredbi. U odnosu na If/Then/Else strukturu ima odreene prednosti. Prvenstveno, okvir jednog sluaja moe sadrati vie slubenih rei, pa ak i druge Select naredbe. Druga znaajna stvar je da umesto promenljive moe stajati neki izraz.
Select Case ((a-7)*b)/(3+c)*d) Case 1 Case 2 uradi neto

Ako ispunjenost uslova za izraz ((a-7)*b)/(3+c)*d) proverama uz pomo If/Then strukture e izgledati ovako:

End Select

uradi neto drugo

Primetna razlika izmeu ova dva bloka koda je ponavljanje izraza u If/Then strukturi. Ne povoljnost se pokazuje u izmenama. Recimo da se

98

Objektno orijentisano programiranje

neto menjalo u izrazu. Tada moramo menjati programski kod. Ali moramo paziti da se promena izvri na svim mestima u kodu. Kod sloenijih kodova esto se to moe prevideti i negde emo zaboraviti da izmenimo izraz. Pored toga odraava se i na vreme obrade podataka. Raunar svaki put kada naie na izraz rauna, njegovu vrednost ponovi, jer ne pamti rezultate. Pored ovih pogodnosti Select struktura ima jo jednu, a to je obrada grupe moguih vrednosti, to prikazuje sledei primer.
Select Case X Case 1 To 2, 5 To 7, Is > 12 Case Else: End Select uradi neto sa ovom grupom uradi neto u vezi sa ostalim vrednostima

U ovom primeru jedna mogunost je ispitivanje vrednosti za tri razliita opsega. Opsezi se kreu od 1 do 2, od 5 do 7 (ukljuujui i njihove granine vrednosti) i ako je X > 12 (to se proverava sa Is > 12). Case Else koja tu figurira daje mogunost da se obuhvate one vrednosti koje ne spadaju u date opsege. Ova slubena re ima istu funkciju kao i Else u IF/Then strukturi. Ovo moemo ilustrovati na primeru starosne dobi oveka. U sluaju da se starost odreene osobe kree izmeu 1 i 18 kategorisaemo osobu kao adolescenata, inae e spasti u kategoriju odraslih (slika 431).

Slika 431: Program za odreivanje starosne kategorije

Objektno orijentisano programiranje Kod kojim se ostvaruje prikaz kategorija starosti je:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Godine As Integer Godine = txtBroj.Text Select Case Godine Case 1 To 18 txtKategorija.Text = "Adolescent" Case 19 To 100 txtKategorija.Text = "Punoletan" End Select End Sub

99

5. ELEMENTI PROGRAMSKIH BLOKOVA


U programiranju pored instrukcija postoji jo jedan osnovni aspekat, a to su podaci. Dosada je bilo rei o instrukcijama, gde je ukazano i na vanost usmeravanja toka programa, ali rad sa podacima smo zapostavili. Dakle, u ovom delu upoznaemo se sa elementima osnovnih gradivnih blokova programa. Najosnovniji gradivni blokovi se odnose na pomeranje podataka sa jedne memorijske lokacije na drugi ili na neko izraunavanje. Programi nastaju kombinacijom ovih osnovnih programskih blokova. U uvodnom delu, gde je objanjen postupak reavanja nekog problema, ematski je ilustrovan ovaj postupak, ali u ovom delu dalje emo da razmatramo rad sa podacima. Videemo ta su promenljive i konstante koji su tipovi podataka i koja je njihova sintaksa. Polazei od toga da se radi u alatu Visual Basic.Net moe se rei da sadri podskup osnovnih tipova podataka koji su definisani u Net Framework-ovoj biblioteci osnovnih klasa. U daljem tekstu emo objasniti sledee elemente: tipove podataka, promenljive, konstante i operatore.

102

Objektno orijentisano programiranje

5.1 Tipovi podataka


Svaki programski jezik razlikuje razliite vrste tipove podataka koji preciznije definiu promenljive i konstante. Naravno, razlike se odnose na vrste tipova podataka, a ne na razlike izmeu programskih alata. Karakteristino je da svaki tip podataka ima odreena ogranienja (minimalne i maksimalne vrednosti), to u sutini predstavlja opsege podataka . U tabeli 51 prikazani su tipovi podataka koji se koriste u Visual Basic.Net-u Koji tip podataka emo upotrebiti zavisi od vrednosti koja e biti smetena u promenljivu ili konstantu. Na primer logiki tip podataka (Boolean) upotrebljava se u logikim iskazima, gde se vrednosti kreu u opsegu istina ili pogreka (True/False). Kada radimo sa brojanim vrednostima koristiemo Integer, za decimalne brojeve Single, Double ili Decimal, i to opet u zavisnosti od veliine podataka koji e se pojaviti u programu. Pored varijabilnih tipova koji se odnose na definisanje opsega brojanih vrednosti postoje jo i tipovi podataka za deklarisanje tekstualnih znakova: String, za memorisanje datuma: Date. Ako ne odaberemo odgovarajui tip podataka program e javiti greku. To znai da numeriku vrednost neemo odnosno neemo moi obraivati u promenljivoj koja je odreena kao string. Osnovno pitanje je: zato je vano navesti dimenziju podataka. Jednostavno, jer utiu na izvravanje celokupnog programa pa i na memorijske lokacije. Uostalom nije svejedno da li radimo sa celim brojevima, sa brojevima pokretnog zareza ili stringovima. Deklarisanjem tipa podatka odreujemo nominalni opseg koji moe zauzeti vrednost koja se memorie, jer CLR (Common Language Runtime) dodeljuje memoriju u zavisnosti od platforme na kojem radite.

Objektno orijentisano programiranje

103

Tabela 51.: Prikaz tipova podataka

Pre nego to preemo na objanjenje kako se sa njima radi, osvrnuemo se na to ta su promenljive i konstante.

5.2 Promenljive
Zbog razumevanja ta su promenljive i kako se upotrebljavaju vratiemo se na primer sa poetka ovog poglavlja: sabiranje bilo koja tri broja. Na slici 51 vidimo da se izvorni podaci smetaju u predviene memorijske lokacije koje smo nazvali A, B i C, dok su za smetanje meurezultata i rezultata predviene memorijske lokacije D i Z. Nazive ovih memorijskih lokacija zovemo promenljivama ili varijablama (engl. variables).

104

Objektno orijentisano programiranje

Znai da postoji deo memorije koji program koristi za smetanje konkretne vrednosti. Recimo da A ima vrednost 25. Tada raunar pamti tu vrednost u odreenoj memorijskoj lokaciji i to sve dok se ne isprazni , odnosno, dok ne izdamo instrukciju da se ukloni ili dok se ne poniti ponovnim unosom. U tu svrhu smo istakli prostorno planiranje tj. postupak odreivanja PLANA OPERATIVNE MEMORIJE. Primena promenljivih znaajno olakava programiranje, jer programer treba da pamti samo nazive memorijskih lokacija. Pomou njih izvravamo razliite aritmetike i logike operacije i koristimo ih za smetanje (akumuliranje) rezultata. Druga vrsta promenljivih slui za pohranjivanje podataka za kasniju upotrebu u programu. Da bi program znao da se radi o promenljivama njih treba definisati, to se u raunarskoj terminologiji zove deklarisanje. Promenljive se deklariu pomou slubene rei Dim u odeljku Declaration za obrazac u kome e se koristiti. Slubena re Dim je skraenica od Dimension, to ukazuje na to da se definie dimenzija promenljive.

Slika 51.: Prikaz sabiranja tri broja smetanjem u memorijske lokacije

Kako se deklariu promenljive demonstrira sledei primer: Naziv promenljive


Dim A As Integer

Dim B As Integer Dim C As Integer Dim Z As Integer

Objektno orijentisano programiranje


Private Sub Button1_Click_ (ByVal sender As System.Object,_ ByVal e As System.EventArgs)_ Handles Button1.Click A = txtA.Text B = txtB.Text C = txtC.Text Z = A + B + C txtZ.Text = Z End Sub

105

Odmah nakon slubene rei sledi naziv promenljive (A) i definisanje tipa podataka koju e ta promenljiva da sadri. Treba napomenuti da se u ovom primeru sabiraju celobrojne vrednosti, pa se definie celobrojni tip podataka (Integer) tj. opseg koji se kree od - 2 147 483 648 do 2 147 483 647 (oseneni deo).
Dim A As Integer

Time je omogueno da se vrednosti unete u polja txtA, txtB i txtC saberu, tako to e se dodeliti te vrednosti u promenljive A, B i C. Ovo je potrebno zbog toga to raunar unete vrednosti u polja kao to txtA smatra tekstom i nije u mogunosti da ih sabere kao numerike vrednosti.

Nakon sabiranja neophodno je rezultat saoptiti i korisniku. Rezultat e se pojaviti u polju namenjenom za to kao to to ilustruje slika 52. Promenljive se mogu deklarisati kao javne (public) ili lokalne (private). Javne (public) promenljive se deklariu u standardnom modulu i omoguavaju dostupnost svim procedurama i modulima. Lokalne promenljive (private) deklariu se samo za odreenu proceduru i oni nemaju nikakav znaaj za druge procedure istog progama.

106

Objektno orijentisano programiranje

Slika 52: Postupak izrade programa za sabiranje tri broja

5.3 Konstante
Upotrebu konstanti najlake emo objasniti na konkretnom primeru. Za primer emo uzeti obraun doprinosa zarada. Svaka organizacija kod isplate zarade duna je da obrauna pored poreza i doprinose za zdravstveno i penzijsko osiguranje ije stope su propisane zakonom. Ako bi prilikom kreiranja programa za njihovo izraunavanje koristili brojane vrednosti u programskim kodovima, to bi znailo da se stope, odnosno brojane vrednosti, unose neposredno na sva mesta u program. Na prvi pogled to ne bi bilo nita strano, ali kada bi dolo do promene zakonski propisanih stopa nastao bi mukotrpan rad. To bi zahtevalo promenu brojeva (stopa) u svim programskim blokovima u kojima se oni nalaze. Trebalo bi pregledati sve programske kodove i ispraviti na svakom mestu nevaeu stopu. Ovo ne samo to je dugotrajan rad, ve lako mogu nastati i greke.

Objektno orijentisano programiranje

107

Jednostavno prevideemo na nekom mestu u programu promenu stope. Uvoenjem konstanti ovaj problem se elegantno reava. Da bismo saoptili raunaru da ona postoji treba da je deklariemo (saoptimo). To se u Visual Basicu.Net-u izvodi editoru koda za dati obrazac (npr. Form1.vb). Kada se otvori pojavie se oblast za deklaracije (Declaration area) obrasca kao na slici 53.

Slika 53: Deo za deklarisanje

Slubena re za deklarisanje konstante je Const nakon ega sledi ime konstante (u ovom primeru StopaPIO). Vrednost stope doprinosa penzijskog osiguranja je 11% (trenutna vrednost u doba pisanja knjige) to se konstanti dodeljuje znakom jednakosti. Primer deklarisanja u editoru koda obrasca Form1: 11% = 11/100
Public Class Form1 Const StopaPIO As Decimal = 0.11

Private Sub ObradaDoprinosa_Click(ByVal sender As System.Object, ByVal e As System._ EventArgs) Handles ObradaDoprinosa.Click Dim Bruto As Decimal Dim PIO As Decimal Bruto = txtBruto.Text PIO = Bruto * StopaPIO

108

Objektno orijentisano programiranje


MessageBox.Show("PIO: " & PIO) End Sub

End Class

Slika 54: Primena konstante u programu

Ako pokrenemo program prethodno napisani kodovi e se izvriti i prikazae nam se kao rezultat obrade iznos doprinosa za penzijsko i invalidsko osiguranje u MessageBox-u (slika 54). U zakljuku moemo rei da su konstante rezervisana memorijska polja u koje se smetaju nepromenljive vrednosti. Odreeni su programskim kodovima i ne mogu se menjati u toku izvravanja programa (run-time).

5. 4 Komentari
Opet jedna karakteristika svih jezika, bilo da su programski alati starijih verzija, bilo da se radi o savremenim alatima, to su komentari. Oni se mogu uneti u redove kodova, a da ne ometaju izvrenje programskih linija. Kao to smo rekli svi jezici podravaju komentare i u zavisnosti od jezika imaju posebne oznake: u C# se komentari oznaavaju sa // u Javi se komentari oznaavaju sa /* ili // (ima vie naina upotrebe) u VB se komentari oznaavaju sa (apostrofom).

Objektno orijentisano programiranje

109

Tekst koji sledi iza oznake kompajler ne uzima se u obzir. Programeri vole da koriste komentare, zbog toga to se ukratko mogu navesti pojedini koraci u kodovima. Koristi se za opis koda koji sledi. Jednostavno moe sluiti za podsetnik ili ako neko drugi gleda va kod imae jasan uvid ta program radi.

5. 5 Prazan prostor
Jo jedna znaajna karakteristika programskih jezika, upotreba praznog prostora. Uglavnom se radi o estetskom izgledu programskih linija (kodova). Ipak prazan prostor izmeu blokova naredbi utie na preglednost, urednost napisanih kodova (slika 55). Postoji odreeno nepisano pravilo po kom se pridravaju programeri: uvlaenje redova programskih kodova. Kada se pie podprogram ona se najpre definie (u VB.NET-u automatski se pojavljuje poetak i zavretak podrutina). Ono to se pie izmeu su vae programske linije (kodovi), odnosno instrukcije ta e taj dogaaj da uradi.

Slika 55: Prikaz upotrebe praznog prostora u programskim kodovima

Ovaj deo teksta se uvlai npr. za jedan Tab. Kada imamo vie programskih blokova u kodu jedne podrutine njih razdvajamo praznim prostorima. Oni takoe ne utiu na izvravanje programskih linija, niti e biti sporije izvrene.

5. 6 Rad sa brojevima
Kada vrimo aritmetike operacije radimo sa brojanim veliinama. One mogu biti: celobrojne ili sa decimalnim vrednostima. Celobrojne vrednosti se retko koriste u procesu programiranja, zbog same prirode raunanja, bilo u poslovnoj oblasti, bilo u naunoj oblasti.

110

Objektno orijentisano programiranje

Njih je zgodno koristiti recimo kod rednih brojeva, koji se nikako ne smeju pojaviti u decimalnom obliku. Tada sa deklarisanjem promenljive kao Integer mi ujedno i ograniavamo na program. Jedan takav primer je recimo ifre zaposlenih koje odreuje programer. Oni e uvek polaziti od vrednosti 1 i nastavie se do ukupnog broja zaposlenih lica. To prua mogunost adekvatnog baratanja podacima koji su vezani sa rednim brojevima. Kao to je ve spomenuto u ovakvim sluajevima e se promenljiva deklarisati kao Integer, kao to vidimo i u narednim primerima aritmetikih operacija. Primer (deklarisanje celobrojnih vrednosti):
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim A As Integer A = 16 A = A + 8 MessageBox.Show("Rezultat je: " & A,_ "sabiranje INT") End Sub

Rezultat je prikazan u ovom obliku (slika 5 6):

Slika 56: Sabiranje celobrojnih vrednosti

Dim A As Integer A = 16 A = A - 2 MessageBox.Show("Rezultat je: " & A,_ "Oduzimanje INT")

Objektno orijentisano programiranje

111

Slika 57: Oduzimanje celibrojnih vrednosti

(Tri take pre i posle naredbi oznaavaju da kodu prethodi deklaracija podrutine, koja se automatski pojavljuje i zbog skraenog oblika samo se navode oni kodovi koji su potrebni za reavanje problema. Objanjenje podrutina sledi u narednim oblastima. Takoe treba napomenuti da i crtica na kraju reda podrutine Sub ... samo se u ovom tekstu koristi za razdvajanje redova da bi bilo preglednije. U kodu to nema. )
& A, _

Dim A As Integer A = 3 A = A * 5 MessageBox.Show("Rezultat je: " & A,_ "Mnoenje INT")

Slika 58: Mnoenje celobrojnih vrednosti

Dim A As Integer A = 21 A = A / 7 MessageBox.Show("Rezultat je: " & A,_ "Deljenje INT")

112

Objektno orijentisano programiranje

Slika 59: Deljenje celobrojnih vrednosti

Ovde moramo navesti da postoji i drugaija stenografija, da se ne bi neko zbunio ako naie na takav nain pisanja izvoenja aritmetikih operacija. Analogno prethodnim navedenim kodovima oni su sledei:
Dim A As Integer A=16 A+=8 Dim A As Integer A=5 A*=3 Dim A As Integer A=16 A-=2 Dim A As Integer A=21 A/=7

Vano je istai da kada radimo sa celobrojnom matematikom (Integerom), a vrednosti su decimalne postoji odreeni problem. Brojevi se pri izvravanju koda zaokruuju. Primer:

Dim A as Integer A=3 A=A*2.75

Oekivani rezultat bi bio 6,75, ali poto se radi sa celobrojnom matematikom, rezultat e biti u ovom sluaju 7, a ne 6,75. Raunar e po pravilu zaokurivanja brojeva da uzme veu vrednost, jer je naredni broj (broj iza zareza) vee od 5. Da je oekivani rezultat recimo 6,34 vrednost stvarni rezultat u ovom sluaju bi bio 6. Ovde je dat primer sa aritmetikom operacijom mnoenja, inae ovo vai za sve aritmetike operacije.

Objektno orijentisano programiranje

113

Zbog ovih razloga uglavnom aritmetike operacije sa promenljivama koji sadre brojane vrednosti deklariu se tako da one budu zgodne za matematiku sa pokretnim zarezom. Ova vrsta promenljivih se deklarie pomou Double, Single ili Decimal, u zavisnosti od veliine koja nam je potrebna (slike: 510, 511, 512 i 513). Double znai da se radi sa brojevima dvostruke vrednosti i zauzima vei prostor u memoriji. Decimal prikazuje brojeve sa jo veom tanou. Ovde se radi o veem opsegu. Promenljive koje se odnose na naune podatke neizostavno se definiu na ovaj nain. Inae ako nije potrebna tolika tanost decimala moe se definisati i kao Single, tj. brojevi jednostruke vrednosti. Kako emo promenljivu deklarisati pri matematici sa pokretnim zarezom zavisi od granice gde e raunar prestati da rauna decimalnu komponentu. Primer a)
Dim A As Decimal A = 22 A = A / 7 MessageBox.Show("Rezultat je: " & A,_ "Deljenje DEC")

Slika 510: Aritmetika operacija deljenja kada se broj deklarie kao Decimal

Primer b)

Dim A As Double A = 22 A = A / 7 MessageBox.Show("Rezultat je: " & A,_ "Deljenje Double")

114

Objektno orijentisano programiranje

Slika 511: Aritmetika operacija deljenja kada se broj deklarie kao Double

Primer c)
Dim A As Single A = 22 A = A / 7 MessageBox.Show("Rezultat je: " & A,_ "Deljenje Single")

Slika 512: Aritmetika operacija deljenja kada se broj deklarie kao Single

Slika 513: Uporedni prikaz rada sa razliitim deklarisanim opsegom promenljive

Objektno orijentisano programiranje Promenljive sa pokretnim zarezom se deklariu na sledei nain:


Dim A As Decimal Dim A As Double Dim A As Single

115

5. 7 Rad sa stringovima
U programskim kodovima ne radimo samo sa brojanim veliinama, ve i sa znakovnim vrednostima. String znai kolekciju znakova i odnosi se na tekstualne forme. Pored teksta i brojevi se mogu prikazati kao stringovi. U tom sluaju se radi konvertovanje broja u string. String koji elimo da se pojavi u na ekranu u programskom kodu moramo posebno naznaiti. Oznake za string su navodnici. Ako postavimo tekst izmeu navodnika raunar e to tretirati kao string, inae e tumaiti kao deo programskog koda, i na program nee funkcionisati onako kako mi elimo. Time ograniavamo i duinu stringa koji e se pojaviti, odnosno odreujemo poetak i kraj stringa. Uzmimo najjednostavniji primer ime se zapoinje uenje programiranja Hello World! . Programski kod je sledei:

Rezultat koji e se prikazati na ekranu ilustruje slika 514:

Slika 514: Rad sa stringom

116

Objektno orijentisano programiranje

5. 8 Povezivanje (konkatenacija)
Pod konkatenacijom podrazumevamo povezivanje neega u lanac, seriju. Obino se izvodi kod stringova. Oznaka za konkatenaciju je & (et: logogram za veznik i u Engleskom jeziku), to smo dosada koristili u primerima u Messagebox-u. U narednom, prikazan je primer kada imamo dva stringa koje treba povezati:
S1=Hello S2=, World! Dim S1 As String S1= Hello Dim S2 As String S2=, World! Dim S As String S=S1&S2 prikai rezultat MessageBox.Show(S, Konkatenacija)

...

...

Rezultat (slika 415 ) e biti isto kao na slici 514:

Slika 515: Povezivanje stringova

Postoje jo neke stvari koje moemo izvesti sa stringovima od kojih emo neke i spomenuti kao to je vraanje duine stringa, izdvajanje podstringa, formatiranje stringa i zamena delova stringa. Razlog objanjenja ovih postupaka je to to su veoma korisni u praktinom radu. Vraanje duine stringa To emo izvesti na sledeem primeru. Kreira se forma (Form1 koja se automatski pojavljuje pokretanjem novog projekta) i dodajemo TextBox kontrolu na formu kao na slici 516.

Objektno orijentisano programiranje

117

Slika 516: Forma sa kontrolama za program vraanja duine stringa

Zatim izmenjaemo svojstvo Name (brisanjem postojee teksta:TextBox1) na txtA koji e biti naziv TextBox-a. Nakon toga dodaemo jo jednu kontrolu: dugme pod nazivom Duina. Takoe izvesti potrebne izmene u svojstvima Name (btnDugme) i Text (umesto Button1 - Duzina). Nakon toga dodaemo kod dugmetu Duina:
Private Sub btnDugme_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDugme.Click Dim A As String A = txtA.Text 'prikai duinu teksta MessageBox.Show(A.Length & " znakova") End Sub

Kada pokrenemo program pojavie se forma kao na slici 517. Unosom teksta u polje i aktiviranjem dugmeta Duzina dobiemo rezultat izbrojanih znakova, gde su uraunati i prazni znakovi.

Slika 517: Vraanje duine stringa

118

Objektno orijentisano programiranje Podstringovi

Podstringovi su setovi podataka. Primenjujemo ih kada elimo da izdvojimo neke delove stringa. Demonstriraemo na primeru unosa jedinstvenog matinog broja graana (JMBG). Prvih sedam brojeva ukazuje na datum roenja osobe, zatim dva broja pokazuju region tj. prebivalite osobe i poslednja etiri znaka se odnose na jedinstveni broj sa kontrolnim brojem. Kreiraemo formu sa jednim textbox-om i jednim dugmetom za izvrenje programskog koda kao na slici 518. Ono to elimo postii je da se posebno prikae datum roenja osobe, region prebivalita i jedinstveni broj osobe kada se u polje na formi unese broj JMBG-a. Treba napomenuti da ovde nije ogranieno da li se mora uneti neto npr. korisnik, pa ako se nita ne unese program e da blokira, i javie greku.

Slika 518: Postupak izdvajanja podstringa

Programska naredba kojom emo ostvariti zadatak je sledea:


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim A As String A = txtA.Text

Objektno orijentisano programiranje

119

'prikai sadem poetna znaka MessageBox.Show(A.Substring(0, 7), "Datum roenja") 'prikai dva znaka u sredini poevi od osmog MessageBox.Show(A.Substring(7, 2), "Region") 'prikai etiri krajnja znaka MessageBox.Show(A.Substring(A.Length - 4), _"Jedinstveni broj") End Sub

Formatiranje stringa

Kada govorimo o formatiranju stringa mislimo na nain prikazivanja promenljive. U praktinom radu esto se susreemo sa podacima koje u okviru uvanja ili obrade imaju odreeni oblik, a da se prilikom prikazivanja zahteva promene u neki drugi format. Najei sluaj sa kojim se susreu programeri je formatiranje brojeva. Obino se to odnosi na neke specifine poslovne procese, recimo u oblasti finansija, gde se zahteva da se prikau samo dve decimale. Kako to da izvedemo objasniemo na primeru deljenja dva broja. Podeliemo 11 sa 2,15 pri emu je rezultat deljenja prikazan na slici 519.
...
Dim A As Double A = 11 A /= 2.15 MessageBox.Show("Rezultat: " & A)

...

Slika 519: Rezultat deljenja u neformatiranom obliku

Ovaj broj se moe formatirati tako da prikae samo dve decimale kao to je to na slici 5 20

120

Objektno orijentisano programiranje

Slika 520: Rezultat deljenja u formatiranom obliku

Programska naredba koja ostvaruje rezultat aktiviranjem dugmeta je:


Dim A As Double A = 11 A /= 2.15 'prikai bez formatiranja MessageBox.Show("Rezultat: " & A) 'prikai formatirani rezultat MessageBox. Show("Rezultat: " & String.Format("{0:n2}", A))

...

U formatiranju brojeva koristi se metod String.Format, iji zadatak je da formatira broj, koji e u konanom obliku biti string.

Formatiranje se odvija tako to imamo nulti parametar podataka (0), gde navodimo da se formatira A, a broj 2 za parametar (n2) ukazuje na broj decimale. Na ovaj nain kaemo da se formatira drugi parametar (A). Zamena delova stringa Ovaj postupak se svodi na manipulaciju sa stringovima. Nekada je potrebno zameniti delove stringa i za to postoji odreeni nain kako se to radi. Kreiraemo formu sa dve kontrole (slika 421). Jedna kontrola je polje za unos i dugme gde e se izvriti sledei kod pokretanjem programa:

Objektno orijentisano programiranje

121

Private Sub Button1_Click(ByVal sender As System.Object,_ ByVal e As System.EventArgs) Handles Button1.Click Dim S As String S = txtS.Text Dim noviS As String noviS = S.Replace("Hello", "Goodbye") 'prikai MessageBox.Show(noviS) End Sub

U prikazanom rezultatu na slici 521 vidimo da se promenio deo stringa i umesto Hello sad se nalazi Goodbye. Kljuna re je Replace pri emu se trai prvi parametar i zamenjuje sa drugim. Ako se unese neto drugo a ne definisani parametar Hello za zamenu, koja je navedena u kodu, nee se nita desiti. Odnosno prikazae se kao rezultat smeten tekst u promenljivu noviS.

Slika 521: Zamena delova stringa

122

Objektno orijentisano programiranje

5. 9 Rad sa Datumima
Kod datumskih formi upotrebljava se kljuna re za deklarisanje Date.
...
Dim Datum As Date Datum = Date.Now() MessageBox.Show(Datum)

...

Ovaj deo koda: Date.Now() vratie nam tekui datum i vreme, odnosno sistemsko vreme koje pokazuje raunar. Zbog toga format i vremensko razdoblje prikazivanja podeavaju se sistemski. Takoe postoji mogunost formatiranja datuma i vremena. Moemo prikazati samo datum ili samo vreme i u razliitim oblicima (slika 522 ).
MessageBox.Show(Datum.ToLongDateString) MessageBox.Show(Datum.ToShortDateString) MessageBox.Show(Datum.ToLongTimeString) MessageBox.Show(Datum.ToShortTimeString) (1) (2) (3) (4)

522: Razliito formatirani prikazani datumi

Objektno orijentisano programiranje

123

Osim toga datumska promenljiva se moe formatirati tako da prikazuje samo mesec, dan, godinu, sat, minut, sekundu, dan u nedelji, dan u godini. MessageBox.Show (Mesec: & Datum.Month) MessageBox.Show (Dan: & Datum.Day) MessageBox.Show (Godina: & Datum.Year) MessageBox.Show (Sat: & Datum.Hour) MessageBox.Show (Minuta: & Datum.Minute) MessageBox.Show (Dan u nedelji: & Datum.DayOfWeek) MessageBox.Show (Dan u godini: & Datum.DayOfYear)

Slika 523: Prikaz delova datumske promenljive

Ovde emo jo spomenuti upotrebu kontrole pomou koje se moe odabrati datum DateTimePiker. Unosi se u formu iz kutije sa alatkama (Toolbox-a) i nudi oblik kao to to prikazuje slika 524. Ovo je zgodna alatka koja korisniku moe pruiti mogunost odabira bilo kog datuma iz palete ponuenih.

124

Objektno orijentisano programiranje

Slika 524: Upotreba kontrole za odabir datuma (DateTimePiker)

6. OBJEKTNO ORIJENTISANO PROGRAMIRANJE


Objektno orijentisano programiranje (OOP) je paradigma koja se zasniva na korienju objekata i njihovih interakcija pri dizajniranju aplikacije odnosno izrade raunarskih programa. Programerska tehnika u OOP ukljuuje sledee: sakrivanje informacija, enkapsulaciju, modularnost, polimorfizam i nasleivanje. Od nastanka prvih programskih jezika pristup u kreiranju logikog reenja problema nije se mnogo menjalo, ali uvoenjem objektno orijentisanog programiranja izrada aplikacija je znaajno olakana. Znai da iznalaenje reenja izrade softvera na loginom nivou jo uvek ima korene u prvim danima nastanka ove naune oblasti, ali i u primenjenim granama, meutim, razvoj alata je dovelo do unapreenja programerskog rada. Objektno orijentisani alati se aktuelizuju 90-tih godina, iako zaeci potiu jo iz 60-tih uvoenjem objekata kao programskih entiteta. Do takvog razvoja dolazi usled konfrontacije programera sa sve sloenijim

126

Objektno orijentisano programiranje

hardverskim opremama i sloenijim zadacima to se odrazilo na kvalitet softverskih reenja. Prvi projekat na kojem se susreu sa takvim kompleksnim problemom je izrada softvera za modelovanje kretanje brodova kroz prolaznu kapiju (rampu) pod razliitim uticajima. Tu se pokazuje eksplozivan broj mogunosti uslova pod kojima brodovi mogu biti izloeni. Projektanti softverskog sistema dolaze na ideju da se brodovi klasifikuju kao objekti odnosno da se izvri grupisanje brodova, pa se brodovi svrstavaju u klase. Pri tome formiran je model objekta sa kojim se moe dalje eksperimentisati i izloiti ga raznim uticajima. Osnovna ideja je u sutini da se nae reenje modelovanja realnog okruenja. Prema tome, karakteristika raunarskih tehnologija je kontinualan razvoj kako hardverskih, tako i softverskih alata. Istraivai su traili nain da odre nivo kvaliteta softvera pri emu su razvili razne alate u cilju da pojednostave programerske aktivnosti. Cilj je da se izbegne onaj dosadni deo pisanja softverskih kodova koji oduzimaju veoma dugaak vremenski period u proceduralnim jezicima. Metodologija u OOP se fokusirala na podatke, a ne na procese tj. na kreiranju objekata koji sadre sve informacije za manipulaciju sa sopstvenim podacima, nasuprot proceduralnim jezicima. Naglasak je na diskretnim jedinicama koje mogu ponovo da upotrebe logiku programiranja (nasleivanje). ta je OOP? OOP je skup objekata koji se meusobno povezuju u cilju da formiraju aplikaciju . Pogodnosti objektno orijentisanog programiranja odraavaju se u lakom odravanju programskih kodova, u mogunosti ponovne upotrebe kodova kroz enkapsulaciju i u mogunosti proirivanja funkcionalnosti klase.

6. 1 Osvrt na MICROSOFT.NET FRAMEWORK


Visual Basic.Net je alat kojim se u ovoj knjizi demonstrira objektno orijentisano programiranje. Kao to je ve spomenuto u knjizi ovaj alat je zasnovan na NET tehnologiji iju osnovu ini Microsft.NET Framework. Cilj Microsoft korporacije je bio da stvori takvu programsku platformu

Objektno orijentisano programiranje

127

koja e omoguiti izradu aplikacija pod raznim Windows operativnim sistemima. Prepoznavajui znaaj Interneta i njegov uticaj na programerski svet, u Microsoftu su odmah usmerili razvoj softverkih tehnologija u pravcu mrenih aplikacija, Web aplikacija i Web servisa. Stvorena je platforma sa nizom funkcionalnosti ujedno nudei iroku lepezu alata obuhvaenih pod istom kapom, a koja nadograuje mogunosti operativnih sistem. Osnovna ideja je bila kako da se olaka rad programera, stoga, sadri i veliki broj gotovih reenja za razvoj aplikacija. Povoljnosti se pokazuju u primeni razvojnog okruenja u kome se izrauje aplikacija, bilo da se radi pri lokalnim izvrenjem instrukcija ili mreno, zatim u sigurnosti izvrenja programskih naredbi i u konzistentnosti programerske prakse kroz razne vrste aplikacije. Osnovno pitanje je o emu se ovde radi? ta je ta pogodnost koja se prua programerima? Najjednostavnije reeno, jednim delom izvrenja aplikacije upravlja platforma u .NET tehnologiji, odnosno .NET Framework , dok je sa ostalim delom izvrenja programskih kodova direktno zaduen centralni procesor. .NET Framework je sloena arhitektura koja sadri niz komponenti. Razlikujemo dve glavne komponente .Net Framework-a: Commom Language Runtime (CRL) i .NET Framework Class Library (FCL) Commom Language Runtime (CRL) je deo koja ima ulogu virtuelne maine. To je koji sistem koji je zaduen i za izvravanje i za upravljanje programskim kodovima u realnom vremenu. Drugi deo .NET Framework-a je Framework Class Library (FCL). On je potpuno objektno orijentisan, jer sadri ogroman skup klasa nezavisnih od programskog jezika. Sutina objektne orijentisanosti je da putem upotrebe postojee klase prenosimo funkcionalnosti na nae programske kodove na novo kreirane klase. Upotreba klase nije ograniena samo na sloene postupke, ve putem njihove primene obavljamo i najbanalnije zadatke kao to su pristupi datotekama, upravljanje stringovima, rad sa kolekcijama i slino. 61. Kako .NET Framework funkcionie ematski je ilustrovan na slici

Kao to je ve dosada spomenuto u knjizi, aplikacije se kreiraju pomou programskih jezika, a potom se interpretiraju i prevode na mainski jezik.

128

Objektno orijentisano programiranje

U treem poglavlju je objanjenje funkcionisanja raunara uproeno, ali su sutinske funkcije istaknute. Sada emo otii malo dalje i udubiti se u princip .NET izrade aplikacije. Poto se radi o programiranju pomou alata .NET postupak prevoenja i uloga operativnog sistema je malo sloenija.

Slika 61: Ilustracija funkcionisanja .NET Framework-a

U izradi .NET aplikacije izvorni kod se kreira pod .NET platformom. Programske instrukcije se neminovno pretvaraju u binarni oblik (mainski kod) da bi raunar mogao da ih razume. Proces se odvija tako to se pokretanjem aplikacije prvo prevodi izvorni kod na Microsoft Intermediat Language (MSIL). To je sloj koji predstavlja skup instrukcija nezavisnih od centralnog procesora i potuje pravila Common Language Specifications (CLS). Ova pravila su vana zbog toga to se aplikacija moe kreirati u bilo kom programskom jeziku. Poto svaki jezik ima svoje specifinosti, CLS pravila obezbeuju kompatibilnost sa .Net Framework-om i interoperabilnost meu aplikacijama. Uporedo sa kompajliranjem na MSIL formiraju se Meta podacima koji e pruiti informacije o elementima, klasama, referencama itd. neophodnih za izvravanje instrukcija koje obavlja Common Language Runtime (CLR). Zatim se Common Language Runtime (CLR) stara o stabilnosti i funkcionalnosti aplikacije na osnovu pronaenih meta podataka, dok je za prevod izvornih instrukcija u mainskom kodu zaduena komponenta Just in Time (JIT). Kao to i samo ime kae proces prevoenja ove komponente se odvija u realnom vremenu. CLR u sutini predstavlja izvrno okruenje. To je sloj koji se nalazi izmeu operativnog sistema i aplikacije kreirane pomou nekog od .NET programskog jezika.

Objektno orijentisano programiranje

129

Da sumiramo ulogu .NET platforme u kreiranju aplikacije. Karakteristino je da se aplikacije pod ovom platformom mogu izraditi u bilo kom programskom alatu: J#, C#, VB.Net itd. (slika 62). Zatim e CLR prevesti izvorne programske kodove na mainski jezik. Meutim, prevoenje nije tako neposredno i jednostavno, jer CLR ne poznaje nijedan programski jezik. On iskljuivo tumai i izvrava naredbe u MSIL-u. Zbog toga se najpre prevodi programski jezik u MSIL pomou IL (Intermediat Language) kompajlera i zatim na osnovu MSIL naredbi CLR prevodi na mainski jezik.

Slika 62: Prevoenje instrukcija u .NET tehnologiji

6.2 Objekti
Iako izraz objektno orijentisano zvui veoma bombasto i zastraujue, danas se smatra da ta tema nije tako strana kao pre nekih petnaest godina. U cilju da razjasnimo ta je koncepcija objektne orijentisanosti poeemo od objanjenja ta je objekat.

130

Objektno orijentisano programiranje Objekat je sve ono to nas okruuje. Moe biti recimo bicikl, lampa, radio, pas, korisniki izvetaji znai, bilo ta iz naeg okruenja.

Uvoenjem objekata mnogo se pojednostavio rad programera, jer su objekti pretvorili softversko inenjerstvo u neto konceptualno slino drevnim gradivnim blokovima. Koncept izrade programa putem proceduralnih jezika ine pisanje gradivnih blokova po odreenom redosledu. Slina je postavka i u objektno orijentisanom pristup izrade aplikacija. U cilju da se formira celina od sume objekata oni se araniraju po odreenom redosledu. Objekti su veoma korisni. Njihova snaga je u tome da ih moe koristiti i onaj ko ne razume kako su sastavljeni. Sutina je da moemo kreirati objekat, traiti od njega da neto uradi, ali mi ne moramo znati kako njegovi unutranji delovi to obavljaju. Objanjenje samog koncepta upotrebe objekata u literaturama se esto svodi na analogiju sa funkcionisanjem televizora kao to to ilustruje slika 63 . Korisnika interesuje koji je taj objekat (TV), koje je to trenutano stanje (koji kanal gleda) i koje ponaanje ispoljava (promena kanala) odnosno prelazak iz jednog stanja u drugi.

Slika 63: Analogija upotrebe objekata sa upotrebom TV

Objektno orijentisano programiranje

131

Prema tome osobenost softverskih objekata pokazuju se u sledeim karakteristikama: identitet, stanje i ponaanje. Da bi se bolje razjasnio rad sa objektima ilustrovaemo to na jo dva primera. Uzmimo na primer maku. Maka je objekat za koje treba utvrditi stanje i ponaanje. Identitet objekta je Maka, koje moe imati stanje {ime, boja,glad,...} i ispoljiti ponaanje {mijaue, mae repom, umiljava se,... }. Drugi primer objekta moe biti bicikl. Identitet objekta je bicikl. Sada ostaje da se utvrdi stanje i ponaanje tog objekta. Stanje opisuje sledei skup svojstava: Stanje = {trenutna brzina, trenutni poloaj pedale, trenutno stanje menjaa}, dok se za ponaanje moe navesti sledei skup: ponaanje={promena koenje}. brzine, promena poloaja pedale,

Prema tome, osnovna pitanja koja se postavljaju pri kreiranju objekta su: koja su mogua stanja objekta koji on moe imati i koje mogue ponaanje e on ispoljiti? to smo na prethodnim primerima i pokazali reprezentujui nain razmiljanja u objektno orijentisanom programiranju. Da bi objekat u aplikaciji imao ove karakteristike mi moramo to nekako saoptiti raunaru, moramo ispoljiti na neki nain uticaj. U sutini na objekte utiemo kroz METODE i SVOJSTAVA (slika 64). Ovo su sada novi pojmovi koje emo sada da razjasnimo: METODE za njih moemo rei da je to neto to zadajemo objektu da radi, a SVOJSTVIMA se opisuju osobine objekata.

132

Objektno orijentisano programiranje Objekat pohranjuje svoje stanje u polja (ili kako u nekim programskim jezicima to nazivaju: VARIJABLAMA) i iskazuju svoje ponaanje kroz metode.

Slika 64: Ilustracija uticaja na objekte

Svaki objekat je sposoban da prima podatke, obrauje ih i da poalje podatke drugom objektu. To znai da struktura podataka ima tendenciju da nosi svoje operatore sa sobom (ili u najmanju ruku da ih nasledi od nekog slinog objekta). To je velika razlika u odnosu na konvencionalni pristup programiranja, gde se podaci i ponaanje posmatraju zasebno.

6. 3 Enkapsulacija
Enkapsulacija je osnovni princip na kome se zasniva objektno orijentisano programiranje. Opet jedna krupna re sa kojom se susreemo. U osnovi se radi o veoma jednostavnoj stvari. U emu je sutina? Jednostavnijim jezikom reeno dolazi do sakrivanja unutranje logike objekta, ali strunije objanjenje je vezano za objekte i za njegove metode. U prethodnom smo rekli da METODE rade sa objektovim unutranjim stanjem i primorani su za komuniciranje objekta sa drugim objektom. UNUTRANJE STANJE se sakriva i sva interakcija meu metodama objekata je enkapsulirana. Enkapsulaciju moemo prezentovati analogijom dugmeta zasnovanog na principu crne kutije. Osnovni princip je u tome da imamo jednu kutiju sa dugmetom (slika 65). Pritiskom na dugme ta kutija treba neto da uradi. Naa uloga u tome je da poveemo kutiju sa nekim elementom da bi ona mogla da

Objektno orijentisano programiranje

133

izvri svoju funkciju. Mi nemamo potrebe da znamo ta ona zapravo radi. Ono OSNOVNO ZNANJE to je potrebno da imamo je kako se kutija povezuje.

Slika 65: Analogija principa crne kutije sa objektom

Sklapanjem kutija (objekata) se pravi kompleksan sistem, ali mi ne treba da kreiramo kutije (objekte). One su nam ve na raspolaganju, samo treba da ih upotrebimo.

6. 4 Dogaaji
Iako se dogaaji retko razmatraju kada se objanjava objektna orijentisanost, spomenuemo radi razjanjenja ta je to. Dogaajima odreujemo kada e se neto desiti u kontroli na obrascu. Smatra se da objekat zna ta e da uradi kada mu se zada dogaaj. Jedan od esto korienih dogaaja je i dogaaj Click. Dogaaj navodimo kada na odabranu kontrolu (Button) stanemo i dvoklikom otvorimo ureiva koda (slika 66).

Slika 66: Dogaaj Click za kontrolu Button1

134

Objektno orijentisano programiranje

Pojavie se i deo funkcije gde moemo navesti ta e taj dogaaj da bude. Recimo da elimo da se obrazac zatvori kada se pritisne dugme (aktivira se kontrola Button na dogaaj Click). Izraz koji se koristi za aktiviranje programskog koda navedenog u funkciji je POKRETANJE METODE a to je analogno izrazu koji se ranije koristio za pozivanje funkcije.

6.5 Apstrakcija objekata:VIDLJIVOST


Druga vana karakteristika koncepta objektno orijentisanih jezika je mogunost apstrakcije objekata. ta se pod tim podrazumeva je veoma jednostavno. Cilj je da objekti u dovoljnoj meri odraavaju deo realnog sveta koje prezentuju da bi bili jednostavni za korienje. Poenta je da razvijalac ne mora da zna tano ta se izvrava u pozadini objekta. Ovde se radi o mogunosti korisnika da upotrebi objekat bez zalaenja u neke detaljnije sfere programskih kodova. U odnosu na to delovi objekata mogu biti privatni ili javni. Privatne interfejse treba da razumete vi, dok javni interfejsi spadaju u domen razvijalaca koji koriste vae objekte.

6. 6 Klase objekata
Klasa predstavlja definiciju objekta u obliku softverskog koda. To je ono to je unutar crne kutije koju smo spomenuli u prethodnom primeru. Poto se radi o objektu, unutranjost je programski kod pisan u Visual Basic.NET-u. Sada dolazi do izraaja razumevanja kako rade unutranji delovi, kako radi crna kutija. Klasa objekata se kreira u toku razvoja aplikacije i pisanja softverskog koda. Kada pokrenemo novi projekat automatski se kreira klasa Form (slika 67).
Public Class Form1 End Class

Objektno orijentisano programiranje

135

Slika 67: Prikaz klase u editoru koda

Za prvi obrazac Form1 klasa zapoinje sa kljunom rei Public Class i zavrava se sa End Class oznaavajui kraj koda za tu klasu. Klasa definisana sa Public upuuje na to da je klasa pristupana svim ostalim kodovima u aplikaciji. U toku izrade aplikacije moe se kreirati niz primera klase. Ako imamo n objekat imaemo n primerak klase. Kada se pokrene aplikacija tada se od kreiranih klasa formiraju objekti. U sutini formiranjem primeraka klase stvaramo objekat. Da bismo na odgovarajui nain koristili objekat mi moramo nekako i manipulisati sa njima. To se ostvaruje putem definisanja njihovih karakteristika i metoda. Na primer moemo kreirati klasu BICIKL a da na osnovu njega formiramo razne objekte iste klase: sportski bicikl, muki bicikl, tandem bicikl i brdski bicikl. Poto sva etiri objekta dele istu klasu primeri su klase BICIKL imae iste karakteristike i metode kao klasa BICIKL. U okviru ovog dela osvrnuemo se i na klasini primer objekta, a to je MessageBox. On pripada klasi (primerak klase) System.Forms. MessageBox i deo je radnog okruenja. Kada navedemo u programskom kodu sledeu naredbu:

136

Objektno orijentisano programiranje

mi znamo da e se pokretanjem programa prikazati prozori u kome e se ispisati navedeni tekst Hello World!. Mi jedino znamo da emo dobiti poruku, ali ne znamo nita o tehnologijama za prikazivanje polja i ekanja na ulaz, jer je funkcionalnost prikazivanja prozora i teksta enkapsulirana u samom MessageBox-u. 6. 6. 1 Izgradnja klasa Klase se kreiraju kada se gradi aplikacija. Obino se primenjuju klase koje su ve ugraene u okruenje. U .NET-u postoji ogroman skup klasa pod nazivom Microsoft.NET Framework Classes. U ovakve objekte Framework-a spadaju objekti koji obezbeuju funkcionalnost tampanja i funkcionalnost pristupa bazi podataka. Sa druge strane postoje objekti koji se ne mogu nai u Framework-u. Recimo da treba da izradimo raun za korisnike i da ih dotampamo. Potrebni koraci su u tom primeru:

U ovom primeru objekti Korisnik i Raun ne postoje u Framework-u i njih treba da kreiramo. Kreiranje klasa se odvija pomou Solution Explorera za projekat koji razvijamo. Projekat je sauvan pod nazivom Proba i za njega kreiramo klase tako to na naziv objekta stanemo pokazivaem i klikom na desni taster dodamo novu klasu (Add>New Item). Aktiviranjem New Item prikazae se Template prozor kao to prikazuje slika 68. Korisniku se tada

Objektno orijentisano programiranje

137

nudi da odabere stavku koju hoe da kreira. Moe da kreira novu formu, dijalog, klasu itd. U ovom primeru odabraemo Class iz Template prozora i kreirati klasu pod nazivom Klasa1. Neophodno je izmenjati naziv klase od ponuenog i dati novi naziv (kao i kod kontrola) zbog toga to posle nekoliko meseci neemo znati ta je Class 1. Kreirana klasa e se pojaviti u obliku kao to to prikazuje slika 69.

Slika 68: Kreiranje nove klase

Osim novih klasa esto se upotrebljavaju i moduli u aplikacijama. Moduli se koriste kada treba da izdvojimo podrutine izvan klase npr. Form1. Poenta upotrebe modula je da su podrutine napisane u njemu nezavisne od klase u kome se pozivaju. Jednom napisana procedura ili funkcija moe se primeniti u razliitim klasama, to je pojednostavilo izradu aplikacija.

138

Objektno orijentisano programiranje

Slika 69: Prikaz nove klase u aplikaciji

Slika 610 prikazuje dodavanje podrutine ispod Public Class Form1. Kao to se vidi podrutina Sub dodavanje je podvueno, to upuuje na greku.

Slika 610: Uvoenje podrutine izvan klase

Da bismo izdvojili ovu proceduru i smestili u modul, treba prvo da kreiramo taj modul. Postupak kreiranja modula je identian kreiranju klasa, a zatim dodajemo programske linije za dodavanje broja 10 izmeu Module Module1 i End Module:
Module MojModule Public Sub dodavanje(ByVal broj As Integer) Dim A As Integer A = broj + 10 MessageBox.Show(A)

End Sub End Module

Objektno orijentisano programiranje

139

U svrhu upoznavanja primene modula vratiemo se na obrazac Form1 i dodati jedno dugme. Dvoklikom na dugme otvara se editor koda i u podrutini dugmeta Sub Button1 poziva se procedura Sub dodavanje iz modula MojModul.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Call dodavanje(10) End Sub

Kada se pokrene aplikacija i aktivira dugme Button1 prikazae se poruka kao na slici 611. Kreirana klasa i modul prikazivae se na jednoj traci iznad editora kod-a, to daje mogunost kretanja kroz datoteke, jer su oni unutar svoje datoteke.

Slika 611: Rezultat obrade podataka procedure Sub dodavanje

6. 6.2 Mogunost ponovnog korienja koda Prethodno izloeno nas dovodi do jedne druge izuzetno znaajne oblasti objektno orijentisanog programiranja a to je mogunost ponovnog korienja koda. Ilustrovaemo to na sledei nain. Imamo tri razliite aplikacije da kreiramo, s tim da svaki od njih radi neto sa korisnicima: jedna prikazuje raun korisnika, drugi slui za registrovanje novog korisnika, a trei za evidenciju albi. Kao to se samo od sebe namee, reenje ovde postoji, mogunost da se primeni ista klasa objekata (klasa Klijent) u razliitim projektima. Jednom kreirana klasa se moe iskoristiti u drugim aplikacijama pozivanjem iste klase. Ali u nekim sluajevima neophodno je kreirati klasu

140

Objektno orijentisano programiranje

za svaki projekat ponaosob. To sve zavisi kako koncipirate aplikaciju i kakvi zahtevi su postavljeni za samu izradu (poslovna logika). Ne postoji neko strogo pravilo da se izradi univerzalni objekat. Poenta je u tome da je svaki objekat odgovoran za aktivnosti koje sprovodi i nita vie, a to je ono to treba da uvaimo.

6. 7 Funkcije (Potprogrami, procedure , podrutine)


Aplikacije koje se kreiraju za razne potrebe obino zahtevaju sloene programske kodove. Osim sloenosti programa esto se deava da se neki delovi programskog koda ponavljaju vie puta. Pojednostavljenje izrade aplikacije omoguuje primena podprograma. Oni se pojavljuju kao funkcije i predstavljaju niz zasebnih logikih celina. Uopteno funkcija je blok koda koji neto radi: otvaranje datoteke, tampanje izvetaja, prikazivanje podataka na ekranu itd. Pomou funkcije moemo napisati programski kod za izvoenje neke operacije i pozivanjem te funkcije izvravati ga na vie mesta u programu neogranieno. Povoljnosti pored eliminisanja suvinih programskih instrukcija se pokazuju i u smanjenju pojave greaka i u lakoi odravanja celokupne aplikacije. Aplikacija je mnogo preglednija, a programski kodovi se lake itaju. Iz ovoga se moe konstatovati da postoje dve znaajne prednosti. Prvo mogunost da se aplikacija razgradi na posebne logike celine inei program razumljivijim, jasnijim i drugo, da se zatim ti programski blokovi upotrebe za izradu neke druge aplikacije tj. promoviu ponovno korienje koda U Visual Basic.NET-u iroko se primenjuju funkcije i razlikujemo ih po tome da li vraaju vrednosti u svom imenu ili ne. Osnovni princip funkcionisanja funkcije je da na osnovu ULAZNIH VREDNOSTI i informacija iz okruenja neto urade. Ako kaemo da dajemo informaciju funkciji, mi joj u stvari predajemo podatke. Podaci su opisani kao parametri. Funkcija e se izvriti ako je aktiviramo odnosno ako je pozovemo. Drugim reima: Mi pozivamo funkciju i predajemo joj podatke kao parametre.

Objektno orijentisano programiranje 6. 7. 1 Sintaksa procedure Sub Ovako izgleda jedna procedura u Visual Basic.Net-u:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim A As String A = txtA.text MessageBox.Show(A.Length & "znakova") End Sub

141

Podprogramske procedure (funkcije) su Sub procedure. One su deo programskog koda koje se izvravaju kao odgovor na neki dogaaj. Karakteristino je da kod obavljanja nekog zadatka ne vraaju vrednost u svom imenu samo u nekoj promenljivoj, to e biti kasnije detaljnije analizirano. Postupak izrade procedure zasniva se na njenom deklarisanju. U optoj formi procedura izgleda ovako:

Procedura Sub poinje sa slubenom rei Private/Public Sub nakon ega sledi naziv procedure Button1_Click. Iza naziva navode se argumenti u zagradi. To su parametri funkcije (sender i e), odnosno definisani tipovi promenljivih. I ono to je na kraju Handles Button1.Click Funkcija se moe deklarisati tako da se ona moe pozivati bilo gde u aplikaciji. Takve procedure su procedure opte namene (general procedure) i po pravilu su tipa Public. Sutina njihovog kreiranja je

142

Objektno orijentisano programiranje

mogunost izvoenja iste akcije u razliitim procedurama dogaaja (event procedurama). Takav primer smo videli u okviru razmatranja modula. Kljuna re Sub ukazuje da se radi o funkciji/proceduri koja ne vraa vrednost i skraenica je od rei Subroutine. Inae funkcije koje ne vraaju vrednost u Visual Basic.NET-u se zovu METODE. Najznaajnija stvar u vezi izrade kvalitetne aplikacije je dobra strategija programiranja. Pod tim se podrazumeva postavljanje zajednikih izraza u odvojenu proceduru (procedure opte namene) i omoguavajui time njihovo pozivanje u procedurama dogaaja. 6. 7. 2 Pozivanje procedure Sub Pozivanje procedure Sub se odvija putem samostalnog izraza. Ove procedure se ne mogu pozvati po imenu kao funkcije. Prilikom pozivanja procedure Sub prosleuju se argumenti toj proceduri. Prosleeni argumenti su promenljive, koje sainjavaju neophodnu informaciju o stanju aplikacije. Na osnovu ove informacije programski kod obavlja svoj zadatak. Razlikujemo pozivanje procedure: po prosleenoj vrednosti ili po prosleenoj referenci. Pozivanjem procedure po prosleenoj referenci (ByRef) daje se pristup stvarnom sadraju promenljive na mestu njene memorijske adrese. To znai da vrednost promenljive moe biti trajno promenjena i svaka izmena te promenljive se prosleuje nazad u proceduru koja je uputila poziv. Da bi se to izbeglo u deklarisanju procedure koristimo ByVal u listi argumenata. Na ovaj nain prosleuje se samo kopija promenljive, a ByVal ukazuje na argument kome je dodeljena vrednost (promena vrednosti e uticati samo na kopiju). U .Net-u pozivanje se odvija navoenjem kljune rei CALL i naziva funkcije. Kako se primenjuju procedure Sub videemo na sledeem primeru. Pokrenemo novi projekat i na formu unesemo jedno polje za tekst (textbox) i jedno dugme. Zadatak je da se aktiviranjem dugmeta javi greka pri unosu u sluaju da krajnji korisnik nije nita ukucao ili ako je

Objektno orijentisano programiranje

143

ukucao prazne karaktere. U izradi aplikacije takva ogranienja se esto upotrebljavaju zbog toga da korisnici ne unose sve i svata u skladite podataka. Programski kod koji dodajemo na nivo celokupne klase Form1 je sledei:
Public Class Form1 Private Sub Greska() Dim podatak As String podatak = Trim(TextBox1.Text) If podatak = "" Then MsgBox("Molim ponovite unos") End If

--------------------------------------------------------------End Class

End Sub

Kao to vidimo procedura je definisana kao Private to znai da samo ova forma je moe videti. U ovoj proceduri primenjena je i metoda Trim za odsecanje praznih karaktera. Njegova uloga je da odseca prazne karaktere ispred ili iza teksta. Ako je unet samo prazan karakter, njegovim odsecanjem e se to tretirati kao da nije nita uneto. Tako jednom napisana procedura se moe pozivati vie puta. Pozivanje se vri na sledei nain:
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Call Greska() End Sub ------------------------------------------Private Sub Greska() Dim podatak As String podatak = Trim(TextBox1.Text) If podatak = "" Then

144

Objektno orijentisano programiranje


MsgBox("Molim ponovite unos") End If End Sub End Class

6. 7. 3 Funkcijske procedure Funkcijske procedure ili jednostavnije samo funkcije su funkcionalno sline procedurama Sub. Jedina razlika je u tome to one uvek vraaju vrednosti u svom imenu. Sintaksa funkcijske procedure je sledea:
Funkction imefunkcije (argumenti) As Tip naredbe End Function

Kod deklarisanja funkcije potrebno je navesti ime funkcije koju emo pozivati. Funkcije se obino primenjuju za izraunavanja, pa se za dobijene rezultate navodi tip podatka pomou opcije As Tip. Kao i kod procedure Sub i ovde postoji mogunost navoenja argumenata koje koristi funkcija. Argumenti se navode u zagradama. I u proceduri Sub i u funkcijama se moe navesti vie argumenata ali se oni onda razdvajaju zarezima. Primer deklarisanja funkcije za izraunavanje povrine kruga:

Ova funkcija koja je ovde data za primer moe se dalje primeniti u aplikaciji. Izmeu kljunih rei Function i End Function nalazi se telo funkcije koje se izvrava samo kada je funkcija pozvana, a parametar funkcije je radius definisan prenosom parametara po vrednosti (ByVal).

Objektno orijentisano programiranje

145

Kljuna re koja se primenjuje za vraanje funkcije odakle je pozvana je return. Ovu funkciju moemo pozvati iz koda koji je dodat nekom dugmetu:
Dim povrsina As Double povrsina = RacPovrsinuKruga(100) 'prikazi rezultat MessageBox.Show(povrsina, "Povrsina")

Ovde smo definisali promenljivu pod nazivom povrsina. Ona e sadrati povrinu kruga. Zatim podeavamo da se vrati promenljiva koja sadri neku vrednost RacPovrsinuKruga(100),gde je u zagradi naveden vrednost parametra (100). U principu mi smo pozvali funkciju koja treba da izrauna po prethodno definisanom kodu povrinu kruga i vratie rezultat sa naredbom Return. 6. 7. 4 Nazivi funkcija Obino se u sferi programiranja primenjuju odreeni standardi u korienju naziva stvari. U .NET-u ima nekoliko vrsta standarda: Pascal konvencija imenovanja Primer: RacPovrsinuKruga Po ovom standardu svaka re navedena u nazivu FUNKCIJE poinje sa velikim slovom, dok su ostala slova mala. Camel koncencija imenovanja (koristi se i u Javi)
Primer: mojRacun

Ova konvencija se koristi kod naziva parametara i slino je sa Pascalovom konvencijom, sa tim da se prva re navodi sa malim slovima. (Napomena: Visual Basic.NET ne razlikuje mala i velika slova (MOJRACUN=mojRacun)).

146

Objektno orijentisano programiranje 6. 7. 5 Analiza primene parametara u procedurama

Kreiraemo aplikaciju za sabiranje dva broja pomou funkcije. Kada se pritisne dugme Odgovor, treba da se pojavi poruka sa rezultatom sabiranja. Da bismo realizovali zadatak potrebno je da nanesemo na formu sledee: 2 polja za tekst ija e svojstva Name biti txtPrvi i txtDrugi i dugme btnOdgovor U editoru koda uneemo svoju proceduru i to izmeu End Sub i End Class:
Public Class Form1 ------------------------------------------------Private Sub btnRezultat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRezultat.Click End Sub ------------------------------------------------Private Sub Sabiranje(ByVal prvi1 As Integer, ByVal drugi1 As Integer) Dim rezultat As Integer prvi1 = Val(txtPrvi.Text) drugi1 = Val(txtDrugi.Text) rezultat = prvi1 + drugi1 MsgBox("Rezultat je: " & rezultat) End Sub End Class

Promenljive prvi1 i drugi1 mogu se zvati bilo kako jer ga definiemo unutar procedure Sub i to kod definisanja procedure:
Private Sub Sabiranje(ByVal prvi1 As Integer, ByVal drugi1 As Integer)

Objektno orijentisano programiranje

147

One predstavljaju parametre (prvi1 As Integer) definisane kao celobrojne vrednosti u ovom primeru, a koje prosleujemo proceduri Sabiranja. U njih smetamo vrednosti koje smo uneli u polja za unos. Ostalo je da sredimo jo liniju za pozivanje podrutine sa naredbom Call.
Public Class Form1 ------------------------------------------------Private Sub btnRezultat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRezultat.Click Dim prvi As Integer Dim drugi As Integer Call Sabiranje(prvi, drugi) End Sub

------------------------------------------------Private Sub Sabiranje(ByVal prvi1 As Integer, ByVal drugi1 As Integer) Dim rezultat As Integer prvi1 = Val(txtPrvi.Text) drugi1 = Val(txtDrugi.Text) rezultat = prvi1 + drugi1 MsgBox("Rezultat je: " & rezultat) End Sub End Class

Ovaj primer je ilustrovao prosleivanje po vrednosti - ByVal, a u narednom emo videti primenu prosleivanja parametara po referenci - ByRef i ukazati na razlike izmeu njih.

Razlika izmeu njih je da u prvom sluaju prosleujemo samo kopiju promeljive (kako smo to ve jednom prethodno objasnili), a drugom sluaju baratom direktno sa promenljivom. Sada emo to neposredno demonstrirati na jednom primeru.

148

Objektno orijentisano programiranje

Pokrenemo novi projekat i nanesemo dugme za formu na koji emo dodati sledei programski kod:
Public Class Form1 -------------------------------------------------------Private Sub Button1_Click(ByVal sender As System. Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Broj1 As Integer Broj1 = 20 Call RastucaPromenljiva(Broj1) MsgBox(Broj1) End Sub -------------------------------------------------------Private Sub RastucaPromenljiva(ByVal broj1 As Integer) broj1 = broj1 + 1 End Sub -------------------------------------------------------End Class

Kao to vidimo prosledili smo promenljivu po vrednosti, pa e rezultat sabiranja, ako pokrenemo program, biti 20. To znai da nije vrednost promenljive sabrana. Ona je ostala 20, a dodavanje se desilo na njenoj kopiji. Ako izmenjamo ByVal na ByRef u podrutini RastucaPromenljiva vrednost promenljive e se poveati za 1.
ByVal broj1 As Integer ByRef broj1 As Integer Private Sub RastucaPromenljiva(ByRef broj1 As Integer) broj1 = broj1 + 1 End Sub

6. 8 Nasleivanje
Razliiti objekti mogu imati zajednika svojstva ali imaju i neto to samo njih karakterie. Onda, jednostavno reeno, nasleivanje znai kreiranje objekata koji imaju neto to ima drugi objekat, ali imaju neto i sopstvenih delova. U sutini se proiruje funkcionalnost objekata, i ne zahteva se da potpuno razumemo kako unutranji delovi rade. Objektno orijentisano programiranje dozvoljava klasama da naslede naj uobiajeno ponaanje i stanje. Recimo da je Bicikl klasa od koje mogu ostale klase da naslede osnovne karakteristike, to su trkaki bicikl, obini bicikl i tandem (dvosedni biciklovi).

Objektno orijentisano programiranje

149

Konkretna realizacija nasleivanja odvija se tako to se prvo kreira klasa na primer Bicikl i iz njega e da sledi klasa Sportski bicikl (Slika 612). Kreiranje klase Bicikl: (dodavanjem Add Class pod imenom Bicikl)
Public Class Bicikl Public Color As String Public BrSedista As Integer Public Pedale As String

Sledi kreiranje objekta Sportski Bicikl koji e biti nasleen od klase objekata Bicikl, i to tako to u Sportskibicikl.vb dodajemo programski kod sa kljunom rei inherits:
Public Class Sportskibicikl Inherits Bicikl Public Menjac As Integer End Class

End Class

Slika 612: Ilustracija principa nasleivanja svojstava i metode objekata

150

Objektno orijentisano programiranje

6. 9 Polimorfizam
Ovaj izraz potie iz grke rei, ije znaenje je mnogo formi. Sam naziv reflektuje princip u objektno orijentisanom programiranju da se objekat moe ponaati kao drugi objekat. Objekat se moe tretirati kao da je druga vrsta objekta. U prethodnom primeru smo videli da je Sportski bicikl nasledio svoja svojstva od klase objekta Bicikl. Takoe odrava i osnovno ponaanje objekta Bicikl. Pozivanjem metode iz Bicikla, da bismo prikazali ta on radi. Znai da Sportski Bicikl takoe mora biti implementiran u metod. To vai samo ako je Sportski Bicikl nasleen iz Bicikla tj. nije posebno definisan. Onda testiranjem Sportskog Bicikla moemo da testiramo i ponaanje objekta Bicikl. (Obrnuto ne vai: Sportski Bicikl ne odraava sve karakteristike Bicikla). emu ovo slui? Pa da pojednostavi aktivnosti onoga koji kreira program. Znaaj, naravno, dolazi do izraaja kod sloenih i kompleksnih aplikacija.

6. 10 Programska naredba u Visual Basic-u


Svaki programski jezik ima svoju sintaksu po emu nije izuzetak ni Visual Basic.Net. U oblasti raunarstva pod sintaksom se podrazumeva pravilo pisanja programskih naredbi, a koju prepoznaje prevodilac datog programskog jezika. Sintaksa Visual Basic-a obuhvata kombinaciju kljunih rei, svojstava, funkcija, operatora itd. Potpunu programsku naredbu moe predstavljati i jedna re, na primer za zavretak aplikacije se koristi kljuna re (naredba) END,
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click End

ali je najee sastavljena od razliitih elemenata kao to to prikazuje i sledei primer:

End Sub

Objektno orijentisano programiranje

151

Ova naredba podeava svojstvo objekta myProba. Operator dodele vrednosti je znak jednakosti. Pored ovog operatora pojavljuje se i taka kao operator povezivanja elemenata. Taka se upotrebljava za povezivanje svojstva, metode, kontrole, forme i kod dodeljivanja vrednosti nekoj promenljivoj. U programskim naredbama naiiemo i na znak uzvika (!), koja ukazuje da je odreeni elemenat (objekat) lan nekog niza.

7. RAD SA PODACIMA
U raunarskoj tehnici esto se stvaraju skupovi podataka. Skupove podataka sainjavaju elementi istog tipa. Shodno tome oni se pohranjuju u polja sa istim svojstvima. Za njih kaemo da su indeksirani ako su poreani po odreenom redosledu. Elemente nekog skupa moemo poreati u: NIZ pri emu dobijamo vektor; TABELU ime se formira matrica ili VIE TABELA stvarajui blokove. Vektori i matrice upotrebljavaju se u mnogim naunim disciplinama. Pogotovu su zastupljene tehnike oblasti, po emu nije izuzetak ni raunarska tehnika. U izradi aplikacija znaajnu ulogu ima programiranje struktura podataka, te su ove strukture podataka ugraene u svakom programskom jeziku.

7. 1 Vektori
Neka nam je dat skup sa n elemenata. Ako elemente tog skupa poreamo po odreenom redosledu nastae vektor V. Naziv vektora V oznaava skup svih elemenata. Na elemente ukazuju naziv vektora i njegov indeks. Indeks je redni broj elementa u nizu, gde je

1 i n.
Tada elemenat vi oznaava elemenat v sa rednim brojem i. Po tome je prvi elemenat v1, drugi elemenat v2, itd. Jednostavnije reeno na elemente

154

Objektno orijentisano programiranje

vektora se pozivamo nazivom vektora i njegovim rednim brojem (indeksom). Pored ovih obeleja vektor poseduje dimenziju. Dimenzijom se izraava broj elemenata u nizu broj elemenata vektora. Ovo najjednostavnije objanjava ilustracija na slici 71.

Slika 71: Ilustracija vektora sa prikazom njegovih obeleja

Vektore zovemo jo i jedno indeksnim veliinama, jer su elementi vektora odreeni samo sa jednim indeksom. U zavisnosti od toga od kakvih elemenata je sainjen niz, vektori mogu biti: brojani (ako sadre numerike veliine)ili slovno brojani (tekstualni).

7. 2 Matrice
Elemente nekog skupa moemo poreati i u obliku pravougaone tabele. Tada formiramo matricu koja ima m redova i n kolona:

a1,1 a2,1 A= a p ,1

a1, 2 ... a1,q a2, 2 ... a2,q a p , 2 ... a p ,q

Naziv matrice oznaava skup svih elemenata u tabeli to je u ovom sluaju A. Elementi matrice odreeni su nazivom matrice i rednim

Objektno orijentisano programiranje

155

brojem reda i kolone. Za razliku od vektora matrice imaju dva indeksa: i -indeks redova i j -indeks kolone. Dimenziju matrica odreuje broj redova m i broj kolona matrice n . I matrice mogu biti sa brojanim i sa tekstualnim vrednostima. Primer matrica sa brojanim vrednostima ilustrovaemo je putem primera proizvodnje kancelarijskih stolica. Pri tome za svaku vrstu stolica formiramo jedan vektor. Ako elimo da izrazimo normu materijala (potrebnu koliinu) za razliite vrste stolica, tada imamo matricu oblika kao na slici 72.

Slika 72: Matrica sa brojanim vrednostima

Pri tome imamo vektore redova (niz elemenata odreenog reda) i vektore kolona (niz elemenata odreene kolone). U sluaju da nas interesuje koliina plastike za treu vrstu stolice tada nam na to ukazuje vrednost elementa matrice koja se nalazi u treem redu i u etvrtoj koloni.

7. 3 Nizovi u visual basic.Net-u


Nakon izlaganja ta su nizovi sa matematikog aspekta moemo krenuti sa upoznavanjem rada sa strukturama podataka u okviru Visula Basic.NET-a. Svrha primene niza je da se liste slinih podataka mogu uvati programski.

156

Objektno orijentisano programiranje

Prvi korak u primeni niza je njegovo definisanje, pri emu kreiramo promenljivu koja ima vie dimenzija. Na ilustraciji ispod teksta prvo je prikazan nain deklarisanja promenljive u koju moemo smestiti samo jednu vrednost. Ali ako postoji skup podataka slinih vrednosti, onda je mnogo zgodnije smestiti ih u istu promenljivu. Na pitanje ta je niz, najjednostavnije formulisano moemo rei da je to promenljiva koja sadri vie podataka istovremeno.

Sada emo videti na jednostavnom primeru kako se izgrauje niz u Visual basic.Net-u. U novo otvorenom projektu prikazaemo imena naih prijatelja. Za izradu ove aplikacije koristiemo dugme pod nazivom btnPrikazi i na kom e stajati tekst za korisnika Prikai. Za prikaz podataka upotrebiemo kontrolu ListBox pod nazivom lstPrijatelji. Ove kontrole emo naneti na formu (slika 73).

Slika 73: Kreiranje forme za prikaz liste prijatelja (niza) sa potrebnim kontrolama

Objektno orijentisano programiranje

157

Nakon izrade obrasca, dodavanja kontrole, ostalo je jo i da saoptimo raunaru kako da obavi svoj zadatak. Za to je potrebno da dodamo sledeih nekoliko redova programskih naredbi za dogaaj Click dugmeta btnPrikazi:
Private Sub btnPrikazi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrikazi.Click 'definisanje niza Dim Prijatelji(4) As String 'sacuvaj ime Prijatelji(0) Prijatelji(1) Prijatelji(2) Prijatelji(3) Prijatelji(4) = = = = = "Marija" "Mia" "Aleksa" "Petar" "Ceca"

'dodaj Aleksa listi lstPrijatelji.Items.Add(Prijetelji(2)) End Sub

Hajde sada da vidimo kako ovo radi. Prvo smo naveli naziv lokacije u kojoj e da se uvaju podaci niza (u primeru kao String). Odmah iza sledi navoenje duine u zagradama. Poto elimo da smestimo pet imena prijatelja u promenljivu, navodimo broj 4. Ovaj broj je broj indeksa i u Visual Basic.Net-u poinje sa nulom (0,1,2,3,4). Sada jo treba da kaemo kojim tipom podataka emo da radimo. U ovom sluaju pravimo niz od imena prijatelja, pa e promenljiva biti tipa stringa. Tada kaemo da smo definisali tekstualni niz veliine 5. Elementima niza pristupamo putem indeksa, a stavke se podeavaju sledeim naredbama:
Prijatelji(0) Prijatelji(1) Prijatelji(2) Prijatelji(3) Prijatelji(4) = = = = = "Marija" "Mia" "Aleksa" "Petar" "Ceca"

Indekse koristimo i za vraanje pronalaenje traenog podatka. U ovom primeru rekli smo da vrati podatak za indeks 2 i to sledeim redom:

158

Objektno orijentisano programiranje


lstPrijetelji.Items.Add(Prijatelji(2))

Rezultat toga je ispisivanje podatka u Listbox-u (slika 74). Na ekranu se pojavljuje jedno ime. Meutim, kada radimo sa nizom podataka, uglavnom elimo da se prikae cela lista a ne jedno ime. Takav prikaz se elegantno reava uvoenjem procedure Sub i primenom strukture For, Each ...Next petlje. Ona se intenzivno koristi kod nizova.

Slika 74: Prikaz ekrana kada se pokrene program za prikaz imena prijatelja

Za demonstraciju ovog problema upotrebiemo prethodni primer. Dodaemo Sub proceduru pod nazivom Dodaj u kome emo proslediti parametar po referenci. Unutar procedure navodimo For, Each ...Next petlju
Public Class Form1 Private Sub btnPrikazi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrikazi.Click 'definisanje niza Dim Prijatelji(4) As String 'sacuvaj ime Prijatelji(0) Prijatelji(1) Prijatelji(2) Prijatelji(3) Prijatelji(4) = = = = = "Marija" "Mia" "Aleksa" "Petar" "Ceca"

'dodaj sve prijatelje listi Call Dodaj(Prijatelji) End Sub -------------------------------------------------------

Objektno orijentisano programiranje


Private Sub Dodaj(ByVal prijatelji() As String) 'pregledaj svakog prijatelja Dim imePrijatelja As String For Each imePrijatelja In prijatelji 'dodaj svakog listi lstPrijatelji.Items.Add(imePrijatelja)

159

Next End Sub End Class

Sub procedura se koristi sa nizom parametra prijatelji tipa Tu se nalaze sva imena navedena u nizu. Nakon toga deklarie se promenljiva pomou koje se pregledava svaki podatak i dodaje se listi. Umesto reda
lstPrijatelji.Items.Add(Prijatelji(2))

procedura se poziva sa naredbom Call delom koji je osenen u programskom kodu.

7. 4 Sortiranje i pretraga nizova


Pod sortiranjem elemenata niza podrazumeva se reanje elemenata po rastuem ili opadajuem redosledu. Sortiranje predstavlja jednu vanu i veoma esto primenjivanu tehniku u programiranju, jer je usko povezan sa tehnikom pretraivanja nizova. Pretraivanje znai pronalaenje elementa u nizu koji zadovoljava odreeni definisani kriterijum. U praktinoj primeni nizovi su veoma razliiti, ali uvek sadre konkretne podatke. Oni mogu sadrati ime, prezime lica, njihove adrese, itd. Pronalaenje odreenog elementa, u konkretnom postupku pronalaenje npr. neije adrese tako to nam je dato ime osobe, znai pretragu tog niza. U tom sluaju veoma je korisno poreati elemente po razliitim ali adekvatnim kriterijumima. U Visual Basic.NET-u nizovi su smeteni u klasi System.Array. Na klasu primenjujemo metod Sort, a poto smo u prethodnom primeru imali Stringove za nazive prijatelja sortirae ih abecedno. Na ekranu e se prikazati rezultat obrade kao na slici 75.

160

Objektno orijentisano programiranje

Private Sub Dodaj(ByVal prijatelji() As String) 'pregledaj svakog prijatelja Array.Sort(prijatelji)

programske linije

Umetnut je red za sortiranje

Dim imePrijatelja As String For Each imePrijatelja In prijatelji

Next

'dodaj svakog listi lstPrijatelji.Items.Add(imePrijatelja)

Slika 75: Prikaz liste imena sortiranih po opadajuem redosledu

7. 5 Strukture
Na neki nain moemo rei da su strukture vrednosni tipovi. U principu su veoma sline klasama i obino se koriste kada ne primenjujemo puno metoda u aplikaciji. U suprotnom koristimo klase. Kreira se kao klasa, ali se menjaju kljune rei Class u Structure i End Class u End Structure. Kreiraemo jednu novu aplikaciju za evidentiranje telefonskog imenika klijenata, to e biti osnova za objanjenje primene strukture. U ureivau koda dodajemo prvo klasu Klijent, koja e postati struktura pomou navedenog koda kao to je prikazano na slici 76.
Public Structure Klijenti 'lanovi Public Prezime As String Public Ime As String

Objektno orijentisano programiranje


Public Adresa As String Public Telefon As String

161

End Structure

Slika 76: Kreiranja i primena strukture u aplikaciji

Zatim dizajniramo obrazac za prikaz podataka kao to je na slici 77. Dodajemo sledee kontrole i podeavamo svojstva: Vrsta kontrole Naziv kontrole
txtPrezime Svojstvo Text

4 polja za tekst

txtIme txtAdresa TxtTelefon lblPrezime lblIme lblAdresa lblTelefon Label1


Prezime Ime Adresa Telefon

5 polja za prikaz teksta

TELEFONSKI IMENIK UNOS

Dugme

btnUnos

162

Objektno orijentisano programiranje

Slika 77: Obrazac za prikaz podataka o klijentima

Posle u editoru koda dodajem na dogaaj Click ovaj kod zajedno sa metodom (procedura) PrikazKlijenata:
Public Class Form1 -----------------------------------------------------Private Sub btnUnos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUnos.Click 'kreiraj novog klijenta Dim probaKlijent As Klijenti probaKlijent.Prezime = "Toi" probaKlijent.Ime = "Ivana" probaKlijent.Adresa = "Cara Duana 34" probaKlijent.Telefon = "011-2345-345" 'prikaz novog klijenta PrikazKlijenta(probaKlijent)

End Sub ----------------------------------------------Public Sub PrikazKlijenta(ByVal klijent As Klijenti) 'auriranje polja txtPrezime.Text = klijent.Prezime txtIme.Text = klijent.Ime txtAdresa.Text = klijent.Adresa txtTelefon.Text = klijent.Telefon End Sub End Class

Kada startujemo aplikaciju ispisae se podaci o klijentu to smo definisali u programskom kodu.

Objektno orijentisano programiranje

163

Takoe, slino klasama, i strukturama moemo dodati i svojstva. U ovom primeru dodaemo kod koji je osenen u Klijent.vb, a koji prikazuje prezime i ime klijenta unetog u telefonski imenik:
Public Structure Klijenti 'lanovi Public Public Public Public Prezime As String Ime As String Adresa As String Telefon As String

Public ReadOnly Property CeloIme() As String Get Return Prezime & " " & Ime End Get End Property End Structure

Sada je ostalo da dodamo kod proceduri PrikazKlijenta (slika78):


txtCeloIme.Text = klijent.CeloIme

Slika 78: Upotreba svojstva strukture

164

Objektno orijentisano programiranje

Na slici 78 vidimo da se pojavljuje spisak definisanih elemenata strukture stavljanjem take iza parametra metode klijent. Na slici 7 9 se vidi da je dodato jo jedno polje za unos teksta txtCeloIme i jedno polje za prikaz teksta Prezime i ime i kada pokrenemo aplikaciju ovo e biti rezultat obrade

Slika 79: Rezultat primene svojstava strukture

7. 6 Kolekcije
Visual Basic.NETradi i sa posebnim konstrukcijama KOLEKCIJAMA. One spadaju u Framwork-ove klase i nude odreene pogodnosti u odnosu na rad sa nizovima. Njih ini skup informacija sauvanih u nekoj listi, a koje su u nekom odnosu. Njihova primena je mnogo zgodnija sa aspekta programera, jer prua veu fleksibilnost u manipulisanju programa, kao na primer brisanje stavke iz niza, zamena postojeeg elementa u nizu i slino. Demonstriraemo primenu kolekcije na osnovu prethodnog primera modifikacijom postojeeg koda. Prvo emo preraditi obrazac iz prethodnog primera dodavajui jedan LixtBox to emo nazvati lstKlijent. Nakon toga u editoru koda promeniemo kod za klasu Form i upisati sledee:
Public Class Form1 Inherits System.Windows.Forms.Form 'lanovi Private _klijenti As New ArrayList() ---------------------------------------------------------Public Function KreirajKlijenta(ByVal prezime As String,

Objektno orijentisano programiranje

165

ByVal ime As String, ByVal adresa As String, ByVal telefon As String) As Klijenti 'kreiraj novog klijenta Dim noviKlijent As Klijenti noviKlijent.Prezime = prezime noviKlijent.Ime = ime noviKlijent.Adresa = adresa noviKlijent.Telefon = telefon 'dodaj listi _klijenti.Add(noviKlijent) 'dodaj pregledu lstKlijent.Items.Add(noviKlijent) 'vrati klijenta Return noviKlijent End Function ---------------------------------------------------------Private Sub btnUnos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUnos.Click 'kreiraj neke klijente KreirajKlijenta("Beri", "Maja", "Jug Bogdana 3", "011-2334-567") KreirajKlijenta("Stani", "Petar", "Terazije 12", "011-2117-887") KreirajKlijenta("Popov", "Dara", "Njegoeva 25", "011-2712-999")

Ako pokrenemo kod u polju za prikaz liste nee se pojaviti spisak klijenata, ve e se samo formirati struktura pod nazivom Klijenti, a koja e se popuniti spiskom klijenata. Za prikaz u ListBox-u potrebno je da se doda sledei kod u klasi Klijentu.vb:
Public Structure Klijenti 'lanovi Public Prezime As String Public Ime As String Public Adresa As String Public Telefon As String ---------------------------------------------------------Public Overrides Function ToString() As String

End Sub

166

Objektno orijentisano programiranje

Return Prezime & " " & Ime & " " & Telefon & " " & Adresa

End Function ---------------------------------------------------------End Structure

Kada aktiviramo program prikazae se ishod obrade kao na slici 710.

Slika 710: rad sa strukturama podataka

Pogodnost kolekcije je da se lako moe manipulisati sa podacima, pa emo u narednom videti ta je potrebno za brisanje i prikazivanje stavki. 7. 6.1 Brisanje stavki sa liste Rad sa podacima obuhvata i niz drugih radnji sem dodavanja stavki. Korisniku treba omoguiti i brisanje stavki iz liste, tako da emo nastaviti prethodni primer spiska telefona klijenata i dodati jedno dugme za brisanje pod nazivom btnBrisanje. Na ovo dugme dodaemo sledei kod:
Private Sub btnBrisanje_Click(ByVal sender As System. Object, ByVal e As System.EventArgs) Handles btnBrisanje. Click

Objektno orijentisano programiranje


If selectKlijenti.IsEmpty = False Then

167

If MessageBox.Show("Da li stvarno hoete da obriete podatak" & SelectKlijenti.Prezime & "?", "Poruka", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then 'sauvaj klijenta kojeg eli da brie Dim deleteKlijent As Klijenti = SelectKlijenti 'izbrii klijenta _klijenti.Remove(deleteKlijent) End If MessageBox.Show("Morate odabrati klijenta!") End If End Sub Else

Ispod toga dodajemo sledee svojstvo:


Get

Public ReadOnly Property SelectKlijenti() As Klijenti 'selektovano? If lstKlijent.SelectedIndex <> -1 Then 'vrati odabranog klijenta Return lstKlijent.Items(lstKlijent. SelectedIndex) End If End Get End Property

Startovanjem programa moe se prikazati na ekranu obrazac kao na slici 711, kada nismo nita odabrali, ili kao na slici 712 kada pristupamo brisanju. Na poetku programskog koda proveravamo da li je klijent odabrao stavku iz liste ili nije i to se realizuje sa primenom strukture If... Then:
If selectKlijenti.IsEmpty = False Then

168

Objektno orijentisano programiranje

Ako nije nita odabrao dobija upozorenje u vidu MessageBox-a, pri emu ne doputa korisniku da uradi bilo ta kao na slici 711.

Slika 711: Korisnik nije odabrao nita od postojeih stavki

U sluaju da je odabrao u ugnjedenom delu koda If Then strukture, dalje se odvija izvrenja koda. Naravno prvo e nam se pojaviti prozor sa pitanjem da li elimo da obriemo podatak ili ne. Ovo je uobiajeni postupak kada se manipulie sa podacima, jer nikada ne dozvoljavamo korisniku da neposredno izvri brisanje, promenu ili uvanje podataka. Korisnik moe i da pogrei pa je potrebna izvesna fleksibilnost aplikacije.

Slika 712: Korisnik je odabrao stavku u listi i eli da je brie

Objektno orijentisano programiranje 7. 6. 2 Listanje i prikaz stavki u nizu

169

Osim to korisnik nekada treba da obrie stavku iz niza, on u nekim sluajevima eli i da izlista te podatke radi uvida u njih ili provere podataka. Na istom primeru telefonskog imenika klijenata prezentovaemo kako se to radi.

Slika 713: Listanje podataka u nizu

Na slici 713 prikazuje se forma koju smo dosada podrobno odradili za unos i brisanje podataka. Sada je cilj da se doda jo kod za prikazivanje podataka u poljima ispod prikaza liste kada se klikne na odreenog klijenta. Znai, kod za prikaz podataka o klijentima dodaemo na kontrolu ListBox nae aplikacije.
Private Sub lstKlijent_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstKlijent.SelectedIndexChanged PrikazKlijenta(SelectKlijenti) End Sub

Oseneni deo u kodu poziva metodu PrikazKlijenta koju smo prethodno ve definisali u aplikaciji. To je ista procedura koja se koristi kod poetnog uitavanja podataka.

170

Objektno orijentisano programiranje

Public Sub PrikazKlijenta(ByVal klijent As Klijenti) 'auriranje polja txtPrezime.Text = klijent.Prezime txtIme.Text = klijent.Ime txtAdresa.Text = klijent.Adresa txtTelefon.Text = klijent.Telefon

End Sub

7. 7 Dinamiki niz
Dosada smo se bavili sa nizovima ije duine su bile nepromenjene. Ali to ne mora da bude uvek tako, i uglavnom i nije. U prethodnom delu smo videli da mi moemo dodavati stavke nizu ili da ih obriemo iz niza i tada se menja i njihova duina. Niz ija duina je promenljiva se zove dinamiki niz i postie se kljunom rei ReDim. Dinamiki niz smo demonstrirali u prvom primeru ovog poglavlja uitavanjem spiska prijatelja, ali zbog razumevanja ta se u pozadini deava kada se izvrava program staviemo imena u zagrade. Podsetiemo se samo na rezultat izvravanja te aplikacije. Klikom na dugme Prikai pojavie se spisak unetih prijatelja kao na slici 714. Sada emo da izmenjamo kod. Dodaemo jo i red (osenen u kodu):
ReDim Prijatelji(6)

gde saoptavamo za koliko treba da se povea niz.

Slika 714: Niz sa odreenom duinom

Objektno orijentisano programiranje U tom sluaju kod e biti sledei:

171

Public Class Form1 ---------------------------------------------------Private Sub btnPrikazi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrikazi.Click 'definisanje niza Dim Prijatelji(4) As String 'sacuvaj ime Prijatelji(0) Prijatelji(1) Prijatelji(2) Prijatelji(3) Prijatelji(4) = = = = = "Marija" "Mia" "Aleksa" "Petar" "Ceca"

ReDim Prijatelji(6) 'dodaj sve prijatelje listi Call Dodaj(Prijatelji) End Sub ---------------------------------------------------Private Sub Dodaj(ByVal prijatelji() As String) 'pregledaj svakog prijatelja Array.Sort(prijatelji) Dim imePrijatelja As String For Each imePrijatelja In prijatelji 'dodaj svakog listi lstPrijatelji.Items.Add("[" & imePrijatelja & "]") Next End Sub ---------------------------------------------------End Class

Ponovo pokreemo program i videemo prvi prozor kao na slici 715.

172

Objektno orijentisano programiranje

Slika 715: Redimenzioniranje niza

Ali mi ne elimo da vidimo samo unete promene, ve i prethodno skladitene podatke, kao to izgleda druga forma na slici 715. To emo postii primenom kljune rei Preserve kada navodimo redimenzioniranje niza:
ReDim Preserve Prijatelji(6)

7. 8 Viedimenzionalni niz
Sledea znaajna stvar u vezi rada sa nizovima je primena viedimenzionalnog niza, ija je svrha rada sa tabelama. One su u sutini matrinog formata o kojima smo priali na poetku ovog poglavlja, a iji smo koncept funkcionisanja tu i objasnili. U narednom je dat primer koda za definisanje viedimenzionalnih nizova:
Public Class Form1 Inherits System.Windows.Forms.Form 'enumeracija: 1 korak Public Enum IndeksiOsoba As Integer Ime = 0 Adresa = 1 Telefon = 2 End Enum --------------------------------------------------------

Objektno orijentisano programiranje

173

Private Sub btnPrikai_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrikai.Click 'definisanje niza: 2 korak Dim Prijatelji(2, 2) As String 'postavljanje podataka: 3 korak Prijatelji(0, IndeksiOsoba.Ime) = "Kolar Marija" Prijatelji(0, IndeksiOsoba.Adresa) = "Bianinova 53" Prijatelji(0, IndeksiOsoba.Telefon) = "567-554" Prijatelji(1, IndeksiOsoba.Ime) = "Simi Marko" Prijatelji(1, IndeksiOsoba.Adresa) = "eleznika 6" Prijatelji(1, IndeksiOsoba.Telefon) = "523-864" Prijatelji(2, IndeksiOsoba.Ime) = "Dragi Ilija" Prijatelji(2, IndeksiOsoba.Adresa) = "Dunavska 15a" Prijatelji(2, IndeksiOsoba.Telefon) = "723-456" 'prikai podatke: 4 korak dodajOsobu(Prijatelji) End Sub -------------------------------------------------------'kreiraj metodu Private Sub Dim red For red Dim Dim For za prikaz podataka: 5 korak DodajOsobu(ByVal prijatelji(,) As String) As Integer = 0 To UBound(prijatelji, 1) smesti As String = "" kolona As Integer kolona = 0 To UBound(prijatelji, 2) smesti &= prijatelji(red, kolona) & ", "

Next

Next lstPrijatelji.Items.Add(smesti)

Postupak kreiranja programskog koda pokuaemo da objasnimo putem koraka koji su naznaeni u kodu.

End Sub End Class --------------------------------------------------------

174

Objektno orijentisano programiranje

1. Korak: Enumercijati Enumeracija se koristi za ograniavanje moguih vrednosti koje smetamo u promenljive. Pomou nje izgraujemo novi tip promenljive. Mogu biti zasnovane na tipu Integer, Long, Short ili Byte, pri emu se promenljiva postavlja na jednu moguu vrednost. 2. Korak: Definisanje niza Naredni korak je definisanje viedimenzionalnog niza kada se aktivira dugme Prikai. Ovde je definisan dvodimenzionalni niz, iako se moe raditi sa razliitim dimenzijama. Ilustrativno prikazano to bi izgledalo kao mrea na slici 716, sa tri kolone i tri reda. Kada pristupamo podacima pristupamo eliji u toj mrei (navodei red i kolonu). Ovo je detaljnije prikazano na slici 72 na poetku ovog poglavlja.

Slika 716: Ilustracija dvodimezionalnog niza

3. Korak: Postavljanje podataka Zatim sledi postavljanje podataka po redovima i kolonama dvodimenzionalnog niza. Ovo emo objasniti na osnovu jednog reda programskog koda. Podatak Kolar Marija je podatak o imenu prijatelja koje treba smestiti u dvodimenzionalni niz iji je naziv Prijatelji. U zagradama se navodi redni broj kolone i reda (0,0) odnosno mesto u dvodimenzionalnom nizu.

Objektno orijentisano programiranje

175

4. Korak: Prikazivanje podataka Ono to je ostalo da podatke prikaemo na listi i to pozivanjem metode dodajOsobu (slika 717).

Slika 717: Prikazivanje dvodimenzionalnog niza

5. Korak: Kreiranje metode za prikaz podataka Ova metoda bazira se na For Next petlji i to jedna koja prolazi kroz svaki red, dok druga kroz kolone za tu iteraciju. Upotrebljen je opti parametar UBound, gde se prvo navodi naziv viedimenzionalnog niza, a zatim dimenzija. Jedan oznaava prvu dimenziju, dva drugu. Kada se nae podatak stavlja se u promenljivu smesti i prikazuje se na listi. Po ovom primeru smo videli da rad sa podacima je dosta sloen, pogotovu ako se radi sa viedimenzionalnim nizovima. Zbog toga se najee koriste kolekcije u Visual Basic.Net-u.

8. RAD SA BAZAMA PODATAKA U VISUAL BASIC.NET-U


Dosada smo se bavili nainom manipulisanja sa podacima samo u okviru Visual Basic.Net-a. Meutim, u praksi retko emo se susretati sa ba tako jednostavnim reenjima rada sa podacima kao to su nizovi. Obino se radi sa podacima uskladitenih u baze podataka. Stoga, znaajnu ulogu sa aspekta softverskog inenjerstva ima savlaivanje izrade aplikacije u interakciji sa nekom bazom podataka (Microsoft Access, SQL, Oracle itd.). Tu interakciju u objektno orijentisanim alatima omoguava posebna tehnologija ADO.NET i deo je Microsoft.NET Framework-a. Ona predstavlja poseban skup biblioteka, iji zadatak je da omogui pristup izvoru podataka. Iako ovde moramo istai da osim baza podataka izvori podataka mogu biti i u drugoj formi. Podaci mogu poticati iz Excel tabela, XML ili tekstualne datoteke. Iako ADO:NET podrava i rad sa takvim oblicima podataka, ipak emo se u ovom delu usredsrediti samo na rad sa relacionim bazama podataka. U tom cilju neophodno je pristupiti podacima ili kako se to esto kae napraviti konekciju. Postoje male razlike u nainu konektovanja sa bazom podataka u zavisnosti od verzije Visual Basic.NET-a. U VB.NET-u 2003 pristup bazi podataka se vri preko Data Form Wizard-a. U verziji 2005 Express Edition je to malo drugaije. Poto se knjiga orijentisala na demonstraciji nekih programskih delova pomou verzije Visula Basic-a 2005 Express Edition-a, nain pristupanja podacima e se razmatrati u ovom alatu. Postoji nekoliko glavnih komponenti za realizaciju veze sa podacima:

178

Objektno orijentisano programiranje

Connection Omoguuje aktivnu konekciju sa bazom podataka tokom rada. Osim toga daje osnovne informacije o bazi podataka, kao to je: naziv baze podataka, gde se nalazi baza podataka (lokacija). Ova komponenta nudi upravljake programe za konektovanje sa bazom podataka, koji su .dll datoteke. To su neophodni kodovi koji omoguuju komunikaciju DataAdaptera sa bazom podataka na njenom jeziku. Command Pomou ove komponente izvrava se SQL iskaz. Iskaze moemo koristiti i za selektovanje, unos, brisanje i izmenu podataka. DataAdapter Slui za uzimanje podataka iz baze podataka ali i za auriranje podataka DataSet Sadri podatke keirane u memoriji i uzete iz komponente DataAdapter. Osim toga skladiti i tabelarne informacije o podacima (naziv polja, vrsta podataka i slino).

8. 2 Povezivanje aplikacije sa bazom podataka


Povezivanje sa bazom podataka znai uzimanje podataka iz tabela na osnovu prethodno navedenih komponenti. Baza podatka na koju emo se fokusirati u ovom delu je Artikli.mdb (slika 81). Ekstenzija .mdb ukazuje da se radi o Microsoft Access bazi podataka, koja u principu moe sadrati osim tabele, upite, izvetaje itd.

Slika 81: tabela Artikli baze podataka Atikli.mdb

Na zadatak je da dalje kreiramo aplikaciju koja je konektovana na ovu bazu podataka i koja e pristupiti podacima u tabeli Artikli. Najpre treba da pokrenemo novi projekat koji emo nazvati BPVisual u Visual Basic.NET 2005 Express-u. Kliknemo na opciju Data koja se

Objektno orijentisano programiranje

179

nalazi na meniju. Odabraemo prozor za prikazivanje baze podataka Show Data Source (slika 8 2).

Slika 82: Pokretanje opcije Data Source za pronalaenje izvora podataka

Sada emo krenuti sa odabirom baze podataka sa kojom elimo da ostvarimo vezu. Pokrenuemo Add New Data Source (mogli smo odmah iz menija, ali ovako vidimo da postoje i drugi putevi da se ovo realizuje). Otvorie nam se prozor gde moemo da odaberemo na ta emo se konektovati: na bazu podataka, Web Servis ili objekte. Kada se otvori ovaj prozor automatski je odabrana baza podataka, kliknuemo na dugme Next koji e nas dalje voditi. Aktivirae se drugi prozor (slika 83) koji nas upuuje na odabir baze podataka, a to ostvarujemo klikom na dugme New Connection. Tada se pred nama pojavljuje jedan drugi prozor kao na slici 84. Slui za dodavanje konekcije sa opcijama sa kojom mainom baze podataka emo raditi: Microsoft-ovim Jet ili SQL Server-om, odnosno da li emo koristiti Access-ove tabele ili SQL Server-e.

180

Objektno orijentisano programiranje

Slika 83: Odabir podataka sa kojom e aplikacija da radi

Odabraemo dugme Change i postaviti konekciju za pristup podacima u Access-u. Nakon toga kliknuemo na dugme Brows, jer treba da naemo Artikli.mdb bazu podataka. Odabraemo eljenu datoteku dvoklikom na nju, pri emu nas vraa na prethodni prozor. U donjem levom uglu nalazi se jo jedno dugme interesantno za nas, a to je dugme za testiranje veze. Obavezno proveravamo da li je konekcija ostvarena. Ako je sve u redu arobnjak e nam javiti da je konekcija bila uspena i klikom na dugme OK vraamo se na prethodni prozor, a zatim na prozor odakle smo i krenuli (slika 83). Dalje nas vodi arobnjak kada kliknemo na dugme Next. Na kraju se otvara prozor u kome moemo videti podatke tabele Artikli (slika 85). Odabraemo sva polja iz tabele tako to emo kliknuti na tabelu Artikli i zavriti postupak povezivanja sa dugmetom Finish. Pojavie se prozor Data Source kao to je to prezentovano na slici 86. U ovom prozoru moemo videti i ta sadri Dataset odnosno koja polja tabele.

Objektno orijentisano programiranje

181

Slika 84: Dodavanje konekcije

Slika 85: Odabir objekata za Dataset

182

Objektno orijentisano programiranje

Slika 86: Prikaz prozora Data Source-a i Dataseta

8. 2 Dodavanje kontrole na formu aplikacije


Povezivanjem baze podataka omoguili smo pristup podacima, ali to nije dovoljno. Sa tim podacima treba da manipuliemo kroz aplikaciju. Stoga, vraamo se na formu gde emo smestiti polja za prikaz podataka. Postupak je veoma jednostavan. Na prozoru Data Sours-a, gde su sva polja iz tabele Artikli, kliknemo levim tasterom na odabrano polje i drei pritisnut levi taster mia prevuemo ga na formu. Postupak emo ponoviti za sva polja iz tabele i imaemo formu kao na slici 87

Slika 87: Unos polja na formu za manipulaciju podataka

Objektno orijentisano programiranje

183

Kada se nanesu sva polja treba ih urediti zbog estetskog izgleda. Ako je obrazac neuredan nee biti ni lako raditi sa njim. Na slici 88 prikazana je forma koju smo kreirali za manipulaciju podataka.

Slika 88: Forma za unos podataka u tabelu Artikli

Ima jo jedna interesantna stvar kod izrade obrasca. Ve kod prvog koraka vidimo da se automatski unosi, osim polja za tekst i polja za prikaz teksta (label) sa nazivom tog polja. Druga stvar je da se pojavljuje meni na vrhu forme koji sadri razne opcije: za pregled podataka (kretanje gore - dole), za dodavanje, brisanje i uvanje. Kada pokrenemo aplikaciju uitavaju se podaci u Dataset-u. ak moemo i nakon otvaranja konekcije odmah i da ga zatvorimo sa: i da radimo dalje sa podacima.
con.Close()

8. 3 Dodavanje kontrola za navigaciju sa podacima


U prethodnom delu formirali smo aplikaciju gde se manipulacija sa podacima mogla uraditi na osnovu menija to je automatski dodato na formu. Ali navigaciju podataka moemo i sami obezbediti, korienjem kontrola. U svrhu demonstracije dodaemo dugme formi pod nazivom Load, zbog toga to prvo moramo obezbediti konekciju. Programski kod koji je potrebno uneti je sledei:

184

Objektno orijentisano programiranje

Imports System.Data ---------------------------Public Class Form1 Private Sub btnLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoad.Click Dim con As New OleDb.OleDbConnection End Sub End Class

Odnosno unosimo samo osenene linije. Sada treba navesti koju tehnologiju povezivanja emo primeniti i gde se nalazi naa baza podataka. Kao to je ve napomenuto na poetku ovog poglavlja moemo se konektovati na razne baze podataka gde svaka ima svoju tehnologiju pristupa. Za realizaciju konekcije najpre nam je potreban objekat za konekciju.
con.ConnectionString="Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\Artikli.mdb

U ovom sluaju baza podataka je Artikli.mdb koja se nalazi u direktorijumu C. Poto je Access baza podataka koristiemo Jet-ovu tehnologiju za povezivanje podataka. Ove informacije prosleujemo ConnectionString-u, a koje je svojstvo promenljive con. Sada otvaramo konekciju sa metodom Open: Zatim koristimo Dataset da bi negde smestili podatke iz baze podataka. On sadri kopiju podataka iz baze i skriven je od nas. Nalazi se samo u memoriji. Dataset treba da komunicira sa objektom konekcije, ali se oni ne vide. Posrednik izmeu njih je DataAdapter, koji se obraa objektu konekcije i izvrava na upit vraajui podatke u Dataset-u. Oni se navode u kodu na sledei nain:
Dim ds As New DataSet Dim da As OleDb.OleDbDataAdapter Dim sql As String con.Open()

Objektno orijentisano programiranje


sql = "SELECT * FROM tblArtikli" da = New OleDb.OleDbDataAdapter(sql, con) da.Fill(ds, "Artikli")

185

Prva tri reda deklariu promenljive. Nakon toga postavlja se strukturirani upit koji e da obezbedi podatke iz tabele. Zatim se kreira novi objekat DataAdapter-a, gde se deklariu dva objekta: SQL upit kao varijabla sql i objekat konekcije con. I konano smetamo podatke u Dataset nakon to ih je DataAdapter selektovao. To se vri pomou metode Fill pri emu se navode: naziv Dataset-a i identifikaciono ime za tog DataAdaptera Artikli. Sada emo dodati kontrole na na prazan obrazac i to tri polja za prikaz teksta (Label), tri polja za podatke (TextBox) i dugmad za unos podataka, brisanje, za kretanje kroz podatke tabele i za potvrdu da su izmenjeni podaci u tabeli. Kada se nanesu kontrole unosi se sledei kod odmah ispod za prikaz teksta:
txtNazivArtikla.Text = ds.Tables("Artikli").Rows(0).Item(1) txtSifraJM.Text = ds.Tables("Artikli").Rows(0).Item(2) txtPakovanje.Text = ds.Tables("Artikli").Rows(0).Item(3)

pa e celokupno kod izgledati ovako:

Private Sub btnLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoad.Click Dim con As New OleDb.OleDbConnection Dim ds As New DataSet Dim da As OleDb.OleDbDataAdapter Dim sql As String con.ConnectionString = "PROVIDER=Microsoft.Jet. OleDb.4.0; DataSource=C:\ARTIKLI.mdb" con.Open() sql = "SELECT * FROM Artikli" da = New OleDb.OleDbDataAdapter(sql, con) da.Fill(ds, "Artikli") con.Close() txtNazivArtikla.Text = ds.Tables("Artikli").Rows(0).Item(1) txtSifraJM.Text = ds.Tables("Artikli").Rows(0).Item(2) txtPakovanje.Text = ds.Tables("Artikli").Rows(0).Item(3) End Sub

186

Objektno orijentisano programiranje

Sada emo urediti kod tako da kada pokrenemo aplikaciju automatski se uitavaju podaci na formi, ali emo prethodno postaviti neke varijable u deklaracionom delu:
Imports System.Data -------------------Public Class Form1 Dim Dim Dim Dim Dim Dim con As New OleDb.OleDbConnection ds As New DataSet da As OleDb.OleDbDataAdapter sql As String inc as integer Maxrows As Integer

ta predstavljaju prve etiri varijable ve smo objasnili, jedino da kaemo da su poslednje dve promenljive: Maxrows za smetanje podataka iz Dataset-a i inc kao broja za metodu prebrojavanja redova Row.Count. Pa onda kodu dodajemo sledee redove: Neophodno je voditi rauna o broju redova u Dataset-u. Ako se nadmai, Visual Basic.NET e javiti greku. Prebrojavanje se radi pomou navedene metode tako to promenljiva inc prolazi kroz sve redove:
Private Sub Navigacija() txtNazivArtikla.Text = ds.Tables("Artikli").Rows(0).Item(1) txtSifraJM.Text = ds.Tables("Artikli").Rows(0).Item(2) txtPakovanje.Text = ds.Tables("Artikli").Rows(0).Item(3) End Sub Maxrows=ds.Tables(Artikli).Row.Count inc=-1

Sada emo na dugme Sledei uneti kod:


If inc <> Maxrows -1 Then inc=inc+1 Navigacija() Else MsgBox(Nema vie podataka) End If

Ostalo je jo da se za ostale kontrole za pregled podataka unese kod tako da emo na dugme Naredni dodati:
If inc > 0 Then inc=inc-1

Objektno orijentisano programiranje


Navigacija() ElseIf inc = -1 Then MsgBox(Nema jo podataka) Else MsgBox(Prvi podataka) End If

187

na dugme Poslednji uneti sledee:


If inc <> Maxrows -1 Then inc= Maxrows -1 Navigacija() End IfI

i na dugme Prvi kod:


If inc <> 0 Then inc= 0 Navigacija() End If

Sa ovim smo uredili kodove za pregled podataka, ali je potrebno omoguiti i auriranje baze podataka. Poto u toku rada baratamo samo sa podacima u Dataset-u, neophodno je omoguiti korisniku da izmenja, da doda i da brie podatke ba u tabeli baze podataka. Za manipulaciju je potrebno dugme btnUnos za unos podataka, btnUpdate za auriranje podataka, btnBrisanje za brisanje postojeeg podatka, btnCommit za prihvatanje podataka u bazu i btnClear u sluaju da korisnik odlui da neto ne unese. U tu svrhu treba da unesemo kodove za dugmad koje smo ve prethodno predvideli za auriranje. Prvo emo dodati kod na dugme btnUpdate:
Dim cb As New OleDb.OleDbCommandBuilder(da) ds.tables("Artikli").Rows(inc).item(1)= txtNazivArtikla. Text ds.tables("Artikli").Rows(inc).item(2)= txtSifraJM.Text ds.tables("Artikli").Rows(inc).item(3)= txtPakovanje.Text da.Update(ds, "Artikli") End Sub

188

Objektno orijentisano programiranje

Za izvrenje ovog koda potreban je Command Builder koji gradi SQL string i smeta se u promenljivu cb. Sa kojim DataAdapter-om (da je naziv adaptera u ovom sluaju) emo raditi navodimo posle kljune rei u zagradama. Uloga Command Builder-a je da omogui auriranje podataka sa vrednostima koji su smeteni u Dataset-u. O tome je ve bilo rei da je to privremena tabela u koju se smetaju podaci, tako da korisnik ne moe direktno da pristupi podacima. Kada nastane promena u Dataset+u to treba preneti i u tabelu u kojoj su smeteni podaci. DataAdapter e ostvariti kontakt sa bazom podataka i pomou Command Builder-a e aurirati podatke. Korisniku pored auriranja treba omoguiti i da doda novi podatak u bazu. Na dugme btnUnos unosimo programski kod kojim samo briemo sadraj tekstualnih polja, a pri emu istovremeno iskljuujemo ostale dugmie:
btnCommit.Enabled = True btnUnos.Enabled = False btnUpdate.Enabled = False btnBrisanje.Enabled = False txtNazivArtikal.Clear() txtSifraJM.Clear() txtPakovanje.Clear()

Da bi ovo radilo ispravno prilikom pokretanja aplikacije postavljamo svojstvo Enabled na False dugmeta btnCommit u prozoru svojstava. Kada kliknemo na dugme za dodavanje podataka, dugme btnCommit e biti iskljueno. Da bi ponovo bilo aktivno ovo dugme, a pri emu se deaktiviraju ostali, treba da dodamo sledei kod na dugme btnClear:
btnCommit.Enabled = False btnUnos.Enabled = True btnUpdate.Enabled = True btnBrisanje.Enabled = True inc=inc-1 Navigacija()

Poslednje dve stavke samo prikazuju prvi podatak.

Objektno orijentisano programiranje

189

Dodavanje novog podataka u bazu podataka vriemo pomou dugmeta btnCommit dodavanjem sledeeg koda:
If inc <> -1 Then Dim cb As New OleDb.OleDbCommandBuilder(da) Dim dsNewRow As DataRowe dsNewRow =ds.Tables(Artikli).NewRow() dsNewRow.Item(NazivArtikal)=txtNazivArtikla.Text dsNewRow.Item(SifraJM)=txtSifraJM.Text dsNewRow.Item(Pakovanje)=txtPakovanje.Text dsNewRow =ds.Tables(Artikli).Rows.Add(dsNewRows) da.Update(ds,Artikli) btnCommit.Enabled = False btnUnos.Enabled = True btnUpdate.Enabled = True btnBrisanje.Enabled = True End If

U nastavku objasniemo ta ovi kodovi znae. Prvo postavljamo pitanje da li je podatak ispravan ako nije, promenljiva inc e biti -1. U suprotnom realizovae se navedeni kod. Promenljiva dsNewRow slui za dodavanje novog reda u Dataset-u i tipa je DataRow. Nakon toga saoptavamo da emo dodati novi red i to metodom NewRow(). Podaci koje treba uneti su u poljima za prihvatanje teksta (TextBox). U sledeem redu poziva se metod Add za dodavanje novog reda u Dataset-u iz promenljive dsNewRow. Nakon toga pomou metode Update auriramo podatak. Sada je jo ostalo da se kreira kod za dugme btnBrisanje kojim emo brisati podatke iz baze. Kod koji treba uneti glasi ovako:
Dim cb As New OleDb.OleDbCommandBuilder(da) ds.Tables(Artikli).Rows(inc).Delete() Maxrows= Maxrows-1

190

Objektno orijentisano programiranje


inc=0 Navigacija() da.Update(ds,Artikli)

Podrobno objanjenje je nepotrebno jer smo se susreli ve sa ovim kodovima. Jedino treba istai da se ovde koristi metod Delete za brisanje podataka. Do sada izloeno u ovom poglavlju pokazuje da se za kreiranje aplikacije za neku realnu primenu zahteva upotreba klasa, kontrola metode i svojstava, ali i rad sa bazama podataka. Ovde je samo demonstrirano na veoma jednostavnom primeru kako se izgrauje jedna potpuna aplikacija.

Literatura
1. Grupa autora: od poetka Visual Basic .NET,CET, Beograd,2002 2. Spenser K., Eberhard T., Alexsander J.: Izrada viekratno upotrebljivih komponenti Visual Basic .NET, CET, Beograd,2003 3. Riordna R.: ADO.NET Korak po korak, CET, Beograd,2002 4. erniek I.: Projektovanje algoritama, TF M. Pupin-Via kola za organizaciju i informatiku Novi Sad, 1995 5. erniek I.: Programiranje, TF M. Pupin-Via kola za organizaciju i informatiku Novi Sad, 1994 6. msdn.microsft.com 7. www.wikipedia.org 8. www.objc.toodarkpark.net 9. www.homeandlearn.co.uk 10. www.pluto.szikszi .hu 11. www.mathworld.wolfram.com 12. www.linuxo.org 13. www.owlnet.rice.edu 14. www.codeproject.com 15. www.starvbdotnet.com

Impresum

You might also like