(TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka...

78
1 Univerzitet u Novom Sadu Tehnički fakultet ,,Mihajlo Pupin” Zrenjanin SEMINARSKI RAD Predmet: Programski prevodioci Tema: Upoređivanje gramatike programskog jezika C# i Java na primeru objektno-orijentisane aplikacije uz primenu baze podataka -Evidencija rezultata igrice Borilačka arena uz SQLite bazu podataka- (TIP 5/a) Predmetni nastavnik: Dr. Ljubica Kazi Student: Sovilj Ivana SI 10/17 Zrenjanin, 2020. godina

Transcript of (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka...

Page 1: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

1

Univerzitet u Novom Sadu

Tehnički fakultet ,,Mihajlo Pupin”

Zrenjanin

SEMINARSKI RAD Predmet: Programski prevodioci

Tema:

Upoređivanje gramatike programskog jezika C# i Java na primeru

objektno-orijentisane aplikacije uz primenu baze podataka

-Evidencija rezultata igrice Borilačka arena uz SQLite bazu podataka-

(TIP 5/a)

Predmetni nastavnik: Dr. Ljubica Kazi Student: Sovilj Ivana SI 10/17

Zrenjanin, 2020. godina

Page 2: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

2

1. Zadatak ................................................................................................................................................ 4

2. Opis poslovnog konteksta realizovanog primera ................................................................................ 5

3. Kratak opis razvojnog okruženja ......................................................................................................... 6

Java .................................................................................................................................................. 6

IntelliJ IDEA 2020 .................................................................................................................... 6

Namena alata .................................................................................................................. 6

Izgled ekrana alata .......................................................................................................... 6

Opis načina korišdenja .................................................................................................... 8

C# .................................................................................................................................................. 14

Microsoft Visual Studio 2019 ................................................................................................ 14

Namena alata ................................................................................................................ 14

Izgled ekrana alata ........................................................................................................ 14

Opis načina korišdenja .................................................................................................. 15

4. Kratak opis alata za analizu rada aplikacije ....................................................................................... 20

Java ................................................................................................................................................ 20

Namena alata ........................................................................................................................ 20

Izgled ekrana alata ................................................................................................................ 20

C# .................................................................................................................................................. 21

Namena alata ........................................................................................................................ 21

Izgled ekrana alata ................................................................................................................ 21

5. Korisničko uputstvo razvijene aplikacije ........................................................................................... 22

Namena aplikacije i osnovne funkcije ................................................................................... 22

Ekrani i način korišdenja ........................................................................................................ 22

6. Opis implementacije ......................................................................................................................... 26

Java ................................................................................................................................................ 26

Dizajn korisničkog interfejsa ................................................................................................. 26

Page 3: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

3

Ključni delovi programskog koda sa objašnjenjem ............................................................... 30

C# .................................................................................................................................................. 35

Dizajn korisničkog interfejsa ................................................................................................. 35

Ključni delovi programskog koda sa objašnjenjem ............................................................... 39

7. Greške porgramskog koda ................................................................................................................ 46

Java ................................................................................................................................................ 46

Segmenti programskog koda sa greškama i korekcija .......................................................... 46

C# .................................................................................................................................................. 49

Segmenti programskog koda sa greškama i korekcija .......................................................... 49

Pravila i EBNF prikaz gramatički ispravnog programskog koda .................................................... 52

8. Prikaz primene alata u detektovanju grešaka ................................................................................... 54

Java ................................................................................................................................................ 54

Ekranski prikaz izveštaja kompajlera nad neispravnim kodom i nakon popravke ................ 54

Ekranski prikaz reakcije na run-time grešku ......................................................................... 55

C# .................................................................................................................................................. 56

Ekranski prikaz izveštaja kompajlera nad neispravnim kodom i nakon popravke ................ 56

Ekranski prikaz reakcije na run-time greške ......................................................................... 57

9. Zaključak ............................................................................................................................................ 58

10. Literatura ......................................................................................................................................... 59

11. Listing .............................................................................................................................................. 60

Java ................................................................................................................................................ 60

C# .................................................................................................................................................. 65

Page 4: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

4

1. Zadatak

Uporediti gramatike 2 programska jezika. Napisati isti objektno-orjentisani programski kod

koji realizuje osnovni rad sa bazom podataka primenom 2 programska jezika. Kreirati u kodu

namerne greške 4 tipa – leksičku, sintaksnu, semantičku i run-time. Pustiti standardni

kompajler za svaki jezik da detektuje greške i prikazati izveštaj koji daje u vezi grešaka i

ispravnog rada.

Page 5: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

5

2. Opis poslovnog konteksta realizovanog primera

U ovom primeru realizovana je desktop aplikacija pod naziv Borilačka arena. Aplikacija-igrica

omogućava igračima da se takmiče sa izabranim protivnikom (racunarom ili kolegom).

Svaki igrač ima slobodu odabira arene u kojoj će se takmičiti, kao i igrača sa jedinstvenim

čarolijama.

Po završetku, takmičari imaju mogućnost da pogledaju rezultate meča zahvaljujući SQLite

bazi podataka koja pamti njihove poteze, sumira snagu igrača i proglašava pobednika igre.

U samom kodu, jedan igrač je jedna nit, što znači da su sinhronizovani njihovi potezi (dok

jedan igrač ne odigra svoj potez, protivnik neće započinjati svoj).

Page 6: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

6

3. Kratak opis razvojnog okruženja

Java

IntelliJ IDEA 2020

Namena alata

IntelliJ IDEA je alat koji prestavlja integrisano razvojno okruženje (Integrated Development

Environment - IDE) za kreiranje softvera.

Razvoj savremenih aplikacija uključuje upotrebu više jezika, alata, okvira i tehnologija.

Daje podršku za razvoj programa primenom različitih programskih jezika, pri čemu se

najčešće koristi Java.

Java kod se izvršava korišćenjem Java Virtuelne Mašine (JVM).

JVM je jezgro Jave, to je apstraktna mašina koja postoji samo u memoriji.

Java je jezik koji se prevodi i interpretira: (java izvorni kod - *.java fajl, nakon kompajliranja

(kompajlerom javac) se prevodi u bajtkod - *.class fajl, bajtkod se pomoću java interpretera

dešifruje i interpretira u izvršni kod).

Izgled ekrana alata

Na slici 1. je prikazan izgled alata IntelliJ IDEA nakon pokrenute desktop aplikacije.

U odeljku project nalaze se fajlovi sa klasama (java kod), bazom podataka, importovanim

JDBC drajverom za konekciju sa bazom podataka i ikonicama importovanim za korisnički

interfejs.

Na slici 2. je sa leve strane prikazan Toolbox zahvaljujući importovanom Scene Builder-u koji

omogućava postavljanje grafičkih kontrola, dok se sa desne strane nalaze Properties, Code i

Layout gde se podešavaju osobine aktivne grafičke kontrole.

Page 7: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

7

Slika 1 Izgled alata IntelliJ IDEA nakon pokrenute desktop aplikacije

Slika 2 Izgled IntelliJ IDEA sa alatima za korisnički interfejs

Page 8: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

8

Opis načina korišćenja

Kako bi se JavaFX desktop aplikacija mogla pokrenuti neophodno je pratiti sledeće korake:

1. Kreiranje novog projekta

Odabir JavaFX Application sa instaliranim SDK(Software Development Kit), u ovom slucaju

instalirane verzije 14.0.1.

Slika 3 Kreiranje novog projekta u smeru realizovanja JavaFX aplikacije

2. Postavljanje putanje do Main klase

Kako bi aplikacija mogla da se pokrene neophodno je kreirati fajl module-info.java u kom se

nalazi putanja do Main klase, u kojoj se nalazi statična main metoda za pokretanje aplikacije.

Što je prikazano na slici br. 4.

Slika 4 Prikaz module-info.java fajla

Page 9: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

9

3. Importovanje javafx biblioteka za javafx desktop aplikaciju

Klikom na file u levom gornjem uglu, a zatim klikom na Project Structure, mogu se pogledati

biblioteke koje su importovane u naš projekat, a koje su nam neophodne kako bismo koristili

JavaFX biblioteke.

Na slici 5. je lista koju čine:

Javafx-swt

Javafx.base

Javafx.controls

Javafx.fxml

Javafx.graphics

Javafx.media

Javafx.swing

Javafx.web

Slika 5 Project Structure sa importovanim bibliotekama

Page 10: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

10

Importovanje istih prilikom kodiranja:

Slika 6 Prikaz klase IgraController gde se vrši direktan import javafx neophodnih biblioteka

klasa

Slika 7 Uveličan prikaz slike 6

Sada je pokretanje desktop aplikacije validno.

Kako bi se JavaFX desktop aplikacija mogla povezati sam SQLite bazom podataka neophodno

je pratiti sledeće korake:

1. Otvoriti https://www.sqlite.org/download.html i uraditi download prikazan na slici br.8

ukoliko je operativni sistem Windows.

Page 11: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

11

Slika 8 Download sqlite .exe fajla

2. Eksportovati .zip fajl u folderu po zelji na računaru, a zatim desnim klikom na

This PC ---> Properties ---> Advanced system settings ---> Advanced ---> Environment

variables ---> PATH,

dodati putanju do .exe fajla.

3. Otvoriti https://bitbucket.org/xerial/sqlite-jdbc/downloads/ i uraditi download

sqlite-jdbc-3.27.2.1.jar drajvera.

4. Importovati jdbc drajver u svoj projekat

5. Kreirati bazu podataka

6. Sledi konekcija sa SQLite bazom podataka gde se na slici br.8. može videti putanja do

kreirane baze podataka pod nazivom Borba.db.

Slika 9 Konekcija sam SQLite bazom podataka

Page 12: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

12

7. Na mestu gde se nalazi klasa konekcije sa bazom podataka, neophodno je u terminalu uneti

sledeću komandu:

Umesto Connect, uneće se naziv klase gde je konekcija sa bazom.

Slika 10 Cmd komanda konekcije

8. Nakon ovog koraka dobija se potvrda o tome da li je uspešno povezana aplikacija sa

bazom podataka preko jdbc drajvera.

Neophodno je navesti u terminalu sledeću komandu i nakon toga putanju do klase gde je

uraĎena konekcija sa bazom. Naravno, u slučaju da je ista verzija skinuta kao i na slici 11.

Slika 11 Cmd komanda putanje do jdbc drajvera

Konekcija sa bazom podataka je završena.

Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz. (Slika 12. , Slika 13. , Slika 14.)

Slika 12 Kreiranje tabele

Page 13: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

13

Slika 13 Unošenje podataka u tabelu

Slika 14 Prikaz rezultata nakon borbe

Page 14: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

14

C#

Microsoft Visual Studio 2019

Namena alata

Microsoft Visual Studio 2019 je alat opšteg tipa koji predstavlja integrisano razvojno

okruženje za kreiranje softvera opšteg tipa. Daje podršku za razvoj programa primenom

različitih programskih jezika, pri čemu se najčešće koristi C#. TakoĎe, daje mogućnosti

kreiranja projekata različitih vrsta, koje se mogu kombinovati u različite softverske

arhitekture. Najčešće korišćene su desktop aplikacije, biblioteke klasa, veb servisi, veb

aplikacije, a novije verzije Visual Studio nude mogućnost i izrade mobilnih aplikacija.

Izgled ekrana alata

Na slici 15. je prikazan izgled alata Microsoft Visual Studio 2019 realizovane desktop

aplikacije. U levom delu najčešće se nalazi Toolbox koji omogućava postavljanje grafičkih

kontrola, u gornjem desnom uglu je Solution Explorer gde je dat spisak fajlova koji čine

projekat, a dole desno je odeljak Properties gde se podešavaju osobine aktivne grafičke

kontrole.

Slika 15 Izgled alata Microsoft Visual Studio 2019

Page 15: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

15

Opis načina korišćenja

Kako bi se desktop aplikacija mogla pokrenuti neophodno je pratiti sledeće korake:

1. Kreiranje novog projekta

Odabir Windows Forms Application (.NET Framework), kao što je prikazano na slici 16.

Slika 16 Kreiranje projekta

2. Kreiranje Windows Forms

Prilikom dodavanja Windows Forms dobijamo sledeće:

NazivKlase.Designer.cs (Slika 17.)

Upotreba: Automatski deklariše varijable koje koje su tipa: button, label i drugo ubačeno za

komunikaciju sa korisnikom.

Page 16: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

16

Slika 17 Heroj.Designer.cs klasa

NazivKlase.cs (Slika 18.)

Upotreba: Ukoliko se vrše odreĎene funkcije neophodno ih je obraditi u ovoj klasi (poput

prelaska na novi prozor, unos podataka i drugo)

Slika 18 Heroj.cs klasa

Page 17: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

17

NazivKlase.cs[Design] (Slika 19.)

Slika 19 Design klase Heroj.cs

Kako bi se desktop aplikacija mogla povezati sa SQLite bazom podataka neophodno je:

1. Kliknuti desnim klikom na Solution koji se nalazi u desnom gornjem uglu, a zatim na

Manage NuGet packages for Solution--->search(System.Data.SQLite) i uraditi downlaod, kao

što je prikazano na slici 20.

Page 18: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

18

Slika 20 Instalacija System.Data.SQLite

2. Uspostaviti konekciju sa bazom podataka kreiranoj u projektu pod nazivom Borba.db, kao

što je prikazano na slici 21.

Slika 21 Konekcija sa SQLite bazom podataka

Page 19: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

19

3. Kreiranje tabele (Slika 22.)

Slika 22 Kreiranje tabele

4. Unos pdataka u tabelu(Slika 23.)

Slika 23 Unošenje podataka u tabelu

5. Ispis rezultata- štampanje podataka (Slika 24.)

Slika 24 Prikaz rezultata igre

Page 20: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

20

4. Kratak opis alata za analizu rada aplikacije

Java

Namena alata

Za analizu rada (u ovom slučaju desktop) aplikacije usled grešaka, neophodno je postaviti

breakpoint na odreĎene delove koda gde želimo da ispitamo grešku i pogrenemo debug.

Debug-ovanje programa olakšava pronalaženje i uklanjanje grešaka, kao i praćenje izvršavanja

linija koda koje obeležimo.

Izgled ekrana alata

Slika 25

Na slici je prikazana izabrana Main klasa, prilikom pokretanja programa, main metoda se prva

izvršava. Desno se nalazi strelica što označava pokretanje programa(run), dok se pored desno

nalazi ikonica za debug.

Postavljanje breakpoint-a (crveni krug na pocetak linije koda):

Slika 26

Prilikom pokretanja, dobija se izveštaj o označenom delu koda:

Slika 27

Page 21: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

21

C#

Namena alata

Za analizu rada (u ovom slučaju desktop) aplikacije usled grešaka, neophodno je postaviti

breakpoint na odreĎene delove koda gde želimo da ispitamo grešku i pogrenemo debug.

Debug-ovanje programa olakšava pronalaženje i uklanjanje grešaka, kao i praćenje izvršavanja

linija koda koje obeležimo.

Izgled ekrana alata

Za opciju build project potrebno je odabrati opciju:

Slika 28

Postavljanje breakpoint-a (crveni krug na pocetak linije koda):

Slika 29

Prilikom pokretanja, dobija se izveštaj o označenom delu koda:

Slika 30

Page 22: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

22

5. Korisničko uputstvo razvijene aplikacije

Namena aplikacije i osnovne funkcije

Osnovna namena aplikacije je zabava za ljubitelje igrica. Osnovne funkcije su:

Unos podataka

Borba (izmena početnih vrednosti podataka podataka)

Prikaz rezultata pobednika

Ekrani i način korišćenja

Prikaz samo ekrana u IntelliJ IDEA (isto je i u Visual Studio-u):

Nakon pokretanja aplikacije: (Slika 25.)

Slika 31 Prikaz forme nakon pokrenute aplikacije

Page 23: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

23

Prelazak na formu gde se bira način borbe (Slika 26.)

Slika 26 Prikaz forme za odabir načina borbe

Prelazak na formu gde se bira heroj (Slika 27.)

Slika 27 Prkaz forme za odabir heroja

Page 24: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

24

Prelazak na formu gde se bira arena (Slika 28.)

Slika 28 Prikaz forme za odabir arene

Nakon odabranog:

Heroj: Ratnika

Arena: Arena ubica

Način borbe: Kompjuter

Prikazuje se borba: (Slika 29.) gde se Ratnik bori protiv Čarobnjaka(random izabrani heroj),

gde svako ima svoje čarolije kojima napada protivnika, kao i snagu, zdravlje za opstanak u

borbi.

Page 25: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

25

Slika 29 Prikaz forme za borbu sa unešenim odabranim karakteristikama

Page 26: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

26

6. Opis implementacije

Java

Dizajn korisničkog interfejsa

Scene Builder generiše izvorni kod FXML dokumenta kako se definiše grafički korisnički

interfejs za JavaFX aplikaciju.

Scene Builder omogućava da se brzo i jednostavno napravi prototip interaktivne aplikacije

koja povezuje vizuelne komponente sa logikom aplikacije.

JavaFX Scene Builder je alat za dizajniranje JavaFX aplikacija.

Omogućava jednostavno prevlačenje (drag-and-drop) i pozicioniranje komponenata

grafičkog korisničkog interfejsa na JavaFX scenu.

Kako se gradi scena, tako se automatski generiše odgovarajući FXML dokument.

Slika 30 Prikaz alata Scene Builder

Page 27: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

27

Na slici 30. prikazan je izgled alata Scene Builder koji se sastoji iz:

Containers, Controls, Menu, 3D, Charts, Shapes, Miscellaneous sa jedne strane

Slika 31 Prikaz alata sa leve strane slike 30.

Properties, Layouts, Code sa druge strane

Slika 32 Prikaz alata sa desne strane slike 30.

Scene Builder omogućava jednostavno prevlačenje (drag-and-drop) i pozicioniranje

komponenata grafičkog korisničkog interfejsa na JavaFX scenu.

Na slici 30. u donjem levom uglu mogu se zapaziti opcije: Scene Builder i Text.

Text: .fxml fajl

FXML je zasnovan na jeziku XML i obezbeĎuje strukturu za izgradnju grafičkog korisničkog

interfejsa odvojeno od aplikacione logike koda.

FXML nema shemu poput XML-a, ali ima osnovnu, unapred definisanu strukturu.

FXML je direktno povezan sa Javom. Iako FXML može da se koristi za kreiranje bilo kakvog

grafičkog korisničkog interfejsa, posebno je koristan za kreiranje grafičkih korisničkih

interfejsa koji imaju velike, kompleksne grafove scena, forme, unos podataka ili složene

animacije.

Page 28: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

28

FXML je pogodan za definisanje statičkih rasporeda kao što su forme, kontrole i tabele, ili za

dinamičke sadržaje koji uključuju skripte.

Akcije

Na slici 33. prikazan je Code odeljak gde je za button ---> postavljena akcija pod nazivom

#sledećaStrana.

Slika 33 Prikaz akcije dugmeta radi prelaska na sledeću stranu

U Text odeljku to izgleda:

Slika 34 Prikaz akcije u .fxml fajlu

FXML fajl sadrži putanju do kontrolera koji će preispitati uslove za prelazak na sledeću

stranu.(Slika 35.) - metoda sledecaStrana()

U ovom metodi ispituje se uslov (u ovom slučaju da li je korisnik u text field uneo 1, 2 ili 3 tj.

Da li je odabrao koji će heroj da bude). Samo u ova tri slučaja može preći na sledeću stranu.

Page 29: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

29

Slika 35 Kontroler Heroj

Page 30: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

30

Ključni delovi programskog koda sa objašnjenjem

Prilikom startovanja borbe odvija se ključan deo, a to je:

Startovanje niti (jedni nit(thread) - jedan heroj)

Slika 36 Startovanje tredova nakon postavljanja vrednosti moći u textfield-ove

Page 31: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

31

Na slici 37. nalazi se prikaz koda klase Heroj1, a na slici 38. klase Heroj2.

Ove klase nasleĎuju klasu Thread i u okviru run() metode bavljaju svoju funkciju-regulisanje

stanja igrača tokom borbe.

Slika 37 klasa Heroj1

Slika 38 Klasa Heroj2

Page 32: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

32

Kako bi potezi igrača bili sinhronizovani, neophodno je korišćenje semafora.

Definicija semafora nalazi se na slici broj 39.

Slika 39 Definicija semafora

Zahvaljujući metodama potezPrvogIgrača i PotezDrugogIgrača, kao i metodama: acquire() i

release(), prvi borac čeka na protivnika i obrnuto.

Slika 40 Metoda potez prvog protivnika u okviru klase Borba

Page 33: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

33

Slika 41 Metoda potez drugog protivnika u okviru klase Borba

Kao komunikacija izmeĎu logike igrice i korisničkog interfejsa, postoji kontroler klasa koja

refresh-uje trenutne rezultate nakon poteza boraca.

Na slici 42. vidi se funkcija metode refresh-a i korisničkog interfejsa (Slika 43.)

Slika 42 Metoda za refresh rezultata

Page 34: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

34

Prikaz korisničkog interfejsa nakon završene borbe(izmenjene osobine igrača ).

Slika 43 Prikaz stanja nakon završene borbe- User Interface

Page 35: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

35

C#

Dizajn korisničkog interfejsa

WPF (Windows Presentation Foundation) predstavlja grafički podstistem .NET Framework-a

direktno povezan sa XAML - om.

Omogućava programski model za izfradnju aplikacija i obezbeĎuje jasnu razliku izmeĎu

korisničkog interfejsa i business logike.

WPF aplikacije se mogu razvijati kao Desktop i Web aplikacije. WPF omogućava bogat dizajn,

kontorlu i razvoj vizuelnih aspekata Windows programa.

Arhitektura WPF-a obuhvata komponente koje pripadaju upravljivom i neupravljivom kodu.

Slika 44 Prikaz alata

Na slici 44. prestavljen je prikaz alata koji obuhvata:

AllWindowsForms(Slika 45. )

Properties(Slika 46. )

Page 36: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

36

Slika 45 Toolbox

Page 37: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

37

Slika 46 Properties

Prilikom dodavanja Windows Forms dobijamo sledeće:

NazivKlase.Designer.cs (Slika 47.)

Upotreba: Automatski deklariše varijable koje koje su tipa: button, label i drugo ubačeno za

komunikaciju sa korisnikom.

Page 38: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

38

Slika 47 Heroj.Designer.cs klasa

NazivKlase.cs (Slika 48.)

Upotreba: Ukoliko se vrše odreĎene funkcije neophodno ih je obraditi u ovoj klasi (poput

prelaska na novi prozor, unos podataka i drugo).

U primeru sa slike prelazak na sledeći prozor gde se bira arena u kojoj će se borba odvijati,

moguće je smao ukoliko se zadovolji uslov: a to da je da korisnik unese redni broj heroja kojeg

bira.

Slika 48 Heroj.cs klasa

Page 39: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

39

NazivKlase.cs[Design] (Slika 49.)

Slika 49 Design klase Heroj.cs

Ključni delovi programskog koda sa objašnjenjem

U programskom jeziku C# dolazi do različitosti u odnosu na ključan deo aplikacije, a to je rad

niti i njihova sinhronizacija. S obzirom na drugačije alate koje koriste, takoĎe se predstavljaju

delovi koda i korisnički interfejs u Microsoft Visual Studio-u.

Prilikom startovanja borbe odvija se ključan deo, a to je:

Startovanje niti (jedni nit(thread) - jedan heroj)

Page 40: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

40

Slika 50 Startovanje tredova nakon postavljanja vrednosti moći u textfield-ove

Definicija niti pozivanjem metoda run():

Slika 51 Definicija niti u programskom jeziku C#

Page 41: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

41

Na slici 52. nalazi se prikaz koda klase Heroj1, a na slici 53. klase Heroj2.

Ove klase ne nasleĎuju klasu Thread, kao što je to slučaj u programskom jeziku Java.

Slika 52 klasa Heroj1

Slika 53 Klasa Heroj2

Page 42: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

42

Kako bi potezi igrača bili sinhronizovani, neophodno je korišćenje semafora.

Definicija semafora nalazi se na slici broj 54.

Slika 54 Definicija semafora

Zahvaljujući metodama potezPrvogIgrača i PotezDrugogIgrača, kao i metodama: acquire() i

release(), prvi borac čeka na protivnika i obrnuto.

Slika 55 Metoda potez prvog igrača u okviru klase Borba

Page 43: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

43

Slika 56 Metoda potez drugog igrača u okviru klase Borba

Kao komunikacija izmeĎu logike igrice i korisničkog interfejsa, postoji kontroler klasa koja

refresh-uje trenutne rezultate nakon poteza boraca.

Na slici 57. vidi se funkcija metode refresh-a i korisničkog interfejsa (Slika 58.)

Page 44: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

44

Slika 57 Metoda za refresh rezultata

Page 45: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

45

Prikaz korisničkog interfejsa nakon završene borbe(izmenjene osobine igrača ).

Slika 58 Prikaz stanja nakon završene borbe- User Interface

Page 46: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

46

7. Greške porgramskog koda

Java

Segmenti programskog koda sa greškama i korekcija

Sintaksne greške

NEISPRAVNO

Slika 59

ISPRAVNO

Slika 60

NEISPRAVNO

Slika 61

ISPRAVNO

Slika 62

Leksičke greške

NEISPRAVNO

Page 47: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

47

Slika 63

ISPRAVNO

Slika 64

Semantičke greške

NEISPRAVNO

Slika 65

ISPRAVNO

Slika 66

NEISPRAVNO

Slika 67

ISPRAVNO

Slika 67

Page 48: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

48

Run-time greške

NEISPRAVNO

Slika 69

ISPRAVNO

Slika 70

Page 49: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

49

C#

Segmenti programskog koda sa greškama i korekcija

Sintaksne greške

NEISPRAVNO

Slika 71

ISPRAVNO

Slika 72

NEISPRAVNO

Slika 73

ISPRAVNO

Slika 74

Page 50: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

50

Leksičke greške

NEISPRAVNO

Slika 75

ISPRAVNO

Slika 76

Semantičke greške

NEISPRAVNO

Slika 77

ISPRAVNO

Slika 78

NEISPRAVNO

Slika 79

Page 51: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

51

ISPRAVNO

Slika 80

Run-time greške

NEISPRAVNO

Slika 81

ISPRAVNO

Slika 82

Page 52: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

52

Pravila i EBNF prikaz gramatički ispravnog programskog koda

Napravljene sintaksne greške

1) Pravilo:

Naredba uvek ima ; na kraju.

EBNF

<identifikator>::=<telo_naredbe>”;”

2) Pravilo:

Prilikom kreiranje objekta klase obavezno ide () - sa ili bez parametara u zavisnosti od

konstruktora, pre oznake(;).

EBNF

<identifikator> ::=<telo_naredbe>( [identifikator] )<separator>

Napravljene leksičke greške

3) Pravilo:

Prilikom poziva metode iz druge ili iste klase, neophodno je navesti tačan naziv metode.

EBNF

<identifikator1> ::=<identifikator2><naziv_metode>( [identifikator] )<separator>

Napravljene semantičke greške

4) Pravilo:

Potrebno je navesti onoliko argumenata unutar () prilikom poziva metode, koliko i ima

argumenata prilikom definisanja metode.

EBNF

Page 53: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

53

<identifikator> ::=<identifikator2><naziv_metode>( [identifikator] ) || ()<separator>

5) Pravilo:

Neophodno je da se prilikom definisanja promenjive navede njena vrednost tako da bude tipa

koji je deklarisan (int, string...)

EBNF

<int> <identifikator> ::= cifra{cifra}

||

<string> <promenjiva_tipa_string> ::= <vrednost>

<cifra> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0

Napravljene run-time greške

6) Pravilo:

Kako bi se izbegla runtime greška, nije dozvoljeno deklarisati promenjivu tipa int i dodeliti jos

vrednost : broj podeljen nulom, kao što je prikazano na slici br. 69.

Izuzetak je „signal“ koji Java virtuelna mašina generiše ukoliko

detektuje grešku prilikom izvršavanja programa.

EBNF

<int> <identifikator> ::= cifra{cifra}

<cifra> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0

7) Pravilo:

Kako bi se izbegla runtime greška, promenjivu je neophodno kastovati na ispravan način.

EBNF

<int> <identifikator> ::= <mestoZaKastovanje><identifikator><separator>

Page 54: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

54

8. Prikaz primene alata u detektovanju grešaka

Java

Ekranski prikaz izveštaja kompajlera nad neispravnim kodom i nakon

popravke

Greške pri neispravnom kodu:

Slika 83

Slika 84

Slika 85

Slika 86

Slika 87

Page 55: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

55

Nakon popravke:

Slika 88

Ekranski prikaz reakcije na run-time grešku

Slika 89

Page 56: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

56

C#

Ekranski prikaz izveštaja kompajlera nad neispravnim kodom i nakon

popravke

Greške pri neispravnom kodu:

Slika 90

Nakon popravke:

Slika 91

Page 57: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

57

Ekranski prikaz reakcije na run-time greške

Slika 92

Page 58: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

58

9. Zaključak

Cilj ovog rada jeste uporeĎivanje gramatike jezika Java i C#, dok je naglasak na objektno

orijentisanom programiranju uz konekciju sa bazom podataka.

Kroz realizaciju ovog seminarskog rada dolazim do zaključka da je sintaksa programskih

jezika Java i C# veoma slična, a kada je reč o semantici postoje odreĎena odstupanja.

UporeĎivanjem gramatike ova dva jezika, kao i rad u različitim okruženjima poput Visual

Studio-a i IntelliJ IDEA, dovodi do uspešnijeg i bržeg savladavanja grešaka i njihovog

prepoznavanja.

Page 59: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

59

10. Literatura

1) BNF I EBNF slajdovi

https://condor.depaul.edu/ichu/csc447/notes/wk3/BNF.pdf

Page 60: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

60

11. Listing

Java

Klasa Heroj1- logika poteza prvog igrača

Slika 93

Slika 94

Page 61: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

61

Slika 95

Klasa Heroj2- logika poteza drugog igrača

Slika 96

Page 62: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

62

Slika 97

Slika 98

Page 63: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

63

Slika 99

Slika 100

Page 64: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

64

Konekcija sa SQLite bazom podataka

Slika 101

Slika 102

Slika 103

Page 65: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

65

C#

Klasa Heroj1- logika poteza prvog igrača

Slika 104

Slika 105

Page 66: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

66

Slika 106

Slika 107

Page 67: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

67

Klasa Heroj2- logika poteza drugog igrača

Slika 108

Slika 109

Page 68: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

68

Slika 110

Slika 111

Page 69: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

69

Slika 112

Slika 113

Page 70: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

70

Konekcija sa SQLite bazom podataka

Slika 114

Slika 115

Page 71: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

71

Page 72: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

72

Page 73: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

73

Page 74: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

74

Page 75: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

75

Page 76: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

76

Page 77: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

77

Page 78: (TIP 5/a) - TFZR - Index...Slika 11 Cmd komanda putanje do jdbc drajvera Konekcija sa bazom podataka je završena. Sledi kreiranje tabele i unos podataka u istu, kao i ispis-prikaz.

_

78