You are on page 1of 22

VISOKA ŠKOLA „PRIMUS“ GRADIŠKA

SEMINARSKI RAD

Predmet: Programski jezici

Gradiška, maj 2018. God.


VISOKA ŠKOLA „PRIMUS“ GRADIŠKA

SEMINARSKI RAD

Tema: Projektovanje i realizacija aplikacije Morzeov koder

Student: Radomir Bavrlić Br. indeksa 31IT/14

Mentor: Prof. Dr Boško Rodić

Gradiška, maj 2018. God.


Sadržaj

Uvod ........................................................................................................................................... 2
Projektovanje .............................................................................................................................. 3
Obavljanje odgovarajuće analize......................................................................................................... 3
Opis sistema ........................................................................................................................................ 3
Izjava o zahtjevima .......................................................................................................................... 3
Pronalaženje klasa ............................................................................................................................... 4
Pronalaženje odgovornosti klasa......................................................................................................... 4
Utvrđivanje načina saradnje klase sa ostalim klasama ....................................................................... 5
Pravljenje opšteg modela koji opisuje sistem kojeg treba stvoriti ...................................................... 6
Prototip korisničkog interfejsa ............................................................................................................ 6
Realizacija .................................................................................................................................. 8
Kartica: Datoteka ................................................................................................................................. 8
Klasa: Kodiraj ..................................................................................................................................... 12
Klasa: Dekodiraj ................................................................................................................................. 14
Kartica: Tekst ..................................................................................................................................... 15
Kartica: Info ....................................................................................................................................... 16
Prikaz aplikacije u radu ............................................................................................................ 17
Zaključak .................................................................................................................................. 18
Popis korištenih skraćenica ...................................................................................................... 19
Pravni izvori i literature............................................................................................................ 20
Uvod

Projektovanje informacionog sistema je veoma važna stvar kojoj se često daje premalo pažnje što
rezultira mnogo većim troškovima izrade softvera nego je to prvobitno predviđeno. Većina
programera početnika je u zabludi da postoji samo jedna ispravna metodologija projektovanja. To
nije tačno. Ne postoji ispravan ili pogrešan način da se napravi projekat. Danas postoje mnoge
metodologije projektovanja, a svaka od njih ima svoje pristalice. Međutim, dilema nije u izboru
metoda projektovanja, nego da li uopšte koristiti metod prilikom projektovanja. Ovo važi za
ukupan proces proizvodnje softvera. Za pravljenje dobrog projekta, najvažnije je izabrati proces
proizvodnje koji vama i vašoj organizaciji najviše odgovara. Proces projektovanja nema smisla
ako da se niko ne pridržava.

Uspješan objektno orijentisani proces proizvodnje sadrži sledeće korake:

 Sprovođenje odgovarajuće analize

 Pravljenje opisa sistema

 Skupljanje zahtjeva na osnovu opisa sistema

 Pravljenje prototipa korisničkog interfejsa

 Pronalaženje klasa

 Utvrđivanje odgovornosti svake od klasa

 Određivanje saradnje između različitih klasa

 Pravljenje opšteg modela koji opisuje sistem kojeg treba stvoriti

Iako je važan čitav postupak, nama je naročito interesantna poslijednja stavka sa gornjeg spiska:
model sistema kojeg čine dijagrami klasa i načini saradnje između klasa. Ovaj model bi trebao da
vjerno predstavlja sistem, da je razumljiv i da se lako modifikuje. Takođe treba izabrati notaciju
kojom će model biti predstavljen. Na tu scenu stupa UML (Unified Modeling Language). UML
nije proces projektovanja, već jezik za modelovanje. Važno je napomenuti da je projektovanje
proces koji se ponavlja. Čak kada se proizvod nalazi u fazi testiranja, biće potrebno da se u
projektu nešto izmjeni. Vođa projekta odlučuje o trenutku prestanka izmjena.

2
Projektovanje

Obavljanje odgovarajuće analize

U fazi pravljenja analize korisnici i programeri moraju zajedno istražiti činjenice u cilju formiranja
opisa sistema, zahtjeva za projektni zadatak, i da li je projekat uopšte izvodiv. Ako se potvrdi da je
projekat izvodiv, osnovni cilj faze analize jeste da svi koji su uključeni u projekat ovladaju
sistemima i da se utvrde sistemski zahtjevi.

Opis sistema

Opis sistema je tekstualni dokument koji opisuje čitav sistem. Utvrđivanje zahtjeva je osnovni cilj
koji treba postići u fazi analize, međutim, zahtjevi nisu namijenjeni široj publici, već samo
programerima. Ko pročita opis sistema trebalo bi da shvati čemu je sistem namijenjen, od čega se
sastoji i kako radi. Bez obzira kako je sistem napisan on mora kratko i jasno opisati čitav sistem.

Slijedi opis aplikacije koje ću do kraja rada postepeno realizovati i koji je kamen temeljac moje
aplikacije.

Izjava o zahtjevima
Ova aplikacija treba da konvertuje običan tekst u kodiranu poruku korišćenjem Morzeovog koda
te da dekodira poruku iz Morzeovog koda natrag u tekstualni oblik. Treba da može učitati već
postojeći tekstualni dokument (kako bi ga mogli kodirati), te sačuvati trenutni unos i dobijenu
kodiranu poruku u različite tekstualne dokumente. Poželjno je da se direktno iz aplikacije može
potpuno izbrisati sa diska dokument koji se obrađuje. Takođe, potrebno je moći izbrisati sadržaj
polja za unos teksta za svako polje posebno. Informacije o aplikaciji su neizostavna stvar.

Sledeći korak je proučavanje izjave o zahtjevima i pronalaženje klasa. U svrhu modelovanja i


praćenja klasa ću koristiti CRC kartice. Metod CRC, skraćenica za klasa-odgovornost-saradnja
(class-responsibility-collaboration) je popularan način za prepoznavanje i klasifikaciju klasa.
Svaka CRC kartica predstavlja atribute pojedinačne klase, njene odgovornosti i saradnju sa
ostalim klasama.

3
Pronalaženje klasa

Klase odgovaraju imenicama, odnosno objektima – kao što su ljudi, mjesta i stvari. Možemo da ih
posmatramo kao klasifikaciju događaja. Proučavajući izjavu o zahtjevima vidimo da nam trebaju
samo dvije klase. Klasa „Program“ koja će se automatski generisati kada počnemo kreirati
projekat u visual studiu, i klasa koja će sadržati metode za kodiranje i dekodiranje. Iako ove dvije
metode mog da rade unutar iste klase, razdvojiću ih u zasebne klase zbog jednostavnosti projekta.
Sada imam tri klase. Klasu program, kodiraj i dekodiraj.

Pronalaženje odgovornosti klasa

Odgovornosti klasa se odnose na radnje. One se mogu prepoznati kao glagoli u izjavi o
zahtjevima. Na taj način dobijamo spisak odgovornosti tj. metode klase. Naravno, treba imati na
umu da nisu svi glagoli iz izjave metode.

Sada ponovo prolazim kroz izjavu o zahtjevima i izdvajam moguće odgovornosti klasa tj. metode.

Klasa program treba da može:

 Kodirati poruku
 Dekodirati poruku
 Otvoriti postojeći dokument
 Sačuvati tekstualnu poruku
 Sačuvati kodiranu poruku
 Obrisati trenutni dokument
 Obrisati vrijednost iz tekstualnog polja
 Obrisati vrijednost iz kodiranog polja
 Prikazati informacije o aplikaciji

Klasa kodiraj treba da ima:

 Metodu koja kodira tekst u niz Morzeovih znakova

Klasa dekodiraj treba da ima:

 Metodu koja dekodira Morzeove znakove u slova

4
Utvrđivanje načina saradnje klase sa ostalim klasama

Većina klasa ne radi u izolaciji. Da bi klasa mogla ispuniti postavljene zadatke, ona mora
surađivati sa ostalim klasama. Za to su neophodne poruke. Kada jedna klasa želi od druge klase da
dobije potrebne informacije, ili želi da joj druga klasa nešto obavi, ona drugoj klasi šalje poruku.
Tu poruku u objektno orijentisanom programiranju nazivamo objektom.

Slijedi mali dijagram koji predstavlja saradnje ove tri klase.

Objekat kodiraj znak Klasa: Kodiraj

Klasa: Program

Objekat dekodiraj znak Klasa: Dekodiraj

Sada CRC kartice izgledaju ovako:

Klasa: Program
Odgovornosti Saradnje
 Kodirati poruku Klasa: kodiraj
 Dekodirati poruku Klasa: dekodiraj
 Otvoriti postojeći dokument
 Sačuvati tekstualnu poruku
 Sačuvati kodiranu poruku
 Obrisati trenutni dokument
 Obrisati vrijednost iz tekstualnog polja
 Obrisati vrijednost iz kodiranog polja
 Prikazati informacije o aplikaciji

Klasa: Kodiraj
Odgovornosti Saradnje
 Kodiraj znak Klasa: Program

Klasa: Dekodiraj
Odgovornosti Saradnje
 Dekodiraj znak Klasa: Program

5
Pravljenje opšteg modela koji opisuje sistem kojeg treba stvoriti

Sada kada imamo prikaz CRC kartica ostaje nam samo još da unesemo informacije sa kartica u
dijagram klasa. U ovu svrhu se koristi UML jezik za modelovanje i njegovi alati, tj. aplikacije u
kojima se pravi dijagram klasa korišćenjem UML jezika. Dijagrami klasa nose mnogo više
informacija nego CRC kartice. Dijagrami klasa, između ostalog, mogu nositi informacije poput
parametara metoda i tipova vraćene vrijednosti.

Sl. 1 – Prikaz AgroUML alata za modelovanje

Prototip korisničkog interfejsa

Kao završni korak u procesu objektno orijentisanog projektovanja, pravimo prototip korisničkog
interfejsa. Ovaj prototip daje neprocjenjive informacije, koje će pomoći kretanje kroz iteracije
procesa projektovanja. Korisnik vidi sistem kroz korisnički interfejs. Postoji više načina da se
kreira korisnički interfejs. Može se nacrtati na papiru ili tabli. Meni više odgovara C# jezičko
okruženje, pa ću u ovu svrhu i svrhu dalje realizacije projekta koristiti Visual Studio 2015. Kako
god da kreiramo korisnički interfejs, od velike je važnosti za projekat, omogućiti da korisnici daju
svoju konačnu ocjenu izgleda i funkcionalnosti.

6
Sl. 2 – Prototip korisničkog interfejsa

7
Realizacija

Kartica: Datoteka

Pošto sam prilikom projektovanja korisničkog interfejsa ubacio meni strip kontrolu (padajući
meni), polja za tekst (text box) i naljepnice za tekst (labels) konačno mogu preći na realizaciju tj.
na pisanje C# koda. Svaka stavka menija koja se nalazi unutar meni strip kontrole predstavlja
metodu koja će se izvršiti kada korisnik pritisne na nju. Kada u dizajn prikazu izaberemo stavku
menija i dva puta kliknemo na nju, visual studio automatski generiše metodu (događaj) koji se
izvršava kada korisnik pritisne na nju. Krenuću radom od prve stavke. Prvo ću napisati kod a
zatim ga objasniti.

Nakon dvostrukog klika na stavku otvori kartice datoteka visual stidio automatski generiše kod za
događaj koji izgleda ovako: private void openToolStripMenuItem_Click(object sender,

EventArgs e). Unutar vitičastih zagrada pišemo kod koji će se izvršiti.

Sl. 3 – Prikaz koda za dugme otvori, kartice datoteka.

8
Da bi mogli otvoriti neku datoteku koristićemo klasu OpenFileDialog. Ova klasa se nalazi unutar
prostora imena System.IO; kojeg sam učitao na početku projekta. U prvom iskazu kreiram objekat
preko kog pristupam elementima klase. Drugi iskaz definiše ime prozora koji će se otvoriti. Treći
iskaz omogućava samo otvaranje datoteka koji imaju ekstenziju „.txt“. Četvrti iskaz definiše
početni folder koji će biti učitan prilikom otvaranja prozora za izbor .txt datoteke. Sada dolazimo
do kontrole toke. Naredba if kontroliše da li je pritisnuto dugme OK na prozoru. Ako jeste,
izvršava se sledeći kod. Šestim iskazom upisujem putanju do datoteke u label polje na formi.
Sedmim iskazom omogućujem korišćenje stavke Izbriši sa diska kartice datoteka. Pošto otvaranje
neke datoteke može da generiše grešku i time napravi aplikaciju neupotrebljivom, koristim try i
catch blok kako bih rukovodio greškom. Osmi iskaz kreira objekat klase koji čita datoteku
korišćenjem klase StreamReader, a njenom konstruktoru pozlijeđujem parametar koji sadrži
putanju do datoteke. Sada koristim foreach petlju kako bih prošao kroz sve karaktere koje je
objekat klase pročitao, i kako bih ih ispisao jedan po jedan u tekst polje na formi. Kako bih
oslobodio resurse koji su zauzeti čitanjem koristim metodu Close klase StreamReader. Na kraju,
hvatam bilo koji generisani izuzetak i prikazujem ga korisniku korišćenjem informativnog
prozora.

Ako sada pokrenemo projekat i kliknemo na otvori stavku kartice datoteka prokazaće se sledeći
prozor. Biranjem tekstualne datoteke i klikom na dugme ok, prikazuje se sadržaj datoteke u tekst
polje na formi.

Sl. 4 – Prikaz prozora za otvaranje datoteke generisanim korišćenjem klase OpenFileDialog

9
Sl. 5 – Prikaz otvorene HaxLog.txt datoteke na formi aplikacije

Stavka sačuvaj kartice datoteka posjeduje dva podmenija. Pošto su iskazi slični sa prošlim
primjerom objasniću samo klase i iskaze koji nisu ranije korišćeni.

Sl. 6 – Prikaz koda za dugme sačuvaj, kartice datoteka.


10
Na isti način kao što sam u prethodnom primjeru kreirao prozor za otvaranje datoteke, sada
kreiram prozor koji može sačuvati tekst iz polja na formi u tekstualnu datoteku. U tu svrhu
koristim klasu SaveFileDialog i kreiram objekat iste. Sledeća četiri iskaza su identična onima od
ranije. Klasa StreamWriter omogućava zapisivanje teksta u datoteku, i takođe se nalazi u prostoru
imena System.IO.

Sledeća stavka kartice datoteka ima sledeći kod.

Sl. 7 – Prikaz koda dugmeta izbriši sa diska, kartice datoteka.

U prvom iskazu kreiram promjenjivu odgovor koja je tipa podatka DialogResult i koja će
sadržavati vraćenu vrijednost informativne poruke. Ova informativna poruka ima u svom tjelu
definisanu poruku koja će biti prikazana korisniku. Nakon poruke slijedi ime prozora te
određivanje vidljivih dugmadi na prozoru. U ovom slučaju poruka može da vrati YES ili NO
vrijednost. Mene interesuje yes, jer želim obrisati datoteku ako korisnik potvrdi brisanje. Ovo se
najlakše radi if kontrolom toka. Korišćenjem klase File unutar prostora imena System.IO brišem
datoteku tako što klasi proslijedim putanju do datoteke na disku. Ostalim iskazima brišem tekst iz
tekst polja na formi i poništavam tekst koji pokazuje putanju do datoteke na disku. Na kraju
hvatam moguće greške i prikazujem ih korisniku.

Sledeća stavka kartice datoteka izlazi iz aplikacije i ima samo jedan iskaz.

Sl. 8 – Prikaz koda dugmeta izađi, kartice datoteka.

11
Ključna riječ this ima mnogo mogućnosti. Često se koristi kako bi smo inicijalizovali promjenjivu
ili predali parametar po vrijednosti. U ovom slučaju pozivamo metodu koja zatvara formu i ukida
proces aplikacije. Ovim smo završili svu realizaciju kartice datoteka.

Klasa: Kodiraj

Sada je potrebno da napravim klasu na osnovu koje će karakteri iz teksta biti kodirani u Morzeov
kod. Desnim klikom na projekat u solution explorel-u visual studija biram opciju Add a zatim u
podmeniju opciju Class. Visual studio pravi novu praznu klasu u koju unosim kod koji će
pretvoriti karakter teksta u Morzeov kod. Završena klasa sa svim iskazima sada izgleda ovako.

class Kodiraj
{
//Metoda koja kodira
public string KodirajZnak (string znak)
{
Dictionary<char, string> morzeovaAbeceda = new Dictionary<char, string>()
{
{'A' , ".- "},
{'B' , "-... "},
{'C' , "-.-. "},
{'D' , "-.. "},
{'E' , ". "},
{'F' , "..-. "},
{'G' , "--. "},
{'H' , ".... "},
{'I' , ".. "},
{'J' , ".--- "},
{'K' , "-.- "},
{'L' , ".-.. "},
{'M' , "-- "},
{'N' , "-. "},
{'O' , "--- "},
{'P' , ".--. "},
{'Q' , "--.- "},
{'R' , ".-. "},
{'S' , "... "},
{'T' , "- "},
{'U' , "..- "},
{'V' , "...- "},
{'W' , ".-- "},
{'X' , "-..- "},
{'Y' , "-.-- "},
{'Z' , "--.. "},
{'0' , "----- "},
{'1' , ".---- "},
{'2' , "..--- "},
{'3' , "...-- "},
{'4' , "....- "},
{'5' , "..... "},
{'6' , "-.... "},
{'7' , "--... "},
{'8' , "---.. "},
{'9' , "----. "},
12
{' ' , " / "},
};

string kodiraniKarakter = null;


string karakter = znak;
karakter = karakter.ToUpper();

for (int i = 0; i < karakter.Length; i++)


{
char c = karakter[i];
if (morzeovaAbeceda.ContainsKey(c))
{
kodiraniKarakter = morzeovaAbeceda[c];
}
}

return kodiraniKarakter;
}

Sl. 9 – Prikaz koda klase Kodiraj

Prvo kreiram metodu povratnog tipa string kojoj dajem ime KodirajZnak. Prvi iskaz u metodi je
riječnik koji se stvara korišćenjem klase Dictionary koja se nalazi u prostoru imena
System.Collections.Generic. Ova klasa prima dva ulazna parametra. Karakter (char) i niz znakova
(string). Samo ime ove klase govori o čemu se ovdje radi. Korišćenjem objekta ove klase može se
pristupiti njegovim elementima i izvršiti operacija nad njima. Vitičaste zagrade omogućavaju
unošenje više elemenata od jednom i unošenje njihovih reprezentacija. Polje (promjenjiva)
kodiraniKarakter koja je tipa string je polje referentnog tipa i zbog toga ga inicijalizujemo na nultu
vrijednost korišćenjem ključne riječi null. Promjenjiva karakter tipa string sadrži proslijeđenu
vrijednost metode kodirajZnak koja je tipa string i nosi ime znak. Treći iskaz nakon riječnika
pretvara sve karaktere u velika slova korišćenjem metode ToUpper. Sada koristim for petlju kako
bih prošao kroz svaki karakter unutar stringa. Pošto svaka riječ može da sadrži različit broj slova,
koristim mogućnost .Lenght kako bi pročitao ukupan broj slova u riječi. Sada petlja izdvaja slovo
po slovo i skladišti ga unutar promjenjive c tipa char. Uslov if provjerava da li se unutar rječnika
nalazi izdvojeno slovo. Ako postoji, biće vraćena njegova string reprezentacija i sačuvana u
promjenjivu kodiraniKarakter. Ključna riječ return vraća dobijenu vrijednost objektu klase kojeg
kreiramo kada pozivamo klasu.

13
Klasa: Dekodiraj

Sadržaj klase dekodiraj je identičan klasi kodiraj. Elementi unutar rječnika su obrnuto poredani a
postupak pretrage kroz rječnik je ostao identičan. Slijedi prikaz klase Dekodiraj.

class Dekodiraj
{
//Metoda koja dekodira
public string DekodirajZnak(string znak)
{
Dictionary<string, string> morzeovaAbeceda = new Dictionary<string, string>()
{
{".-","A"},
{"-...","B"},
{"-.-.","C"},
{"-..","D"},
{".","E"},
{"..-.","F"},
{"--.","G"},
{"....","H"},
{"..","I"},
{".---","J"},
{"-.-","K"},
{".-..","L"},
{"--","M"},
{"-.","N"},
{"---","O"},
{".--.","P"},
{"--.-","Q"},
{".-.","R"},
{"...","S"},
{"-","T"},
{"..-","U"},
{"...-","V"},
{".--","W"},
{"-..-","X"},
{"-.--","Y"},
{"--..","Z"},
{"-----","0"},
{".----","1"},
{"..---","2"},
{"...--","3"},
{"....-","4"},
{".....","5"},
{"-....","6"},
{"--...","7"},
{"---..","8"},
{"----.","9"},
{"/"," " },
};

string dekodiraniKarakter = null;

if (morzeovaAbeceda.ContainsKey(znak))
{
dekodiraniKarakter = morzeovaAbeceda[znak];
}
return dekodiraniKarakter;
}

14
Kartica: Tekst

Prva stavka kartice tekst je stavka Kodiraj. Kao i ranije, nakon dvostrukog klika visual studio
generiše događaj koji popunjavam kodom. Pošto sam napisao klase Kodiraj i Dekodiraj sada je
vrijeme da ih pozovem.

Sl. 11 – Prikaz koda dugmeta kodiraj, kartice tekst

Prvi iskaz mijenja tekst label kontrole na „kodirana poruka“. Ovaj label se nalazi iznad tekst polja
na formi koji prikazuje kodirane karaktere. Ovo činim kako bi to tekst polje moglo mijenjati svoj
naziv u zavisnosti da li korisnik kodira ili dekodira poruku. U drugom iskazu pozivam klasu
kodiraj i kreiram njen objekat. Foreach petljom prolazim kroz svaki karakter unutar tekst polja na
formi i proslijeđujem ga klasi preko objekta, a zatim vraćenu vrijednost klase ispisujem u tekst
polje na formi predviđeno za kodiranu poruku.

Druga stavka ove kartice je dugme dekodiraj koje ima sledeći kod.

Sl. 12 – Prikaz koda dugmeta dekodiraj, kartice tekst

15
Prvi iskaz ima istu funkciju kao i u ranijem primjeru kod-a dugmeta kodiraj. U drugom iskazu
koristim niz koji ima ime tekst i tip podatka string kako bih u njega upisao sve znakove iz tekst
polja sa forme. Zašto je ovo bitno? Bitno je jer mi indeksi niza omogućavaju da prolazim kroz
svaki niz znakova koji tvori neko slovo ili broj. Prolazak kroz niz činim korišćenjem foreach
petlje. Unutar tijela petlje pozivam klasu Dekodiraj i kreiram objekat. Preko objekta proslijeđujem
niz znakova koji čine Morzeov kod, klasa ih obrađuje i vraća mi odgovarajuću string
reprezentaciju. Vraćenu vrijednost čuvam u promjenjivu slovo tipa string. Na kraju, vrijednost
promjenjive slovo se ubacuje u tekst polje na formi koje sadrži dekodiranu poruku.

Sledeća stavka kartice tekst je „izbriši tekst za kodiranje / dekodiranje“. Njen kod samo poništava
vrijednost tekst polja unesenog teksta za kodiranje ili dekodiranje.

Sl. 13 – Prikaz koda dugmeta „izbriši tekst za kodiranje / dekodiranje“, kartice tekst.

Četvrta stavka je izbriši kodirani / dekodirani tekst. Kod unutar događaja poništava tekst polja u
kome stoji dekodirana poruka.

Sl. 14 – Prikaz koda dugmeta „izbriši kodirani / dekodirani tekst“, kartice tekst.

Kartica: Info

Pritiskom na karticu info prikazuje se informativni prozor koji prikazuje informacije o programu.
Ovaj kod je jasan sam po sebi.

//Kartica info
private void infoToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("Program pretvara tekstualne karaktere u morzeov kod i obrnuto (kodira ili
dekodira). Napisan je u svrhu odbrane završnog rada iz osnove programiranja \ni
programskih jezika na visokoj školi \"Primus\" u Gradiškoj. \n\nProgramer: Duško Bjelac
\nDatum: 17.01.2016", "Infirmacije o programu",MessageBoxButtons.OK);
}

16
Prikaz aplikacije u radu

Sl. 15 – Prikaz rada aplikacije (kodiranje tekstualne poruke u Morzeov kod)

17
Zaključak

U ovom seminarskom radu sam nastojao zaokružiti projektovanje čitavog informacionog sistema i
njegovu realizaciju.

Prvi dio rada se odnosi na projektovanje informacionog sistema koje obuhvata obavljanje
odgovarajuće analize, opis sistema, skupljanje zahtjeva za sistem, pronalaženje klasa, utvrđivanja
odgovornosti između klasa, način saradnje klasa, pravljenja modela koji opisuje sistem i razvijanje
prototipa korisničkog interfejsa. Projektovanje informacionog sistema je veoma bitno jer složeni
projekti sadrže velik broj klasa i lako se izgubiti u kodu te zaboraviti implementirati važnu djelove
sistema. Ako se zanemari projektovanje informacionog sistema ili se loše projektuje, često se
dolazi do mnogo ispravaka sistema koje mogu biti jako kompleksne i skupe, naročito ako se
primjete u završnoj fazi izrade aplikacije.

Drugi dio rada se odnosi na realizaciju koja obuhvata kreiranje klasa i pisanje koda za događaje. U
ovu svrhu koristim Microsoft Visual Studio C# programski jezik. Microsoft Visual C# je moćan,
ali jednostavan jezik namijenjen prije svega projektantima za razvoj aplikacija koje koriste radno
okruženje Microsoft.NET. On naslijeđuje mnoge od najboljih osobina jezika C++ i Microsoft
Visual Basic, ali ima manje nedoslijednosti i odstupanja nego ovi jezici, što dovodi do čistijeg i
logičnijeg jezika. C# se prvi put pojavio 2001 godine.

Treći dio ovog rada sadrži prikaz aplikacije u radu.

18
Popis korištenih skraćenica

UML - Unified Modeling Language

CRC - class-responsibility-collaboration

19
Pravni izvori i literature

• John Sharp: Microsoft Visual C# korak po korak, Beograd 2013

• Matt Weisfeld: Objektno orijentisani način mišljenja, Beograd 2003

• Wrifs-Brock, B. Wilkerson, L. Weiner: Desegning object-orijented software, Prentice-


Hall 1990

20

You might also like