Sunteți pe pagina 1din 275

Java

Programim n Gjuhn Java


Botimi i par



Gjergji Shaska
Electrical and Computer Engineering
Oakland University

















Mirserdht n kt botim t programimit n gjuhn Java. Un jam munduar tju
shrbej studentve, msuesve dhe t gjith t interesuarve t msojn si t
programojn n gjuhn Java. Ky tekst sht menduar t shrbej si pr fillestar
ashtu dhe pr nivele m t avancuara. Un jam munduar ta shkruaj kt libr n
mnyr sa m t qart dhe t thjesht. N kt libr jepen konceptet baz t
programimit n Java, e cila sht gjuha m e prdorshme n ditt tona. Gjuha
Java sht nj gjuh relativisht e re, e krijuar n vitin 1995 nga Sun
Microsystems. Kjo gjuh bazohet n C++, por afron nj modelim m t thjesht
t cilat ja lehtsojn punn prdoruesit. Nse doni t keni sukses me kt libr,
sugjerimi im sht t rishkruani do program q do t jepet n formn e
shembujve, ndryshoni pjes t veanta t tij dhe vreni output. Ky sugjerim sht
sidomos i rndsishm pr ata t cilt nuk kan eksperienc me programimin.
Prgjat ktij libri mbahet nj balanc ndrmjet programimeve grafike dhe
programimeve jografike.
N kt libr do t prdoren si BlueJ ashtu dhe Eclipsec. Un pasi prdora pr
disa vjet BlueJ kur fillova t prdor Eclipsec e gjeta at m t thjesht dhe me m
shum funksione. Un ju sugjeroj q t lexoni Appendix II pasi jepet mnyra e
instalimit t Eclipsec dhe hapat e para t krijimit t nj projekti n t.


Shnim: Java software sht nj software q ju mund dhe duhet ta instaloni nga
interneti. Prej Mait 2007 Sun Microsystems e ofron kt software falas.




Prmbajtja
*******************PJESA E PAR*******************
Kapitulli 1 HYRJE N JAVA PROGRAMING
1.1 Sistemi i Kompiuterit 10
1.2 Prbrsit e Hardwarit 13
1.3 Kompiuter Network dhe Internet 19
Kapitulli 2 OBJECT-ORIENTED PROGRAMMING
2.1 Problem Solving 24
2.2 Bazat e Object-Oriented Software 26
Kapitulli 3 KARAKTERISTIKAT E STRING
3.1 Print dhe Println 31
3.2 String Concatenation 33
Kapitulli 4 VARIABLES DHE ASSIGNMENT
4.1 Variables 38
4.2 Assignment Statement 39
4.3 Primitive Data Types 41
4.4 Data Conversation 42
4.5 Teknika t Konvertimit 43
Kapitulli 5 EXPRESSIONS DHE SCANNER CLASS
5.1 Expressions 47
5.2 Operatort Rrits dhe Zbrits 50
5.3 Klasat Scanner 51
Kapitulli 6 FJALIT E KUSHTZUARA
6.1 Fjalia if 56
6.2 Prdorimi i Fjalive n Bllok 62
6.3 Fjalit switch 68
Kapitulli 7 FJALIT LOOP
7.1 Fjalit while loop 73
7.2 Nested loops 79
7.3 Fjalia do while loop 83
7.4 For loop 87
Kapitulli 8 PRDORIMI I KLASAVE DHE OBJEKTEVE
8.1 Deklarimi import 95
8.2 Klasa Random 95
8.3 Klasa Math 98
8.4 Formatimi i output 101
8.5 Tipet Enumerated 103
Kapitulli 9 T SHKRUASH KODIN E KLASAVE
9.1 Anatomia e Klass 108
9.2 Encapsulation 113
Projekti 1 120
*******************PJESA E DYT*******************
Kapitulli 10 GRAPHICS DHE APPLETS
10.1 Graphics
130
10.2 Applets 138
Kapitulli 11 KOMPONENTT DHE KONTENIERT
11.1 Graphical User Interfaces GUI
145
11.2 Frames dhe Panels 145
11.3 Nested Panels 148
Kapitulli 12 OBJEKTET GRAFIKE
12.1 Prdorimi i Klasave t Ndara 153
12.2 Butonat
165
12.3 Fushat e Tekstit
169
Kapitulli 13 OBJEKTET GRAFIKE ME IF DHE FOR
13.1 Vizato me Fjalit e Kushtzuara if 175
13.2 Vizato me Fjalit Loop 179
Kapitulli 14 DIALOG BOXES, CHECK BOXES, RADIO BUTTONS
14.1 Dialog Boxes 185
14.2 Check Boxes 189
14.3 Radio Buttons 190
Kapitulli 15 IDENTIFIKIMI I KLASAVE DHE OBJEKTEVE
15.1 Identifikimi i Klasave dhe Objekteve 201
15.2 Variablat dhe Metoda Static 202
Kapitulli 16 MARRDHNIET NDRMJET KLASAVE
16.1 Dependency 209
16.2 Aggregation 217
Kapitulli 17 INTERFACES DHE ENUMERATED
17.1 Interfaces 226
17.2 Enumerated 232
Kapitulli 18 PRDORIMI I ARRAYS
18.1 Deklarimi dhe Prdorimi i Arrays
238
18.2 Objektet Arrays
245
Kapitulli 19 ARRAYS DY DIMENSIONALE
12.1 Arrays dy Dimensionale 260
12.2 Arrays Shumdimensionale 266
Projekti 2 269
Appendix I 280
Appendix II 282

Page 7 of 275




Kapitulli 1


HYRJE N PROGRAMIMIN N JAVA

Ky libr sht konceptuar n menyr t till, q t ndihmoj studentt n t
msuarin sa m t mir t t shkruarit t programeve n gjuhn Java. far
ne do t msojm n kt libr sht shum e rndsishme jo vetm n
gjuhn Java por n t kuptuarin e koncepteve t programimit. Q t harrish
t shkruash programe duhet t harrish t kuptosh disa ide baz t
programimit. Pr kt s pari ne duhet t kuptojm disa koncepte baz t
sistemit t kompiuterit. Hardwari dhe softwari bashkpunojn n nj
kompiuter pr t realizuar qllime t ndryshme. Ky kapitull pik s pari do
t diskutoj disa proese baz n nj sistem kompiuteri dhe pastaj do t
shpjegoj programimin duke u futur n programimin n Java dhe bazat e
object-oriented programming.

1.1 Sistemi i Kompiuterit
Ne po e fillojm shpjegimin e nj sistem kompiuteri me disa terminologji
thelbsore dhe duke treguar se si sistemi i kompiuterit ndrlidhet.
Nj sistem kompiuteri sht i ndrtuar nga hardware dhe software. Jan kto dy
komponent q bashkpunojne me njri-tjetrin q na lejojn t prdorim
kompiuterin. Hardware sht nj komponent fizik i sistemit t kompiuterit. Ata
prfshin chips, telat, keyboards, disks, kabllat, printers, monitors dhe shum
paisje t tjera si kto. Ideja sht q nse ne mund ta prekim fizikisht dhe sht
pjes e nj sistemi kompiuteri, ather ai sht hardware.
Por nj hardware nuk mund t kryej asnj funksion pa disa urdhra q tu tregoj
atyre far t bjn. Nj program sht nj seri urdhrash q hardwari duhet t
ndjeki njri pas tjetrit. Nj program sht ruajtur n memorien e kompiuterit n
Page 8 of 275

formn e nj numri binary q quhet machine instructions. S bashku hardwari dhe
softwari na japin mundsin t zgjidhim probleme t ndryshme nga m t
thjeshtt deri te m t komplikuarit.
N nj sistem kompiuteri prbrsit kryesor t hardwarit jan:
1. Central processing unit (CPU)
2. Input/Output (I/O)
3. Main memory
4. Secondary memory device
Central processing unit (CPU) zbaton t gjitha komandat n nj program.
Input/Output (I/O) si pr shembull keybord, mouse, or monitor na lejon ne si
prdorues t prdorim nj kompiuter. T gjitha programet dhe t dhnat jan
mbajtur n nj device t quajtur memory e cila ndahet n dy kategori: main
memory dhe second memory. Gjat kohs q CPU thrret nj program, main
memory thrret kt program nga hard disku dhe ky program qndron n main
memory pr aq koh sa ky program sht n prdorim. Secondary memory device
sht vendi ku ruhen softwaret. M i rndsishmi sht hard disku ku ruhen t
gjitha programet e nj kompiuteri. Floppy disk sht i ngjashm me hard diskun
vetm se ruan shum m pak informacione. Por floppy disk ka avantazhin se
mund t lvizet nga kompiuteri n kompiuter sipas nevojs.
Fig. 1. 1 tregon se si informacioni lviz prgjat komponentave kryesor n
hardware. Le ta ilustrojm kt me nj shembull. Supozojm se ne duam t
thrrasim nj program. Si tham dhe m lart ky program sht i ruajtur n hard
disk. Kur ne i krkojm kompiuterit t thrrasi kt program, nj kopje e ktij
programi sht sjell nga hard disku n main memory. N kt moment CPU
lexon urdhrat nga main memory dhe i zbaton ato njra pas tjetrs derisa vjen n
fund t programit. Gjat ktij proesi programi mund t paraqesi data edhe n
output si pr shembull n monitor. Ky proes sht shum i rndsishm n
mbarvajtjen e puns n nj kompiuter.
Software mund t klasifikohet n shum kategori por ne tani po prqndrohemi
vetm tek system programs and application programs. Operating systems or
OS sht disa programe t cilat menaxhojn nj kompiuter. Ai i lejon prdoruesit
t komunikoj me nj kompiuter dhe menaxhon at. Gjithashtu ai prcakton kur
programet jan t lejuara t thrriten, kur ato jan n main memory, dhe si
hardware komunikon. Kjo sht puna e operating systems; t bj punn e
Page 9 of 275

kompiuterit m t leht dhe t siguroj q kompiuteri sht duke punuar me
efienc.
Hardware
Hardware
Main
memory
CPU
Hard disk
Floppy disk
Keyboard
Monitor

Fig. 1. 1 Nj version i thjeshtuar i nj sistem kompiuteri.
Sot n prdorim jan disa operating systems por m t prdorshmit jan Windows
2000, Windows XP dhe Vista q jan versione t Microsoft. Disa versione t
Unix operating systems jan gjithashtu shum popullor, sidomos n kompiutera
shum t mdhenj. Linux sht nj version i Unix q sht nj open source q
nnkupton q shum njerz kan kontribuar pr t dhe kodi i tij afrohet pr kdo
falas. Kjo sht nj nga arsyet q Linux po bhet gjithmon dhe m shum nj
favorit i fort. Nj tjetr operating system is Mac OS q sht i prdorur nga
Apple kompiuters.
Nj aplikation sht nj term q prdoret jo vetm pr operating system por pr
do software. Application software jan programet t cilat e bjn kompiuterin m
t prdorshm pr prdoruesin. Database managers, Web browsers, lojrat dhe
shum t tjera mund t konsiderohen application programs.
Graphical user interface (GUI) sht nj prej sistemeve pr shumicn e operating
systems. Graphical user interface (GUI) na jep mundsin t krijojm paraqitje
grafike t ndryshme n ekran. Disa nga kto element jan.
1. Windowns, q prdoret t ndaj ekranin ne hapsira t ndryshme.
2. Icons, q jan imazhe t vogla q paraqesin burimet e kompiuterit, si p.sh.
nj file.
Page 10 of 275

3. Pull-down menus, q i jep mundsin prdoruesit t zgjedh nga nj list
me opsione.
4. Buttons, q mund t klikosh me nj mouse pr t treguar nj zgjedhje t
perdoruesit.
N disa pjes t veanta t ktij libri jan t krkuara disa njohuri baz si, digital
computers apo binary numbers. Ne po japim shkurtimisht iden e ktyre dy
koncepteve por nuk po futemi n detaje, pasi ato jan koncepte jasht qllimit
ton.
Gjenden dy teknika baz pr t ruajtur dhe menaxhuar t dhnat n nj kompiuter:
analog dhe digital. Analog sht nj informacion i cili sht i vazhdushm ose i
thn n fjal t tjera pr do koh (t) ne jemi n gjendje t prcaktojm
amplitudn. Digital sht ai proes i cili e copton informacionin n pjes. E
thn ndryshe gjendet nj numr i fundm time (t) pr t cilin ne mund t
prcaktojm amplitudn. Digital computers ruajn informacionin duke e coptuar
at n pjes dhe duke e paraqitur do pjes si nj numr. Por t gjitha
informacionet n nj kompiuter jan t ruajtura dhe menaxhuara n binary value
dhe jo n decimal value. Binary numbers kan vetm dy digit t cilat jan 0 dhe 1.
Prgjat ktij libri ne do t dizenjojm dhe do t shkruajm shum programe q
do t kryejn llogaritje, do t marrin vendime, dhe do t kontrollojn grafikt. Pr
t realizuar kto qllime prgjat ktij libri ne do t prdorim gjuhn e
programimit n Java.

1.2 Prbrsit e Hardwarit
Computer hardware sht pjesa fizike e nj kompiuteri, ku prfshihen dhe qarqet
digitale. N Fig. 1. 2 sht paraqitur nj figur e pjesve kryesore n nj
kompiuter. Le t analizojm prbrsit e nj sistemi kompiuteri n detaje.
1.2.1 Central Processing Unit (CPU)
Computer architecture prshkruan se si prbrsit e kompiuterit jan vendosur s
bashku. N Error! Reference source not found.2 sht paraqitur nj model i nj
kompiuteri. Duke pasur gjithashtu parasysh Fig. 1. 1 (ne sugjerojm ta rishikoni
kt figur) dy prbrsit m kryesor n nj kompiuter jan CPU dhe main
memory. Si ne e shpjeguam dhe m par, main memory ruan programet dhe t
dhnat q jan n prdorim dhe CPU i zbaton urdhrat e programit njri pas tjetrit
deri sa shkon n fund t tij.
Page 11 of 275

N nj kompiuter t gjitha lvizjet jan te komanduara nga CPU i njojtur ndryshe
si truri i nj kompiuteri. CPU q quhet gjithashtu processor ndahet n dy pjes t
mdha: datapath dhe control unit Fig. 1. 3.

Fig. 1. 2 Modeli i arkitekturs n nj kompiuter.
Datapath konsiston n register file dhe n arithmetic logic unit (ALU). Register
file konsiston n nj ose m shum registra, t cilat kan nj pozicion n CPU.
Register file e bn programin t punoj me m shum efikasitet dhe numri i
register file ndryshon nga kompiuteri te kompiuteri. T gjitha veprimet
arithmetike dhe vlersimet kryhen n ALU. Kjo (ALU) merr t dhnat nga main
memori and register file, kryen llogaritjet dhe n se sht e nevojshme shkruan
rezultatin mbrapa n main memori ose registers.
Control Unit
Datapath
Arithmetic
Logic Unit
Registers
Processor
CommonBus (address, data, & control)
Memory
Program
Storage
Data
Storage
Output
Units
Input
Units
Figure 1.1 Computer Organization

Fig. 1. 3 Organizimi i nj Kompiuteri.
Control unit prmban urdhrat logjike pr hardware. Ai monitoron efikasitetin e
ktyre urdhrave dhe vepron si arbitr n shum drejtime pr burimet e CPU.
Program couter (PC) sht nj regjistr q ka control unit, e cila kontrollon
Page 12 of 275

adresn n memorie pr at q do t ndodh m von. N se do ta prkufizonim n
nj mnyr m t thjesht do t thoshim se PC shikon se far do t ndodh n
hapin tjetr.
T gjitha devices n nj kompiuter jan quajtur peripherals, t cilat operojn n
ant e fundit t nj sistemi. Prdorusi nuk mund t lidhet direkt me CPU opo main
memory. Megjithse ne tham q CPU dhe main memory jan dy komponentt
m kryesor ato nuk mund t prdoren pa peripheral devices. Aktiviteti i ktyre
devices kontrollohet nga controllers. Pr m tepr controllers shpesh fokusohen
n transmetimin e informacionit, duke lehtsuar punn e CPU q t fokusohet n
t tjera aktivitete.
1.2.2 Input/output Devices
Input jan data t ardhura n nj sistem dhe output jan data q drgohen nga
sistemi. Input devices m t prdorshme jan keyboard and mouse. Disa t tjera
m pak t prdorshme jan: microfonat t cilt prdoren nga sisteme q
interpretojn komanda zri t thjeshta, skanerat q konvertojn tekstin,
fotografit, apo grafikt n formn e lexushme nga makina. Pr output devices m
t prdorshme prmendim monitorat dhe printerat. Disa devices i ofrojn t dyja
mundsit input dhe output si p.sh. modems or network cards. Gjithashtu CPU
dhe main memory mund t konsiderohen si I/O devices pasi ato transferojn data
n t dy drejtimet brenda dhe jasht.
Input/output dhe secondary memory devices jan konsideruar peripherials sepse
ato operojn n ant e sistemit. Secondary memory dhe data transfer devices jan
konsideruar gjithashtu si I/O devices sepse ato prezantojn nj burim informacioni
si input dhe drgojn informacionin si output.
1.2.3 Main memory and Second Memory
Memory sht vendi ku software dhe data ruhen. Nj kompiuter mund t
prmbaj semiconductor, magnetic dhe optical memory. Ne do t diskutojm
vetm semiconductor memory t cilat mund t klasifikohen n dy tipe: random
acces memory (RAM) dhe read-only memory (ROM). RAM e cila sht m e
njojtur pr ne me kt emr n t vrtet sht main memory. Main memory i
referohet nj memorie fizike q sht brenda n kompiuter, i cili mund t
manipuloj data q ndodhen n main memory. Madhsia e main memory sht
shum e rndsishme sepse ajo prcakton sa programe mund t punojn n t
njjtn koh dhe sa data t lexushme mund t jen t gatshme n nj program.
Secili pozicion n memorie ka nj dhe vetm nj binary numr q quhet address.
Kjo ide mund t konceptohet e njjt me adresat q ne kemi n shtpit tona, ku
secila shtpi ka nj dhe vetm nj adres. N kt mnyr bhet e mundur q
Page 13 of 275

postieri t identifikoj se ku duhet t adresoj do informacion postar. Mbajeni n
mendje kt ide, pasi informcioni n kompiuter lviz n mnyr t ngjashme dhe
n do moment duke ju referuar adresave se ku duhet t ruaj informacionin.
Kur nj data ruhet n nj memory location ajo rishkruan dhe shkatrron do
informacion t mparshm. N shum kompiutera do pozicion n memorie ka
tet bits ose nj byte informacion. Nj koncept i rndsishm rreth objekteve q
ruhen n memorie sht jo vetm se ato mund t interpretohen si data, binary
numerik data etj por gjithashtu ato mund t interpretohen si udhzus n vetvete
n nj mnyr uniforme. Kjo ide sht trajtuar nga John von Neuman architecture
q nga 1950. Neuman ishte i pari q dha konceptin e ruajtjes s programeve dhe t
informacioneve s bashku n main memory.
Ideja baz se si operon nj kompiuter sht fetch-decode-execute, e cila sht
koha gjat s cils nj kompiuter lexon dhe operon komandat nga memoria.
Komandat s pari duhet t jen fetched nga main memory dhe pastaj t
ekzekutohen nga CPU. Pik s pari CPU paraqet vlern e program counter (PC)
n address bus. Pas ksaj CPU fetches komandat nga main memory n memory
data register (MDR) dhe kt e bn nprmjet data bus. Kjo vler q ndodhet
MDR tani vendoset n current instruction register (ICR) nj qark q mban
komandat kshtu q ato mund t kodohen dhe t ekzekutohen. Ideja e fetch-
decode-execute sht thelbsore se si nj kompiuter operon.
do informcion ka dy komponent t cilt jan adresa dhe prmbajtja. CPU
komunikon me memorien pik s pari duke identifikuar pozicionin e adress dhe
pastaj e kalon kt adres n address bus. Kjo ide sht e ngjashme me postierin e
posts i cili q t shprndaj nj letr m par ka nevoj pr adresn se ku do ta
oj kt letr. Kjo ide e transferimit t data nprmjet memory dhe CPU duke
prdorur data bus sht ilustruar n Fig. 1. 4.
CPU
Address bus l ines
Dat a bus li nes
Memory
Figure 1.6 Transferring dat a between CPU and memory

Fig. 1. 4 Transferimi i data ndrmjet CPU dhe memory
Page 14 of 275

Madhsia e memories matet n bytes , nj byte prmban 8 bits. Nj madhsi 4-bit
quhet nibble, nj 16-bit quhet a word. Si e kemi prmendur dhe m lart
kompiuteri sht nj paisje q prdor numra binary pra vetm 0 dhe 1 kshtu q t
gjitha adresat e ruajtura do t jen n fuqi t dyt. Duke qn se kta numra jan
shum t mdhenj pr t thjeshtur madhsin e matjes s memories sht prdorur
njsia kilobyte (kB), e cila sht e dhn nga formula:
1024 2
10
= = k
Nj njsi tjetr e prdorshme sht megabyte (MB), q jepet nga formula:
1048576 1024 1024 2
20 2
= = = = k M
N Fig.1.5 paraqiten njsit n binary t cilat jan m leht t mbahen mend duke
i rrumbullakosur vlerat. Pr shembull kilobyte sht m leht ta rrumullakosim n
1000 byte, ose megabyte n 100000 byte. Shum kompiutera personal kan 512
megabytes main memory ose RAM. Nj main memory e madhe lejon programe t
mdhaja n prdorim apo shum programe n prdorim. Random access Memory
(RAM) i lejon procesorit t lexoj dhe t shkruaj n do pozicion t memories n
chip. RAM sht volatile q do t thot q nse korenti do t shkputet ather
informacioni q ndodhet n t do t humbas. Prandaj sht e rekomanduar q
gjat puns ne ta ruajm shpesh her punn q ne jemi duke br n mnyr q
informacioni t ruhet n secondary device si sht hard disku. Secondary
memory device jan nonvolatile q do t thot nse korrenti shkputet
informacioni ruhet n t. M t prdorshmet secondary device q ruajn data jan
hard disku dhe flopy disk.
Njesia Simboli Numri I bytes
kilobyte KB 2^0 = 1

Megabyte MB 2^10 = 1024

gigabyte GB 2^20 = 048576
terabyte TB
2^40 =
1099511627776
Fig. 1. 5 Njsit n binary.

1.3 Kompiuter Network dhe Internet
Nj network sht dy ose m shum kompiutera t lidhur s bashku t cilt mund
t shkmbejn informacion me njri-tjetrin. Duke arritur kt lloj lidhje
nprmjet shum kompiuterave ne rrisim efikasitetin e shkmbimit t
Page 15 of 275

informacionit. Nj shembull i till sht nj printer i lidhur me shum kompiutera
n nj laborator i cili u krijon mundsin t gjith studentve t prdorin vetm
nj printer.
Nj Internet sht nj lidhje kompiuteri q lidh milliona kompiutera n gjith
botn. Q t kuptojm m mir iden e internetit referohuni Fig. 1. 6 ku ne po
japim disa pjes t internetit. N gjuhn e internetit t gjitha pjest si TVs,
portable komputerat, cell phones, Web, automobilat etj quhen host ose end
systems.

Fig. 1. 6 Disa pjes t internetit.
End systems jan lidhur s bashku nprmjet nj networku lidhjesh
(communication links) dhe packet switches. Gjenden disa tipa communication
links t cilat jan t prodhuara nga materiale t ndryshme si: kabllot koaksial, fijet
e bakrit, fibrat optike etj. Secila prej tyre mund t transferoj data me shpejtsi t
ndryshme e cila matet n bits/second. Kur nj end system do t drgoj data n
nj tjetr end system, end system q drgon data i formaton ato n formn e
segmenteve dhe u vendos secilit nga nj adres t quajtur header. N kompiuter
network kto segmente jan quajtur packets. Pas krijimit t ktyre packets ato
jan hedhur n network pr t shkuar n destinacion. Gjenden shtat tipe layer
internet t cilat jan disi m t vjetra pr tu prdorur, por akoma t prdorshme
dhe pes layer internet t cilat jan m t prdorshme dhe ne po i prshkruajm
m posht. Vini re mnyrn se si ato jan paraqitur nga lart posht, pra duke
filluar nga numri pes tek numri nj.
5. Application layer: DHCP DNS FTP Gopher HTTP IMAP4 IRC
NNTP XMPP POP3 RTP SIP SMTP SNMP SSH TELNET
RPC RTCP RTSP TLS (and SSL) SDP SOAP GTP STUN
NTP
4. Transport layer TCP: UDP DCCP SCTP RSVP ECN
Page 16 of 275

3. Network/internet layer: IP (IPv4 IPv6) OSPF IS-IS BGP IPsec
ARP RARP RIP ICMP ICMPv6 IGMP
2. Data link layer 802.11 (WLAN): 802.16 Wi-Fi WiMAX ATM
DTM Token ring Ethernet FDDI Frame Relay GPRS EVDO
HSPA HDLC PPP PPTP L2TP ISDN ARCnet LLTD
1. Physical layer Ethernet physical layer: RS-232 SONET/SDH G.709
Optical fiber Coaxial cable Twisted pair

Q t kuptohet m mir ideja e packet e cila sht shum e rndsishme ne po e
ilustrojm me nj shembull t thjesht nga jeta e prditshme. Imagjinoni nj
fabrik e cila do t lviz nga nj vend n nj tjetr. Pik s pari puntort fillojn
t montojn makinerit dhe ti paketojn ato me kujdes duke u vendosur dhe nga
nj mbishkrim do paketimi pr ti mbajtur mend. Kjo korespondon me segmentet
q ne krijuam dhe formuam packet. Pas ksaj puntort vazhdojn duke i
ngarkuar ato npr makina q ti zhvendosin n fabrikn e re. Kjo korespondon me
network n computer network. Kur materialet mbrrijn n fabrikn e re puntort
e ksaj fabrike shikojn mbishkrimet dhe marrin vendimet pr ti montuar
makinerit prsri. E njjta gj ndodh dhe me packet, pasi ato arrijn n
destinacion marrsi merr vendimet duke u bazuar n header q ato kan.
Le t kthehemi prsri n diskutimin ton se si host komunikon me njri-tjetrin.
do host ka nj dhe vetm nj IP adres ka dhe i dallon nga njri-tjetri. Si pr
shembull do kompiuter q ne prdorim ka adresn e tij, nga dhe dallohet se me
cilin jemi duke komunikuar. Nj Internet adres sht pr shembull
gjergji.univlora.edu.al n t ciln pjesa e par e adress s internetit sht adresa
lokale e cila tregon prdorusin n universitet dhe pjesa tjetr sht domain pr
networkun e kompiuterave t Universitetit t Vlors.

Fig. 1. 4 Modeli i nj Networku.
Page 17 of 275

do router ka vetm nj lidhje n internet si dhe ju e shikoni nga Fig. 1. 4. Nyjet
A, B, C, D, E dhe F paraqesin routers ndrsa lidhjet midis tyre paraqesin physical
link n network. do routers mund t komunikoj me cilindo routr n internet
q do t thot q ai ka mundsi t zgjedhi rrugn me koston m t ult. Mos u
keqkuptoni ktu me rrugn m t shkurtr, pasi koston e prcakton routers dhe jo
lidhjet ndrmjet tyre. Pr shembull kostua m e ult pr informacionin pr tu
transferuar nga A (burimi) n C (destinacioni) sht ADEC.




















Page 18 of 275

USHTRIME DHE PROBLEMA

1.1 Prshkruaj komponentt e hardwarit t kompiuterit tuaj ose t nj kompiuteri
n lab, prfshi tipin dhe shpejtsin e processorit, kapacitetin n main dhe
second memory dhe tipet e I/O.
1.2 Shpjego ndryshimin ndrmjet random access memory (RAM) dhe read-only
memory (ROM).
1.3 Nse nj fotografi sht br prej 128 ngjyrave, sa bits jan t nevojshm pr
t ruajtur seciln pixel t fotografis?









Page 19 of 275




Kapitulli 2

OBJECT-ORIENTED PROGRAMMING

Si shkruhet nj program kompiuteri? Nse ju jeni nj fillestar, ju shkruani
kodin, startoni programin dhe pastaj mundoheni t rregulloni gabimet. Pr
programet e vegjl kjo teknik mund t funksionoj, por pr programet t
cilt prdoren n industri nevoiten shum hapa t tjer. Dy jan metodat e
prdorura n programim: procedural programming dhe object-oriented
programming. Procedural sht nj version i vjetr i gjuhve t
programimit kshtu q ne do t fokusohemi vetm tek object-orientit
programming. Ashtu si dhe emri e tregon Java sht nj gjuh me nj
objektiv t orientuar, e cila do t thot q objejkti sht thelbsor n nj
gjuh Java. Ne do t fokusohemi n zhvillimin e programeve duke
prcaktuar objekte q ndrlidhen me njri-tjetrin.


2.1 Problem Solving
Paralelisht me gjuht q quhen high-level language si C++ apo Java, u zhvillua
dhe ideja e object-oriented software. Por vitet kur object oriented language arriti
vrtet nj popullaritet t gjer ishin vitet 1980. Sot kjo gjuh sht shum e
prdorshme n shum deg t industris. Duke ju referuar gjithmon ides se t
shkruarit e nj programi sht q ne t lehtsojm punn pr t zgjidhur nj
problem t caktuar, object oriented programming bn pikrisht kt, zgjith nj
problem. Kur ne skicojm zgjidhjen e nj problemi t caktuar ne prdorim fjal
nga jeta e prditshme pr t shprehur do qllim, t cilat n gjuhn e softwarit
quhen klasa. Pr t ilustruar kt ide nj shembull sht nj aplikim regjistrimi i
nj studenti n nj universitet, n t cilin ne do t zgjedhim studentt dhe notat
nga gjimnazi si klasa t mundshme. Pr tu theksuar sht se dikush tjetr mund
t krijoj t tjera klasa dhe gjithashtu merr zgjidhjet e krkuara.

Page 20 of 275

Le t diskutojm iden e problem solving duke u drejtuar n disa karakteristika t
object-oriented q ndihmojn n zgjidhjen e problemave. Fillimisht kur ne duam
t zgjidhim nj problem t caktuar, ne duhet t mundohemi ti grupojm idet n
dy grupe: kush jan t dhnat dhe si t realizojm zgjdhjet. Duke mbajtur
parasysh kto dy grupe n prgjithsi problem solving konsiston n disa etapa:
t kuptosh problemin
t analizosh krkesat
t skicosh zgjidhjet
t marrsh n analiz zgjidhje t tjera
t shkruash programin
ta testosh
t rregullosh gabimet nse ka
Gjat zgjidhjes s nj problemi kto hapa duhen mbajtur mir parasysh dhe t
tregohet shum kujdes n seciln prej tyre, ndryshe zgjidhjet q do t marrim
mund t mos jen t krkuarat. Le tu referohemi secils prej tyre m n detaje.
Hapi i par sht t kuptuarit e problemit n drejtimin e duhur. Kjo do t thot q
sht jashtzakonisht e rndsishme t kupojm fillimisht se kush sht qllimi i
problemit t dhn, ndryshe ne do t marrim rezultate t gabuara. E prsris q
kjo sht shum e rndsishme pasi zgjidhja e nj problemi duke shkruar nj
program, shum her sht e ndryshme nga zgjidhja e nj problemi si ju mund t
jeni msuar deri tani, si n matematik, fizik apo shkenca t tjera. Kjo ka lidhje
dhe me faktin q sht e pamundur t shkruash nj program nse nuk i kupton
gjith etapat se ku duhet t kalohet. Nse do ta thoshim me pak fjal elsi i
skicimit t nj zgjidhje problemi sht ta ndash problemin n pjes. Zgjidhja e
problemit pr seciln pjes dhe integrimi i t gjithave s bashku na jep qllimin
ton final, at t t zgjidhurit t problemit ton. Por nuk sht e thn q ne t
arrijm t gjitha qllimet q n skicimin e par, ne mund t hasim n shum
probleme gjat rrugs dhe mund t shtojm apo t heqim sipas nevojs pjes t
ndryshme t projektit t par. Sa m par ti hasim kto probleme aq m t leht do
e kemi ti fiksojm ato. Fig. 2. 1 shpjegon pikrisht far ne tham m lart.
T shkrush programin do t thot t implementosh at skicim q ne bm pr
zgjidhjen e atij problemi. Shpesh t shkruarit e nj programi sht menduar si t
shkruarit e nj kodi. Hapi i fundit n zgjidhjen e problemit sht tesimi i
zgjidhjeve pr t gjetur ndonj gabim nse ka dhe rregullimi i tyre. Por ky lloj
testimi nuk do t thot se nuk ekzistojn akoma proleme me programin ton.
Prgjat ktij libri ne do t msojm shum teknika programimi duke u futur n
detaje por gjithmon ne duhet t mbajm mend qllimin pr t cilin ne po
shkruajm nj program; zgjidhjen e nj problemi.

Page 21 of 275


Fig. 2. 1 Etapat pr realizimin e nj softwari.

2.2 Bazat e Object-Oriented Software
Konceptet baz t object-oriented programming t cilat ne do i shpjegojm
kapitull pas kapitulli jan:
Object
Attribute
Method
Class
Encapsulation
Inheritance
Polymorphism
Object sht nj element thelbsor n nj program i cili shpesh sht nj objekt
nga jeta jon e prditshme. do object ka nj state dhe nj behavior. Me state
ne kuptojm karakteristikat thelbsore q prcaktojn nj objekt si n shembullin
e nj studenti n Univesitetin e Vlors t dhn m lart, mesatarja e notave sht
pjes e state t studentit. Behaviors jan aktivitet e shoqruara me at objekt si
pr shembull duke prdorur t njjtin shembull behaviors jan adresa apo depozita
n llogarin e ktij studenti.
Attributes jan vlerat q ne ruajm n object, q mund ti paraqesim si data t
para ose objekte t tjera. Si pr shembull objekti n llogarin bankare t studentit

Page 22 of 275

mund t ruhet n decimal, n floting apo mnyra t tjera. Po mund t ket dhe
attribute t tjera si sht emri i studentit.
Nj method sht nj grup fjalish t cils i sht dhn nj emr. Kur nj
method ekzekutohet fjalit e saj ekzekutohen njra pas tjetrs. Pr t gjetur
mesataren e studentit n shembullin e msiprm ne mund t krijojm nj method
q t llogaris kt mesatare bazuar n notat e studentit.
Nj class sht modeli pr t ciln nj objekt sht krijuar. Supozojm se
duam t ndrtojm nj makin. Pr kt ne duhet t ndrtojm do pjes t saj si;
kabinn, timonin, sedilet, rrotat etj. Pasi ne ndrtojm do pjes t saj shum
makina mund t ndrtohen bazuar n t njjtat pjes. Kto makina mund prdoren
nga njerz t ndryshm n vende t ndryshme por ato ruajn t njjtat
karakteristika si kabinn, timonin, sedilet, rrotat etj. Ne themi se kemi ndrtuar nj
klas t ktij tipi makine. Nse ne duam t ndrtojm nje tip t ndryshm nga ky
tip makine ne duhet t ndryshojm t paktn disa nga ato objekte q ne prdorm
m lart si kabinn, timonin, sedilet, rrotat etj. Nse do t shkonim prsri mbrapa
n shembullin ton pr studentin n Universitetin e Vlors do t thoshim se ne
mund ta paraqesim si nj klas t quajtur, Regjistrimi, t gjith proesin q
studenti mund t zgjedhi klasat dhe t regjistrohet.
Encapsulation kupton mnyrn e mbrojtes q ne zgjedhim pr secilin objekt.
Kjo do t thot q ne duhet t zgjedhim mnyrn e mbrojtes pr do objekt n
mnyr t till q prdoruesi t jet n gjendje t ndryshoj apo jo sipas rastit
objektin q ne kemi prdorur n nj klas. Tre jan mnyrat e deklarimit t nj
objekti t cilat jan: private, public, dhe protected. Pr seciln prej tyre ne do t
flasim kur t flasim pr encapsulation.
Klasat e krijuara nga klasa t tjera ekzistuse jan quajtur inheritance. Nse
do ta prkufizonim n nj kuptim m t gjer do t thoshim se inheritance sht
nj form e riprdorimit t programeve, duke u bazuar n ngjashmrin ndrmjet
tyre. Nj klas mund t prdoret pr t drejtuar disa klasa t tjera. Klasa e par q
drejton disa klasa t tjera quhet parent classes (klasa prind) dhe klasat q jan t
drejtuara nga kjo klas jan t quajtura children classes (klasa fmi). Kjo krijon
nj lloj lidhje ndrmjet objekteve t cilat mund t prdoren dhe nga klasa t tjera,
nese ne i deklarojm public.
Polymorphism sht ideja q ne mund tu referohemi shum tipe t objekteve n
mnyrn e dshiruar. Kjo na jep ne mundsin t krijojm zgjidhje shum m t
kollajta se sa duke ndjekur rregullat normale, kur kemi parasysh se jemi duke
prdorur shum objekte.

Page 23 of 275

N Fig. 2. 2 po paraqesim nj aspekt t object-oriented software t shembullit t
studentit q ne kemi prdorur prgjat ktij kapitulli. Ne nuk presim q ju ti
kuptoni kto ide n detaje tani, por n shumicn e ktij libri ne do t mundohemi
ti shpjegojm ato.

Fig. 2. 2 Disa aspekte t object-oriented software















Page 24 of 275

USHTRIME DHE PROBLEMA

2.1 Prse sht i nevojshm dhe kush jan disa nga programet q object-oriented
programing prdoret.
2.2 Kush jan shtat konceptet baz t object-oriented programing dhe
shkurtimisht prshkruaj seciln prej tyre.


Page 25 of 275




Kapitulli 3


KARAKTERISTIKAT E STRING

Nj karakter string sht nj objekt n Java, i cili prcaktohet nga class
String, i cili n programim sht shum i rndsishm. Duke u nisur nga
kjo, n Java string vendoset ndrmjet dy thonjzave. Nj string mund t
ket karaktere numerik, shenja piksimi apo dhe karaktere special.



3.1 Print dhe Println
Prpara se t shpjegojm komandat print dhe println, t cilat prej ktij momenti do
ti prdorim pothuajse kudo, le t japim disa shembuj strings.
Vlora sht qyteti m i bukur n bot.
My ID: G00033161

N fjalin e par ne po prdorim nj fjali t plot si nj string, e cila ka 38
karaktere. Kini parasysh si dhe tham m lart q dhe hapsira apo do lloj
karakteri numrohet si nj karakter. N fjalin e dyt kemi nj string me 16
karaktere, ku kemi dhe numra. N fjalin e tret kemi nj string me nj karakter, e
cila sht nj hapsire boshe.
Le t prdorim tani kto koncepte t string pr t printuar fjalin e par.
System.out.println ( Vlora sht qyteti m i bukur n bot. );

Page 26 of 275

Method printl sht nj shrbim q sht i ofruar nga System.out. object. N do
koh q ne e prdorim at, object do t printoj n ekran karakteret e prbajtes s
string. do data q ne drgojm n nj metod quhet parametr. N rastin ton
println metod merr vetm nj parametr, karakteret e string pr t printuar.
Metoda print sht nj tjetr System.out object. Metoda print sht shum e
ngjajshme me metodn println prve se metoda println printon informacionin e
krkuar dhe shkon n fillim t rreshtit tjetr, ndrsa metoda print vazhdon n t
njjtin rresht.
Le t analizojm far tham m lart me nj shembull n programin e treguar n
Programi 3. 1 i cili prfshin t dyja komandat print dhe println. Vini re se si
komanda print i printon n t njjtin rresht Vlora, Fieri dhe Tirana dhe vini re se si
komanda println printon n outputin e par, e cila sht Vlora. Pastaj shkon n
rreshtin e ri.
Si e kemi prsritur dhe m par elsi i suksesit jo vetm n Java programming
por dhe n do program tjetr sht t praktikosh do shembull. Nse ju nuk keni
eksperienc me programimin shkruaj do shembull q ne do t japim sado i
thjesht t duket ai dhe ndrysho pjes t ndryshme t programit dhe analizo
output.
Programi 3. 1
//********************************************************************
// Qytetet.java Author: Gjergji Shaska
//
// Ndryshimi ndermjet print dhe println.
//********************************************************************

public class Qytetet
{
public static void main (String[] args)
{
System.out.print ("Vlora... ");
System.out.print ("Fieri... ");

Page 27 of 275

System.out.print ("Tirana... ");
System.out.println ("Vlora");
// pas kesaj fjalie printon ne rreshtin tjeter
System.out.println ("Universiteti i Vlores");
}
}
Output----------------------------------------------------------------------------------------
Vlora... Fieri... Tirana... Vlora
Universiteti i Vlores
3.2 String Concatenation
Kur ne duam t printojm nj string q sht shum e gjat pr nj rresht, pr ta shkruar n t
njjtin rresht prdorim string concatenation. Metoda q ne prdorim pr kt sht shenja (+).
Vreni se si fjalia n vazhdim sht e printuar n t njjtin rresht.
System.out.println ( Vlora sht qyteti m i bukur n bot,
+ sht qyteti ku u themelua shteti shqiptar. );
Vreni ndryshimin me fjalin n vazhdim e cila do t japi error nse ne do t
provojm ta compile.
System.out.println ( Vlora sht qyteti m i bukur n bot,
+ sht qyteti ku u themelua shteti shqiptar. );
Programi 3. 2
//****************************************************************
****
// Qytetet.java Author: Gjergji Shaska
//
// Shembull per string concatenation.
//****************************************************************
****


Page 28 of 275

public class Qytetet
{
//-----------------------------------------------------------------
// Printon dy rreshtat ne te njejtin rresht.
//-----------------------------------------------------------------
public static void main (String[] args)
{
System.out.println ("Vlora eshte qyteti me i bukur ne bote, "
+ "eshte qyteti ku u krijua shteti shqiptar.");

// Printon nje fjali bosh.
System.out.println ();

// Numrat konvertohen automatikisht
System.out.println ("Vlora eshte qyteti ku ne " + 1912 + " lindi "
+ "shteti shqiptar.");

// Mbledh dy numra
System.out.println ("Mblidh 10 me 15: " + (10 + 15));
}
}
Output----------------------------------------------------------------------------------------
Vlora eshte qyteti me i bukur ne bote, eshte qyteti ku u krijua shteti shqiptar.

Vlora eshte qyteti ku ne 1912 lindi shteti shqiptar.

Page 29 of 275

Mblidh 10 me 15: 25
N Programi 3. 2 gjenden disa fjali println. Si e shpjeguam dhe m lart komanda
e par println printon n t njjtin rresht. N komandn e dyt printohet nj rresht
bosh, pra do t krijohet nj ndarje ndrmjet fjalis s par dhe t dyt. N
komandn e tret printohet nj fjali e cila prmban numra t cilt nuk jan brenda
thonjzave, pra nuk jan n string. Pra nj vler numerike mund automatikisht t
konvertohet n nj string dhe t dyja string bashkohen s bashku. Vreni tani
ndryshimin me fjalin e katrt ku dy numra 10 dhe 15 jan mbledhur s bashku,
pasi ata jan futur n kllapa. Tregoni kujdes n prdorimin e concatenates dhe
veprimin aritmetik t mbledhjes s dy numrave.
Dy thonjzat () prdoret n Java pr t treguar fillimin dhe fundin e nj string.
Por jan disa teknika n Java pr t printuar fjalit t cilat jan prmbledhur n
Fig. 3. 1. N Programi 3. 3 ne po japim nj shembull t fjals Flamurtari duke
prdorur disa prej ktyre teknikave.

Escape
Sequence Kuptimi
\t tab
\" double quote
\' single quote
\n rresht i ri
\r carriage return
\b backspace
\\ backslash
Fig. 3. 1 Java escape sequences
Programi 3. 3
//********************************************************************
// Flamurtari.java Author: Gjergji Shaska
//
// Perdorimi i escape sequences.
//********************************************************************
public class Flamurtari
{
//-----------------------------------------------------------------

Page 30 of 275

// Nryshimi i te printuarit te fjales Flamurtari.
//-----------------------------------------------------------------
public static void main (String[] args)
{
System.out.println ("Flamurtari,\n\tFlamurtari,\n" +
"Flamurtari 1\tBarcelona 1,\n\tVlora eshte e gjitha ne feste.");
}
}
Output----------------------------------------------------------------------------------------
Flamurtari,
Flamurtari,
Flamurtari 1 Barcelona 1,
Vlora eshte e gjitha ne feste.















Page 31 of 275

USHTRIME DHE PROBLEMA

3.1 far outputi do t kemi nga kodi n vazhdim?
System.out.println (Ismail Qemali shpalli pavarsine e Shqiprise);
System.out.print ( n 1912.);
3.2 Shkruani nj kod ku t tregoet emri juaj n nj rresht t vetm.
3.3 Kush do t jet output pr kodin n vazhdim?
System.out.print ();
3.4 Gjeni se ku qndron gabimi me kodin n vazhdim dhe rregullojeni at.
System.out.println (Ismail Qemali shpalli pavarsine e Shqiprise
n 1912
















Page 32 of 275



Kapitulli 4


VARIABLES DHE ASSIGNMENT

Shumica e informacionit q ne japim n nj program jepet nprmjet
variables. do programus ka mnyrat e veta t t konceptuarit dhe t
paraqitjes s variablave, megjithat disa rregulla jan t prcaktuara nga
Java language. Ne jemi t detyruar ti zbatojm me prpikmri kto rregulla
n t kundrt compile do t na japi error.


4.1 Variables
Nj variabl sht emri n t ciln nj data ruhet n memorie dhe tregon emrin t
cilit i referohemi. Emrat referohen n Java pr tu drejtuar objekteve t ndryshme
si:
Emri i package q ju referuam m sipr System
Class name si String
Emrat e klasave, Flamurtari n shembullin e diskutuar n kapitullin 3.
Emrat e metodave q ne prdorim gjat programimit.
Emrat mund t jen t thjesht apo emri i ndjekur nga nj pik dhe nj
identifikus si: System.out.println
Studioni Program 4. 1 n t cilin ne po japim nj shembull se si variablat duhet t
deklarohen para se t prdoren. Ne po deklarojm variabln lojtart si (int) dhe
m pas kjo variabl sht prdorur n System.out.println pr t dhn numrin e
lojtarve i cili sht 11. Provoni t ndryshoni variabln lojtart dhe vreni se si
ndryshon output. Nj deklarim variable mund t ket disa variabla t deklaruara
n t njjtin rresht. Gjithashtu kini parasysh far ne kemi shpjeguar m sipr ku
variabla lojtart automatikisht konvertohet n string dhe bashkohet me t.

Page 33 of 275

Program 4. 1
// Lojtaret.java Author: Gjergji Shaska
//
// Shembull per declaration, initialization, dhe perdorimin e
// integer variable.
//****************************************************************
****
public class Lojtaret
{
//-----------------------------------------------------------------
// Printon numrin e lojtareve ne nje skuader futbolli.
//-----------------------------------------------------------------
public static void main (String[] args)
{
int lojtaret = 11;
System.out.println ("Nje skuader futbolli ka " + lojtaret + " lojtare.");
}
}
Output----------------------------------------------------------------------------------------
Nje skuader futbolli ka 11 lojtare.

4.2 Assignment Statement
N Program 4. 2 shikoni me kujdes se si programi ndryshon vlern e variabls.
Deklarimi i par i variabls student sht i barabart me 22, pastaj i referohemi
prsri variabls student duke e deklaruar 27 dhe hern e tret vlera e variabls
student sht 30. Pr ta kuptuar kt ne po e printojm variabln student pas do
deklarimi dhe vlera e variabls student n fund t prdorimit do jet 30. Kur secila
prej fjalive ekzekutohet, shprehja n ann e djatht t barazimit (=) sht
vlersuar dhe ruajtur n pozicionin e memories q tregohet nga variabla. Nj
variabl mund t ruaj vetm nj vler n deklarimin e saj, nj deklarim i ri

Page 34 of 275

rishkruan nj vler t re n t. Kjo sht quajtur assignment statement sepse i jep
nj vler t re variabls do her q i referohet. Tregoni kujdes pasi kur ne i
referohemi nj variable vlera e saj nuk ndryshon, si psh kur e printojm at.
Program 4. 2
//****************************************************************
****
// Studentet.java Author: Gjergji Shaska
//
// Shembull per perdorimin e assigment statements per te
// ndryshuar vleren ne nje variable.
//****************************************************************
****

public class Studentet
{
//-----------------------------------------------------------------
// Printon numrin e studenteve sa here qe ai ndryshon.
//-----------------------------------------------------------------
public static void main (String[] args)
{
int studente = 22; // declarimi i pare
System.out.println ("Kjo klase ka " + studente + " studente.");

studente = 27;
System.out.println ("Kjo klase ka " + studente + " studente.");

studente = 30;
System.out.println ("Kjo klase ka " + studente + " studente.");

Page 35 of 275

}
}
Output----------------------------------------------------------------------------------------
Kjo klase ka 22 studente.
Kjo klase ka 27 studente.
Kjo klase ka 30 studente.
Ndonjher ne prdorim t dhna q kan t njjtn vler prgjat programit dhe
nuk mund t ndryshojn vlern. Data t tilla deklarohen si variabla konstante dhe
pr tu dalluar nga data e zakonshme ato deklarohen me shkronja kapitale, si
STUDENT nse do ta kishim deklaruar si variabl konstante n shembullin e
msiprm. N Java fjala e rezervuar pr t cilsuar nj variabl konstante sht
final si n shembullin e mposhtm.
final int STUDENTS = 30;
Nqoft se ne do t prpiqemi q t ndryshojm vlern e nj variable konstante
prgjat nj programi compiler do t na jap error. E vetmja mnyr pr t
ndryshuar nj variable konstante sht vlera e fillimit t saj. Nj tjetr arsye pse
ne prdorim variabla konstante sht se imagjinoni nj program q ne do na duhet
t ndryshojm nj vler. Nse nuk do t prdorim nj variabl konstante ne do na
duhet t shkojm dhe t ndryshojm vlern e ksaj variable n do vend ku e kemi
prdorur n program. Ndrsa kur ne prdorim nj variabll konstante ne
ndryshojm vetm vlern kur e kemi deklaruar fillimisht dhe ajo automatikisht do
t ndryshoj vlern e saj n t gjitha pozicionet ku sht prdorur.

4.3 Primitive Data Types
N gjuhn Java gjenden tet primitive data types: katr jan pr integers numbers,
dy jan pr floating numbers, nj character data dhe nj boolean data. Java ka dy
lloje baz vlerash numerike: integers q nuk ka fraksione dhe floating q ka
fraksione. Integers data jan katr tipe: byte, short, int dhe long. Jan dy tipe
floating: float dhe double. Nj prmbledhje e tyre sht dhn n Fig. 4. 1.
Tipet numerike jan signed, q nnkuptojn q t dyja numrat pozitiv dhe numrat
negativ mund t ruhen n to. Duhet treguar kujdes se cili tip primitiv data duhet
prdorur, e cila varet nga krkesat e programit q ne jemi duke shkruar.
Megjithat m t prdorshmet n shembujt tan do t jen int, long dhe float.

Page 36 of 275

Tipi
Ruajtja
(bits) Vlera Min Vlera Max
byte 8 -128 127
short 16 -32,768 32.767
int 32 -2,147,483,648 2147483648
long 64 -9.22337E+18 9.22337E+18
float 32 -3.4E+38 3.4E^+38
double 64 -1.7E^308 1.7E^308
Fig. 4. 1 Vlerat numerike pr do tip n Java luangage.
Nj boolean vler n Java prdoret me fjaln e rezervuar boolean, e cila ka vetm
dy vlera: true (e vrtet) dhe false (e gabur). Boolean jan gjersisht t prdorura
n programim dhe prdoren kur kemi t bjm vetm me dy pozicione, e vrtet
apo e gabuar. Vlerat pr boolean jan sidomos t prdorshm kur kemi t bjm
me fjalit if dhe loops.

4.4 Data Conversation
Ndonjher sht e nevojshme t konvertojm nga nj tip data n nj tjetr tip
data por duhet t tregojm kujdes q mos t humbim data. E rndsishme pr tu
kuptuar kur ne prdorim data conversation sht q ne mund t konvertojm nga
nj tip data me madhsi m t vogl n nj tip data me madhsi m t madhe pa
humbur data, kto quhen widening conversions. E anasjellta kur ne konvertojm
nga nj tip data me madhsi m t madhe n nj tip data me madhsi m t vogl
quhen narrowing conversions dhe mund t na japi humbje n data.
Duke qen se widening conversions nuk kan humbje n vlera ato jan t sigurta
dhe t rekomanduara t prdoren. N se duam t konvertojm nga byte n int
ather kemi t bjm me widening conversions pasi po konvertojm nga byte q
sht 8 bits to int q sht 32 bits. Pra madhsia e int sht m e madhe se
mdhsia e byte kshtu q ky konvertim sht i sigurt, shiko Fig. 4.1.
Nga data Ne data
byte
short, int, long, float,
double
short int, long, float, double
char int, long, float, double
int long, float, double
long float, double
float Double
Fig. 4. 2 Java widening conversions.

Page 37 of 275

Nga ana tjetr nse do t konvertonim nga int n byte do t kishim humbje t data
pasi int sht 32 bits dhe nuk mund t vendoset n byte q sht 8 bits. N kt
rast kemi narrowing conversions. Fig. 4. 2 jep nj prmbledhje t primitive data
pr Java widening conversions. Provoni si nj ushtrim t krijoni nj tabel t till
pr narrowing conversions.

4.5 Teknika t Konvertimit
Gjenden tre mnyra konvertimi n Java.
1) Assignment conversion
2) Promotion
3) Casting
Assignment conversion ndoth vetm gjat widening convesions. Pr shembull,
nse parat jan float variable dhe lekt jan int variable, ather fjalia n
vazhdim do t konvertoj lekt n float.
parat = lekt;
Le t supozojm se variabla lekt sht 90, ather pasi fjalia t ekzekutohet n
program variabla parat do t ket vlern 90,0. Ndrsa nse ne do t prpiqemi t
konvertojm parat n lekt kur ta compile programin do t na japi error, q na
tregon se kemi nj narrowing conversion pra mund t kemi humbje t data. Se si
mund ta bjm kt konvertim do ta shpjegojm m posht ku do t shpjegojm
casting.
Konvertimi me promotion ndoth automatikisht kur ne kryjm veprime me
variabla me tipe t ndryshme. Pra variabla automatikisht konvertohen n t
njjtin tip dhe pastaj kryhet veprimi. Nj shembull t till ne e kemi par n
prograpet q ne kemi prdorur m par por pa e kuptuar n detaje at. Kur ne
prdorm nj variable me nj vler numerike, ajo automatikisht konvertohej n
nj string dhe pastaj programi vazhdonte me veprimin n vazhdim. Pr ta kuptuar
m mir shikoni fjalin n vazhdim ku B sht nj float variabl dhe C sht nj
int variabl. Automatikisht programi do t konvertoj fillimisht variabln C n
float dhe pastaj do t kryej veprimin. Pra gjat veprime t ndryshme prgjat
programimit variablat duhet t jen t s njjts madhsi, por ne nuk duhet t
shqetsohemi pr kt pasi n Java kjo kryhet automatikisht.
A = B / C;

Page 38 of 275

Casting mund t themi se sht forma m e prdorshme n Java. Casting
sht nj operator n Java q specifikohet nga emri n kllapa q vendoset para
variabls. Nse do i referoheshim konvertimit t variabls parat n variabln lekt
q prdorm m sipr ather m par duhet t konvertojm variabln parat n int.
lekt = (int) parat;
Nse vlera e variabls parat sht 50,4 ather ajo e variabls lekt do t jet 50,
por vlera e variabls parat nuk do t ndryshoj.





















Page 39 of 275

USHTRIME DHE PROBLEMA

4.1 Cili sht rezultati q ruhet n seciln prej variablave?
int X, x1 = 10, x2 = 15, x3 = 25;
double Y, y1 = 19.0, y2 = 15.34;
a) X = x1 / 25;
b) X = x1 / 25;
c) X = x2 / x1;
d) Y = y2 / y1;
e) Y = (int) x2 / x1;
f) Y = (double) x2 / x1;
g) Y = (int) (double) x2 / x1;
4.2 A sht e mundur q ne t ndryshojm vlern e nj variable konstante gjat
prdorimit t saj? Kush sht mnyra q ne mund ta ndryshojm vlern e saj?


Page 40 of 275




Kapitulli 5


EXPRESSIONS DHE SCANNER CLASS

N kt kapitull do t shpjegojm nj numr opearators q do i prdorim
gjat programimit pr t kryer veprime t ndryshme. M pas do t
vazhdojm me scanner class q sht pjes e Java class library dhe prdoret
gjersisht pr t lexuar inputs.


5.1 Expressions
Nj expression sht nj ose m shum operator q kryejn nj llogaritje t
caktuar, rezultati zakonisht sht nj numr por mund dhe t mos jet. Por le t
shpjegojm fillimisht shprehjet aritmetike t cilat prdorin numeric operands dhe
resultati sht numerik. Shprehjet aritmetike m t prdorshme jan: mbledhja
(+), zbritja (-), shumzimi (*) dhe pjestimi (/). Java ka dhe nj tjetr shprehje
aritmetike e cila sht remainder (mbetja) operator (%) q na jep mbetjen pasi
kryehet pjestimi. Pr shembull kur pjestojm 21 me 5 mbetja sht 1 pra n Java
kjo do t shkruhet 21 % 5 dhe resultati do t jet 1. Pr tu theksuar sht se duhet
pasur kujdes me shenjn e rezultatit i cili do jet shenja e numrit q pjestohet.
Pra -31 % 6 rezultati do t jet -1.
Disa operator mund t prdoren s bashku duke na krijuar shprehje m t
ndrlikuara. Radha e kryerjes s veprimeve do t jet e njjt me at q ne kemi
msuar deri tani n klasat e matematiks: shumzimi, pjestimi, mbetja, mbledhja
dhe zbritja. Pra vini re se si fjalia n vazhdim do t ekzekutohet.
studentt = 3 + 5 * 2;

Page 41 of 275

N krahun e djatht veprimi i par q do t kryhet sht shumzimi dhe resultati
do t mblidhet me numrin 3 dhe rezultati i krahut t djatht do t vendoset n
variabln studentt. Duhet treguar kujdes gjat ktyre veprimeve sepse programi
do t copile n rregull dhe ne do t kujtojm se sht rezultati i sakt por n t
vrtet mund t jet gabim. Radha e kryerjes s veprimeve n arithmetic operators
sht nga e majta n t djatht. Rregulli i kllapave sht i vlefshm dhe n Java,
pra ne mund t prdorim kllapat pr t detyruar nj veprim t kryhet para nj
tjetri. Ne prdorm numrat n shembujt e msiprm por t njjtat rregulla jan t
vlefshme dhe pr variablat.
Shikoni shembullin n vazhdim:
student = student + 1;
Le t supozojm se vlera fillestare e variabls student sht 5, ather vlera e
shprehjes n krahun e djatht do t jet 6. Kini kujdes me variabln student, vlera
e saj nuk
ndryshon. Le t shikojm me kujdes tani nj shembull m t ndrlikuar dhe ku
kryhen shum veprime aritmetike.
N Programi 5. 1 ne fillimisht kemi deklaruar disa variabla pr t kryer veprimet e
mvonshme n program. Nuk sht e thn qe ne t jemi n gjendje t deklarojm
cdo variabl q n fillim, ne sa her mendojm se na duhet nj variabl shkojm
dhe e deklarojm at. M pas kryejm veprimet pr secilin operator: mbledhja,
zbritja, shumzimi, pjestimi dhe mbetja. Tregoni kujdes dhe mos u ngatrroni me
fjalin n vazhdim System.out.println(" i + j = " + (i + j)); ku pjesa i + j = sht
nj string dhe pjesa (i + j) sht nj variabl. Provoni n Java kt program dhe
analizoni outut.
Programi 5. 1
//****************************************************************
****
// Aritmetik.java Author: Gjergji Shaska
//
// Veprime te thjeshta aritmetike
//****************************************************************
****


Page 42 of 275

public class Aritmetik {
public static void main(String[] args) {

//deklarojme disa variabla
int i = 15;
int j = 25;
double x = 15.5;
double y = 25.5;

//mbledhja e numrave
System.out.println("Mbledhja");
System.out.println(" i + j = " + (i + j));
System.out.println(" x + y = " + (x + y));

//zbritja e numrave
System.out.println("Zbritja");
System.out.println(" i - j = " + (i - j));
System.out.println(" x - y = " + (x - y));

//shumezimi i numrave
System.out.println("Shumezimi");
System.out.println(" i * j = " + (i * j));
System.out.println(" x * y = " + (x * y));

//pjesetimi i numrave
System.out.println("Pjesetimi");
System.out.println(" i / j = " + (i / j));

Page 43 of 275

System.out.println(" x / y = " + (x / y));

//mbetja kur pjesetojme
System.out.println("Moduli");
System.out.println(" i % j = " + (i % j));
System.out.println(" x % y = " + (x % y));

}
}
Output----------------------------------------------------------------------------------------
Mbledhja
i + j = 40
x + y = 41.0
Zbritja
i - j = -10
x - y = -10.0
Shumezimi
i * j = 375
x * y = 395.25
Pjesetimi
i / j = 0
x / y = 0.6078431372549019
Moduli
i % j = 15
x % y = 15.5


Page 44 of 275

5.2 Operatort Rrits dhe Zbrits
Gjenden dy increment (rrits) dhe decrement (zbrits) operator q jan ++ dhe --.
Kta operator mund t vendosen prpara variabls (prefix) ose mbrapa variabls
(postfix). Duhet treguar pak kujdes me seciln prej tyre pasi sht pak konfuze se
si ato japin rezultate t ndryshme duke u prdorur n pozicione t ndryshme.
Analizoni shembullin n vazhdim se si output ndryshon kur prdorim prefix dhe
postfix. N rastin e par outut is 2 ndrsa n t dytin 1.
x = 1;
y = ++x;
System.out.println(y);

printon 2, por n rastin tjetr do t kemi:

x = 1;
y = x++;
System.out.println(y);

printon 1
Ndrsa n rastin e mposhtm output do t jet i njjt 2.
x++; output 2
++x; output 2
Kini parasysh q:
x++ sht e njjt me x = x + 1 dhe t dyja fjalit jan t prdorshme n Java. T
gjitha sa tham m lart jan t vlefshme jo vetm pr rritjen por gjithashtu dhe
pr zbritjen.
Nj tjetr form e shkurtuar dhe mjaft e prdorshme sht mbledhja (+=), zbritja
(-=), shumzimi (*=), pjestimi (/=) dhe mbetja (%=). Operator t till do t
ndryshojn variabln me vlern q do u krkohet. Fjalia n vazhdim shpjegon
kt kuptim.
student += 3;

5.3 Klasat Scanner
Scanner class sht nj klas n java.util, e cila lejon prdorusin t lexoj
input vlera pr tipe t ndryshme. Fillimisht ne duhet t krijojm nj objekt

Page 45 of 275

scaner q t prfshij nj metod. Fjalia n vazhdim krijon nj objekt scaner q
lexon input nga keboard.
Scanner scan = new Scanner (System.in);
Kjo krijon nj variabl t quajtur scan q paraqet Scanner object, i cili sht krijur
nga new operator. System.in object paraqet input i cili sht keybord.
Next method of the Scanner class lexon input q vjen m pas si nj string dhe e
kthen at, por nse n input kemi disa fjal t ndara me hapsir ndermjet tyre ne
duhet t thrrasim next pas do fjale. Metoda NextLine lexon t gjith input dhe e
kthen at si nj strig.
Shikoni se si idet q treguam m lart jan ekzekutuar n Programi 5. 2.
Programi fillon me fjalin import e cila i tregon programit q ne do t prdorim
Scanner class n kt program. Ne do ta shpjegojm m n detaje kt fjali n
kapitujt n vazhdim.
Programi 5. 2
//****************************************************************
****
// Lexo.java Author: Gjergji Shaska
//
// Tregon perdorimin e nextLine method.
//****************************************************************
****

import java.util.Scanner;

public class Lexo
{
//-----------------------------------------------------------------
// Lexon nje character string nga perdorusi dhe e printon.
//-----------------------------------------------------------------
public static void main (String[] args)

Page 46 of 275

{
String lexo;
Scanner scan = new Scanner (System.in);

System.out.println ("Shkruaj nje fjali:");

lexo = scan.nextLine();

System.out.println ("Ju futet fjalin: " + lexo + "");
}
}
Output----------------------------------------------------------------------------------------
Shkruaj nje fjali:
Sa nxenes ka UV?
Ju futet fjalin: Sa nxenes ka UV?













Page 47 of 275

USHTRIME DHE PROBLEMA

5.1 far do t printohet pasi kodi t ekzekutohet?
System.out.println (3 plus 5 sht: + 3 + 5);
5.2 Pasi kodi n vazhdim t jet ekzekutuar kush do t jet vlera e variabls?
gjatsia = 5;
gjatsia = 10 + gjatsia *3;
gjatsia = gjatsia / 5;
gjatsia ++;
5.3 Shkruaj dy fjali q rrisin vlern e nj int variable me emrin tuaj dhe dy fjali q
zvoglojn vlern e nj int variabl me mbiemrin tuaj.
5.4 Trego radhn e operimit pr seciln nga fjalit.
a) a + (c b) * d
b) a % (b + a) * c / d
c) (a b) * (c + d) % b












Page 48 of 275






Page 49 of 275




Kapitulli 6


FJALIT E KUSHTZUARA


N kt kapitull do t shpjegojm fjalit e kushtzuara me if. Si dhe
nnkuptohet nga titulli kto fjali i krijojojn prdoruesit mundsin t
zgjedhi cila fjali do t ekzekutohet. do vendim merret n baz t nj kushti
q nse sht i vrtet fjalia do t ekzekutohet ose nse nuk sht i vrtet
fjalia nuk do t ekzekutohet.

6.1 Fjalia if
Prpara se t shpjegojm fjalin if le t shpjegojm disa operator q jan shum t
rndsishm jo vetm n programin Java por dhe n programet e tjera. Nj
program fillon me fjalin e par dhe vazhdon hap pas hapi deri sa harrin n fund
t programit. Rregullat n t cilat fjalit ekzekutohen n nj program quhen flow
of control. Fjalit t cilat kontrollojn flow jan t ndara n dy kategori:
conditionals dhe loops. N Fig. 6.1 po tregojm operatort dhe kuptimin e secilit
prej tyre.
Operator Kuptimi
== e barabarte me
!= jo e barabarte me
< me e vogel se
<= me e vogel se ose e barabarte
> me e madhe se
=> me e madhe se ose e barabarte
Fig. 6. 1 Operators dhe kuptimi i tyre.

Page 50 of 275

N Fig.6.2 po japim operatort logjik q prdoren gjat fjalive t kushtzuara n
programim. Operatort logjik kan vetm dy vlera: true (e vrtet) ose fallse (jo
e vrtet).
Operator Kuptimi
! logical NOT (jo i vertet)
&& logical AND (edhe)
|| logical OR (ose)
Fig. 6. 2 Logical operators.
Operatori (!) prdoret pr logical NOT operator i cili nse variabla sht e
vrtet resultati do t jet jo i vrtet dhe e anasjellta nse variabla do t jet jo e
vrtet rezultati do t jet i vrtet. Duhet pasur parasysh q vlera e variabls nuk
ndryshon. Operatori && prdoret pr logical AND operator. Rezultati do t jet i
vrtet vetm n rastin kur t dyja variablat jan t vrteta n t gjitha rastet e
tjera rezultati sht jo i vrtet. || operator sht jo i vrtet vetm n rastin kur t
dyja variablat jan jo t vrteta, n rastet e tjera sht i vrtet. far tham m
lart jan t shpjeguara n Fig.6.3 ku n prgjithsi 0 prdoret pr jo t vrtet dhe
1 prdoret pr t vrtet.
A B ! A !B A&&B A||B
0 0 1 1 0 0
0 1 1 0 0 1
1 0 0 1 0 1
1 1 0 0 1 1
Fig. 6. 3 Boolean algebra pr variablat A dhe B.
N nj fjali ku t tre operatort jan t prdorur radha e kryerjes s veprimeve
sht: logical NOT (!), logical AND (&&) dhe logical OR (||). Nse do i kthehemi
prsri Fig.6.3 do t vm re se pr A && B mjafton q krahu i majt t jet 0 dhe
rezultati do t jet 0 dhe pr A||B mjafton q krahu i majt t jet 1 resultati do t
jet 1. Ky konkludim do na ndimoj n prcaktimin e shpejt t rezultatit gjat
prdorimit t operatorve n fjalit if.
Tani ne jemi gati t vijm n at q sht qllimi i ktij kapitulli, fjalia if. Nj
fjali if konsiston n fjaln e rezervuar if e ndjekur nga nj shprehje boolean
dhe nga nj fjali tjetr. Nse kushti sht i vrtet fjalia do t ekzekutohet dhe
nse kushti nuk sht i vrtet fjalia nuk do t ekzekutohet dhe programi do t
vazhdoj m posht. Le ta analizojm kt me nj shembull t thjesht ku
supozojm se x dhe y jan dy variabla t cilat i marrin vlerat nga fjalit e
msiprme n program. Nse vlera e variabls y do t jet m e madhe se vlera e
variabls x ather fjalia n vazhdim do t ekzekutohet ku y do ti shtohet 1, nse

Page 51 of 275

vlera e variabls y do t jet m e vogl se vlera e variabls x ather fjalia n
vazhdim nuk do t ekzekutohet.
if (y > x)
y += 1;
Fig. 6. 4 paraqet nj flow chart pr nj fjali if. Si dhe ju e shikoni nga skema e
paraqitur n fiur fillimisht sht vlersuar kushti i dhn i cili ka dy mundsi i
vrtet ose jo i vrtet. Nse kushti do jet i vrtet programi do t vazhdoj me
fjalin n vazhdim, nse kushti nuk do t jet i vrtet programi do ta anashkaloj
fjalin dhe do t vazhdoj m posht.

Fig. 6. 4 Si funksionon nj fjali if.
Le t shohim tani fjalin if dhe if else n nj program t plot n Java. N Programi
6. 1 ne kemi krijuar klasn Mosha, ku i japim mundsin prdoruesit pr t printuar
nj patent. Prdoruesit i krijohet mundsia t fus ditlindjen dhe nse prdoruesi
sht nn 18 vje (fjalia if) nuk mund t ket nj patent dhe pr t gjitha kushtet
e tjera (else) prdorusi mund t ket nj patent. Ndryshimi ndrmjet fjalive if dhe
if else sht se nse fjalia if ka vetm nj kusht, fjalia if else ka dy kushte if dhe
else. N qoft se kushti sht i vrtet ekzekutohet fjalia me if dhe nse kushti nuk
sht i vrtet ekzekutohet fjalia me else.

Page 52 of 275

Programi 6. 1
//****************************************************************
****
// Mosha.java Author: Gjergji Shaska
//
// Perdorimi i nje fjalie if-else.
//****************************************************************
****

import java.util.Scanner;

public class Mosha
{
//-----------------------------------------------------------------
// Lexon moshen dhe e printon sipas kushtit te dhene.
//-----------------------------------------------------------------
public static void main (String[] args)
{
final int MIN = 18;

Scanner scan = new Scanner (System.in);

System.out.print ("Kush eshte mosha juaj: ");
int mosha = scan.nextInt();

System.out.println ("Ju futet: " + mosha);

if (mosha < MIN)

Page 53 of 275

System.out.println ("Na vjen keq ju nuk mund te merrni nje patent.");

else
System.out.println ("Patenta juaj se shpejti do te jete gati.");
}
}
Output----------------------------------------------------------------------------------------
Kush eshte mosha juaj: 20
Ju futet: 20
Patenta juaj se shpejti do te jete gati.
Le t japim dhe nj tjetr shembull n Programi 6. 2 ku ne po prdorim s bashku
if dhe if else n nj program pr t llogaritur pagesn e nj puntori n jav. Orari
standart pr nj puntor n jav sht 40 or pune. Brenda ktij orari ai do t
paguhet me 21.25 dollar dhe mbi 40 or n jav ai do t paguhet me nj her e
gjysm. Kushti i par prcaktohet nga fjalia if (pra kur punon m pak se 40 or n
jav) dhe pr do rast tjetr, fjalia else, do paguhet 40 or me t njjtn vler dhe
ort e teprta me nj her e gjysm. Studioni me kujdes programin dhe provoni t
fusni numra m t vegjl se 40 dhe m t mdhenj se 40. Analizoni output.
Programi 6. 2
//****************************************************************
****
// Rroga.java Author: Gjergji Shaska
//
// Perdorimi i fjalise if-else.
//****************************************************************
****

import java.text.NumberFormat;
import java.util.Scanner;

Page 54 of 275


public class Rroga
{
//-----------------------------------------------------------------
// Lexon oret e punes dhe llogarit rrogen.
//-----------------------------------------------------------------
public static void main (String[] args)
{
final double PERORE = 21.25; // pagesa ne ore
final int OREJAVE = 40; // standarti ore ne jave
Scanner scan = new Scanner (System.in);

double paga = 0.0;

System.out.print ("Sa ore pune ne jave keni: ");
int oret = scan.nextInt();

System.out.println ();

// Mbi 40 ore pagesa 1.5
if (oret > OREJAVE)
paga = OREJAVE * PERORE + (oret-OREJAVE) * (PERORE * 1.5);
else
paga = oret * PERORE;


Page 55 of 275

NumberFormat fmt = NumberFormat.getCurrencyInstance();
System.out.println ("Pagesa juaj: " + fmt.format(paga));
}
}
Output----------------------------------------------------------------------------------------
Sa ore pune ne jave keni: 45

Pagesa juaj: $1,009.38

6.2 Prdorimi i Fjalive n Bllok
Nj block statement (fjali n bllok) jan disa fjali t vendosura n kllapa q
ekzekutohen pasi vlersohet q kushti i fjalis if sht i vrtet. N kt rast ne
duam t bjm m shum se nj veprim. N Programi 6. 3 ne po bjm nj loj t
thjesht, ku po mendojm nj numr dhe pastaj po hedhim zarin duke shpresuar
q t jet numri q ne menduam. Rolin e zarit n programin ton e kryen fjalia:
Random gjeneron = new Random();
Dy variablat tona i kemi deklaruar int dhe n fjalin if po japim kushtin e problemit
ton. Nse numri q ne shpresuam (provo) dhe numri i gjeneruar nga programi
(prgjigja) jan t njjt fjalia Pergjigje e sakt do t printohet, n t kundrt do
t printohen dy fjali: e para Nuk eshte numri i sakte dhe e dyta Numri ishte
plus numrin q do jet n variabln pergjigja. Printimi i dy fjalive detyrohet nga
prdorimi i kllapave, n t kundrt do t printohej vetm fjalia e par.
Programi 6. 3
//********************************************************************
// Zare.java Author: Gjergji Shaska
//
// Perdorimi i block statement ne nje if-else.
//********************************************************************


Page 56 of 275

import java.util.*;

public class Zare
{
//-----------------------------------------------------------------
// Provo nje numer duke shpresuar qe eshte i sakti.
//-----------------------------------------------------------------
public static void main (String[] args)
{
final int MAX = 6;
int pergjigja, provo;

Scanner scan = new Scanner (System.in);
Random gjeneron = new Random();

pergjigja = gjeneron.nextInt(MAX) + 1;

System.out.print ("Po mendoj nje numer ndermjet 1 dhe "
+ MAX + ". Kush mund te jete: ");

provo = scan.nextInt();

if (provo == pergjigja)
System.out.println ("Pergjigje e sakte.");
else

Page 57 of 275

{
System.out.println ("Nuk eshte numri i sakte.");
System.out.println ("Numri ishte " + pergjigja);
}
}
}
Output----------------------------------------------------------------------------------------
Po mendoj nje numer ndermjet 1 dhe 6. Kush mund te jete: 5
Nuk eshte numri i sakte.
Numri ishte 4
Programi 6. 4 jep nj tjetr fjali t rndsishme fjalin else if. Tani q ju keni
kuptuar prdorimin e fjalis if do ta keni fare t leht t kuptoni fjalin else if.
Fjalia else if nuk sht gj tjetr vese nj prdorim i shum herve i fjalis if. Pra
n programin n vazhdim ne po themi se nse variabla perqindja (q sht
prqindja e marr n provim) sht m shum ose baraz me 90 % nota juaj do t
jet 9. Tjetr fjali if (else if), nse variabla perqindja sht m shum ose baraz
me 80 % nota juaj do t jet 8. Dhe kshtu programi vazhdon me notat e tjera deri
sa n fjalin else kemi fjalin e cila nuk sht m e vrtet, pra sht false. Fjalia
else sht nj praktik e mir pr tu prdorur n t gjitha rastet ku kemi nj fjali if
pasi e detyron programin q t mos na japi rezultate jasht vlereva t lejuara.
Programi 6. 4
//********************************************************************
// Nota.java Author: Gjergji Shaska
//
// Tregon perdorimin e fjalis else if.
//********************************************************************

class Nota {
public static void main(String[] args) {

Page 58 of 275

int perqindja = 92;
char nota;

if (perqindja >= 90) {
nota = '9';
} else if (perqindja >= 80) {
nota = '8';
} else if (perqindja >= 75) {
nota = '7';
} else if (perqindja >= 70) {
nota = '6';
} else {
nota = '4';
}
System.out.println("Grade = " + nota);
}
}
Output----------------------------------------------------------------------------------------
Grade = 9
Nj tjetr lloj fjalie duke prdorur if sht fjalia nested if. Kjo lloj fjalie prmban
n vetvete dy fjali if, pr t cilat nse kushti i fjalis s par if sht i vrtet,
vlersohet kushti i fjalis s dyt. Analizoni me kujdes Programi 6. 5 dhe shikoni
se si funksionojn nested if. N kt program klasa Minimum vlerson tre numra
nprmjet t cilve i jepet mundsia prdorusit t zgjedhi. Tre variablat numri1,
numri2 dhe numri3 pasi zgjidhen nga prdorusi vlersohen nprmjet fjalis
nested if. Fjalia e par if krahason numrin1 me numrin2, nse ai sht m i vogl
kalohet n kushtin e fjalis s dyt if. Nse ai sht i vrtet ather numri1 sht
minimumi.

Page 59 of 275

Programi 6. 5
//********************************************************************
// Minimum.java Author: Gjergji Shaska
//
// Fjalia nested if.
//********************************************************************

import java.util.Scanner;

public class Minimum
{
//-----------------------------------------------------------------
// Lexon tre vlera nga perdorusi dhe percakton
// kush eshte vlera me e vogel.
//-----------------------------------------------------------------
public static void main (String[] args)
{
int numri1, numri2, numri3, minimum = 0;

Scanner scan = new Scanner (System.in);

System.out.println ("Fut tre numra: ");
numri1 = scan.nextInt();
numri2 = scan.nextInt();
numri3 = scan.nextInt();

if (numri1 < numri2)

Page 60 of 275

if (numri1 < numri3)
minimum = numri1;
else
minimum = numri3;
else
if (numri2 < numri3)
minimum = numri2;
else
minimum = numri3;

System.out.println ("Minimumi i tre numrave eshte: " + minimum);
}
}
Output----------------------------------------------------------------------------------------
Fut tre numra:
4
5
6
Minimumi i tre numrave eshte: 4

6.3 Fjalit switch
Nj tjetr fjali conditional n Java sht fjalia switch, e cila lejon t zgjidhet nj
drejtim kur ka dhe shum mundsi t tjera pr t zgjedhur. Fjalia switch vlerson
nj shprehje pr t prcaktuar nj vler dhe e gjen at vler ndrmjet shum t
tjerave. Secila fjali case (rast) ka fjali t cilat ekzekutohen n rast se kushti pr
fjalin case sht i vrtet.
Nj fjali brake prdoret pr t shkputur ekzekutimin n seciln case t nj fjalie
switch. Pa prdorimin e nj fjalie brake fjalia tjetr case do t ekzekutohej
menjher. Fjalia brake na jep ne mundsin t ekzekutojm vetm nj case. Nse
asnj rast nuk puqet me kushtet e programit ather prdoret fjalia default. sht e

Page 61 of 275

rndsishme t theksohet se shprehja e vlersuar n fillimin e nj fjalie switch
duhet t jet e tipit char, byte, short ose int ndrsa vlera e secils case duhet t jet
nj konstante, nuk mund t jet nj variabl.
N Programi 6. 6 po japim prdorimin e nj fjalie switch. Ne po prdorim nj
variabl kategori e cila na krijon dhjet kategori pr t pasur mundsin e dhjet
notave. Pas ksaj pr do rast printojm prkatsisht n far niveli studenti sht.
Vini re se si fjalia brake sht prdorur pas do case e cila tregon se programi nuk
mund t ekzekutoj fjalin tjetr case.
Programi 6. 6
//********************************************************************
// Notat.java Author: Gjergji Shaska
//
// Perdorimi i nje fjalie switch.
//********************************************************************

import java.util.Scanner;

public class Notat
{
//-----------------------------------------------------------------
// Lexon nje note nga studenti dhe jep rezultatin.
//-----------------------------------------------------------------
public static void main (String[] args)
{
int nota, kategori;

Scanner scan = new Scanner (System.in);

Page 62 of 275


System.out.print ("Fusni noten tuaj nga 0 ne 100: ");
nota = scan.nextInt();

kategori = nota / 10;

System.out.print ("Nota eshte ");

switch (kategori)
{
case 10:
System.out.println ("Ju lumte. Shkelqyshem.");
break;
case 9:
System.out.println ("Shume mire.");
break;
case 8:
System.out.println ("Mire.");
break;
case 7:
System.out.println ("Mesatar.");
break;
case 6:
System.out.println ("Poshte mesatares.");
System.out.println ("Duhet te takohesh me profesorin.");

Page 63 of 275


break;
default:
System.out.println ("Nuk kalon.");
}
}
}
Output----------------------------------------------------------------------------------------
Fusni noten tuaj nga 0 ne 100: 93
Nota eshte Shume mire.
















Page 64 of 275

USHTRIME DHE PROBLEMA

6.1 Ku qndron gabimi me kodin n vazhdim?
if (y = x)
System.out.println (Gjergji);
6.2 Kush do t jet fjala e printuar nga programi?
int krahaso = 50, x = 40, y = 45;
if (krahaso <= krahaso)
{
if (x ==y)
System.out.println (Vlora);
System.out.println (Fieri);
}
System.out.println (Tirana);
6.3 far ndodh nse nj case n nj fjali switch nuk mbaron me nj breake statement?

Page 65 of 275




Kapitulli 7


FJALIT LOOP

Ky kapitull do t na shpjegoj fjalit loop ose fjalit q prsriten, t cilat bjn t
mundur q nj fjali t ekzekutohet disa her apo n pafundsi. Si dhe fjalit e
kushtzuara fjalit loop kan t nevojshm nj shprehje boolean q prcakton sa
her fjalia do t ekzekutohet.


7.1 Fjalit while loop
Nj fjali while ekzekuton t njjtn fjali deri sa kushti bhet jo i vrtet. Si dhe
fjalia if nj fjali while vlerson kushtin e dhn dhe nse sht i vrtet ekzekuton
fjalit t quajtura ndryshe struktura e fjalis loop. Por n ndryshim nga nj fjali if
fjalia while vlersohet prsri pasi t gjitha fjalit e strukturs s loop jan
ekzekutuar dhe nse kushti sht i vrtet fjalit e loop ekzekutohen prsri dhe
kjo prsritet dhe prsritet deri sa kushti bhet jo i vrtet. Nse kushti nuk bhet
kurr jo i vrtet fjalia loop do t ekzekutohet n pafundsi. Fig. 7. 1 tregon
llogjikn e nj fjalie while.

Page 66 of 275

Vleresohet
kushti
fjalia
I vertete Jo I vertete

Fig. 7. 1 Llogjika pr fjalin while.
Shikoni se si fjalia while do t ekzekutohet n kodin n vazhdim. Variabla num e
cila fillimisht sht 0 krahasohet me numrin 10, pra 0 sht m e vogl se 10
kshtu q kushti plotsohet, programi do t ekzekutoj fjalin n vazhdim, pra do
t printoj vlern e variabls num q sht 0. N fjalin tjetr variabla num sht
rritur me nj pasi n t kundrt do t qndronim n vend dhe nuk do t kishim nj
loop. Pas ksaj programi do t shkoj prsri t vlersoj kushtin e while loop,
por tani variabla num nuk sht m 0 por sht 1. sht 1 m i vogl se 10, po,
kshtu q do t ekzekutohet prsri while loop. N t njjtn mnyr programi do
t ekzekutohet deri sa num t bhet 10. Kur num bhet 11 kushti nuk sht m i
vrtet dhe ekzekutimi i loop prfundon. Pra gjithsej while loop do t ekzekutohet
11 her.
int num = 0;
while (num <= 10)
{
System.out.println (num);
num++
}
Le t shikojm tani n Program 7. 1 ku kemi prdorur while loop. N klasn
Mesatarja prdorusi ka mundsin t fusi disa numra dhe kur do t llogaris

Page 67 of 275

mesataren e tyre duhet t fusi 0. Variabla numero bne t mundur q vlerat e
futura nga prdorusi t numrohen dhe t prdoren pr t llogaritur mesataren,
ndrsa variabla shuma bn t mudur mbledhjen e t gjith numrave q prdoruesi
fut. Vini re me kujdes se si vlera 0 e bn kushtin e while loop jo t vrtet, pra
while loop do t prfundoj dhe mesatarja e numrave do t llogaritet. Nse ju
fusni vlern 0 q n fillim while loop nuk do t ekzekutohet dhe programi do
shkoj tek fjalia if e cila do t shmangi pjestimin me 0 i cili nuk sht i mundur,
provojeni at.
Program 7. 1
//****************************************************************
****
// Mesatarja.java Author: Gjergji Shaska
//
// Perdorimi i while loop.
//****************************************************************
****

import java.text.DecimalFormat;
import java.util.Scanner;

public class Mesatarja
{
//-----------------------------------------------------------------
// Llogarit mesataren e numrave te futur nga perdorusi.
// pasi fusni disa numra fut 0 per te llogarit mesataren
//-----------------------------------------------------------------
public static void main (String[] args)
{
int shuma = 0, vlera, numero = 0;
double mesatarja;

Page 68 of 275


Scanner scan = new Scanner (System.in);

System.out.print ("Fute nje numer ose 0 per mesataren: ");
vlera = scan.nextInt();

while (vlera != 0) // per 0 kushti nuk eshte i vertete
{
numero++;

shuma += vlera;
System.out.println ("Shuma eshte " + shuma);

System.out.print ("Fute nje numer ose 0 per mesataren: ");
vlera = scan.nextInt();
}

System.out.println ();

if (numero == 0)
System.out.println ("Ju nuk futet ndonje vlere.");
else
{
mesatarja = (double)shuma / numero;

DecimalFormat fmt = new DecimalFormat ("0.##");
System.out.println ("Mesatarja " + fmt.format(mesatarja));

Page 69 of 275

}
}
}
Output----------------------------------------------------------------------------------------
Fute nje numer ose 0 per mesataren: 85
Shuma eshte 85
Fute nje numer ose 0 per mesataren: 34
Shuma eshte 119
Fute nje numer ose 0 per mesataren: 0

Mesatarja 59.5
Le t shpjegojm dhe nj tjetr shembull n Program 7. 2. Ky program nuk sht
gj tjetr vese nj tjetr prdorim i while loop por duke prdorur nj form tjetr
kushti pr t. N kushtin e ksaj lupe ne po e bjm at t vrtet pr variabln
fitore m t vogl se 0 dhe m t madh se numri i lojrave. N kt rast prdoruesi
ka t drejt t fusi nj tjetr numr. Kur kushti i while loop nuk sht i vrtet
programi do t shmangi while loop dhe do t ekzekutoj fjalin:
raporti = (double)fitore / NUM_LOJE;
Program 7. 2
//********************************************************************
// Lojera.java Author: Gjergji Shaska
//
// Perdorimi i while loop.
//********************************************************************

import java.text.NumberFormat;
import java.util.Scanner;

public class Lojera

Page 70 of 275

{
//-----------------------------------------------------------------
// Llogarit perqindjen e fituar te lojrave nga perdorusi.
//-----------------------------------------------------------------
public static void main (String[] args)
{
final int NUM_LOJE = 20;
int fitore;
double raporti;

Scanner scan = new Scanner (System.in);

System.out.print ("Fusni numrin e lojerave te fituara (0 to "
+ NUM_LOJE + "): ");
fitore = scan.nextInt();

while (fitore < 0 || fitore > NUM_LOJE)
{
System.out.print ("Ju lutem provojeni perseri: ");
fitore = scan.nextInt();
}

raporti = (double)fitore / NUM_LOJE;

NumberFormat fmt = NumberFormat.getPercentInstance();

System.out.println ();

Page 71 of 275

System.out.println ("Perqindja e fituar eshte: " + fmt.format(raporti));
}
}
Output----------------------------------------------------------------------------------------
Fusni numrin e lojerave te fituara (0 to 20): 15

Perqindja e fituar eshte: 75%
sht e rndsishme q programuesi t shkruaj kodin n mnyr t till q while
loop t kthehet jo e vrtet, ndryshe do t kishim nj infinit loop. Shikoni
shembullin n vazhdim.
int num = 5;
while (num <= 10) //kjo eshte nje infinit loop
{
System.out.println (num);
num--
}
Variabla num fillon me vlern 5, e cila sht m e vogl se 10, pra kushti
plotsohet dhe while loop ekzekutohet. Pas ksaj vlera e variabls num
zvoglohet me 1, pra vlera e saj sht 4. E njjta gj prsritet gjith kohn dhe
variabla num zvoglohet gjithmon dhe m shum. Kjo quhet infinite loop sepse
variabla num nuk bhet kurr m e madhe se 10, kshtu q ekzekutohet gjat
gjith kohs. Pr t ndaluar programin kur kemi t bjm me nj infinit loop ne
mund t mbajm t shtypur butonin Control dhe t shtypim C.

7.2 Nested loops
Nested loop jan t ngjashme me nested if q ne shpjeguam n kapitullin 6. Nj
nested loop sht kur struktura e nj loop prmban dhe nj tjetr loop. Pr tu
theksuar sht q pr secilin rast t loops s jashtme loopa e brendshme do t
ekzekutohet plotsisht. Shikoni shembullin n vazhdim dhe vini re se sa her
ekzekutohen loop e jashtme dhe loop e brendshme.

Page 72 of 275

int num1, num2;
num1 = 1;
while (num1 <= 5) //loop e jashtme
{
num2 = 1;
while (num2 <= 10) //loop e brendshme
{
System.out.println (Vlora);
num2++;
}
num1++;
}
Programi fillon me vlersimin e kushtit pr loopn e jashtme, n se sht i vrtet,
q sht n rastin ton pasi variabla num1 fillon me 1, programi shkon n
vlersimin e while loop t dyt. Vini re tani se si loop e brendshme do t
ekzekutohet 10 her dhe pastaj kushti i saj bhet jo i vrtet. Ky proes do t
vazhdoj prsri n t njjtn mnyr dhe loop e brendshme do t ekzekutohet 50
her ndrsa loop e jashtme 5 her.
Le t shikojm tani nj lloj string q quhet palindrome, e cila quhet e till kur nj
string lexohet e njjt kur e lexon nga e majta n t djatht dhe anasjelltas. N
Program 7. 3 prdoruesi ka mundsin t fusi nj string nse ajo sht nj
palindrome ather do t printohet: Kjo sht nj palindrom. dhe do i jepet
mundsia prdorusit t zgjedhi nse do t fus nj string t re apo t prfundoj
programin.
Program 7. 3

//****************************************************************
****
// Palindrome.java Author: Gjergji Shaska
//
// Perdorimi i nested while loops.

Page 73 of 275

//****************************************************************
****

import java.util.Scanner;

public class Palindrome
{
//-----------------------------------------------------------------
// Teston string dhe shikon nese jane palindromes.
//-----------------------------------------------------------------
public static void main (String[] args)
{
String str, tjeter = "y";
int majtas, djathtas;

Scanner scan = new Scanner (System.in);

while (tjeter.equalsIgnoreCase("y"))
{
System.out.println ("Fusni nje palindrome:");
str = scan.nextLine();

majtas = 0;
djathtas = str.length() - 1;

while (str.charAt(majtas) == str.charAt(djathtas) && majtas < djathtas)
{
majtas++;

Page 74 of 275

djathtas--;
}

System.out.println();

if (majtas < djathtas)
System.out.println ("String nuk eshte nje palindrome.");
else
System.out.println ("String eshte nje palindrome.");

System.out.println();
System.out.print ("Testo nje tjeter palindrome (y/n)? ");
tjeter = scan.nextLine();
}
}
}
Output----------------------------------------------------------------------------------------
Fusni nje palindrome:
abcd

String nuk eshte nje palindrome.

Testo nje tjeter palindrome (y/n)? y
Fusni nje palindrome:
abba

String eshte nje palindrome.

Page 75 of 275


Testo nje tjeter palindrome (y/n)? n
Kodi pr kt program prmban dy while loop. Loop e jashtme kontrollon sa
strings jan testuar dhe loop e brendshme shkon prgjat string karakter pas
karakteri, deri sa ajo prcakton q string sht palindrom apo jo. Variablat majtas
dhe djathtas ruajn indekset e dy karaktereve dhe si e shihi nga programi
variabla majtas rritet me 1, ndrsa variabla djathtas zvoglohet me 1.

7.3 Fjalia do while loop
Fjalia do while sht e njjt me fjalin while prvese kushti i saj vlersohet n
fund t fjalis do while. Fjalit e strukturs n kt fjali do t ekzekutohen deri sa
kushti i saj t bhet jo i vrtet, pra fjalit e strukturs s saj do ekzekutohen t
paktn nj her.
Vreni se si kjo fjali ekzekutohet n vazhdim.
do {
fjalit
} while (shprehja);
N Fig. 7. 2 tregohet llogjika skematike pr do while loop. Kjo loop ka t gjitha
kushtet q kemi thn dhe pr wile loop, pra ne duhet t sigurohemi q kushti i saj
plotsohet apo kthehet n jo i vrtet pasi fjalit e strukturs s saj jan ekzekutur
disa her sipas programit.

Fig. 7. 2 Llogjika e do while loop.

Page 76 of 275

Le t shohim tani dy programe ku sht prdorur do while loop. N programin e
par kodi nuk sht i komplikuar dhe sht kollaj pr tu kuptuar, ndrsa programi
i dyt sht disi m i komplikuar. N Program 7. 4 variabla int num sht printuar
do her q do wile loop sht ekzekutuar. Ne jemi t sigurt pr ekzekutimin e
hers s par t saj, pasi ajo vlersohet n fund t fjalis while (num <= 10);. Pasi
printohen numrat nga 1-10 kushti i saj nuk sht m i vrtet kshtu q ajo
mbaron s ekzekutuari.
Program 7. 4
//********************************************************************
// Dowhile.java Author: Gjergji Shaska
//
// Perdorimi i nje fjalie Do while.
//********************************************************************

class Dowhile {
public static void main(String[] args){
int num = 1;
do {
System.out.println("Numri eshte: " + num);
num++;
} while (num <= 10);
}
}
Output----------------------------------------------------------------------------------------
Numri eshte: 1
Numri eshte: 2
Numri eshte: 3

Page 77 of 275

Numri eshte: 4
Numri eshte: 5
Numri eshte: 6
Numri eshte: 7
Numri eshte: 8
Numri eshte: 9
Numri eshte: 10
Le t kalojm tani n nj tjetr program i cili sht disi m i vshtir pr tu
kuptuar. N Program 7. 5 i jepet mundsia lexuesit t fusi nj numr dhe programi
e lexon at dhe e printon numrin duke filluar nga fundi. Remainder operator
prdoret t prcaktoj digit n pozicionin e par dhe ja shton at numrit mbrapsht,
pastaj duke prdorur pjestimin e kthen at n numrin e fillimit.
Program 7. 5
//********************************************************************
// Mbrapsht.java Author: Gjergji Shaska
//
// Perdorimi i nje do while loop.
//********************************************************************

import java.util.Scanner;

public class Mbrapsht
{
//-----------------------------------------------------------------
// Lexon numrat duke filluar nga fundi.
//-----------------------------------------------------------------
public static void main (String[] args)

Page 78 of 275

{
int num, fundi, mbrapsht = 0;

Scanner scan = new Scanner (System.in);

System.out.print ("Fusni nje pozitiv numer: ");
num = scan.nextInt();

do
{
fundi = num % 10;
mbrapsht = (mbrapsht * 10) + fundi;
num = num / 10;
}
while (num > 0);

System.out.println ("Numri i lexuar nga fundi eshte " + mbrapsht);
}
}
Output----------------------------------------------------------------------------------------
Fusni nje pozitiv numer: 34567
Numri i lexuar nga fundi eshte 76543

7.4 For loop
Fjalit while dhe do while prdoren kur ne nuk e dim fillimisht numrin e herve
q loop do t ekzekutohet, ndrsa for loop prdoret kur ne duam t ekzekutojm

Page 79 of 275

nj loop me nj numr t caktuar hersh. For loop loop prmban tre pjes: fillimin
i cili tregon vlern n t ciln loop do t filloj t ekzekutohet, fundi vlera e t
cils tregon se deri n far vlere for loop do t vazhdoj t ekzekutohet dhe rritja
e cila tregon se si do t ndroshoj (rritet apo zvoglohet) do her q loop do t
ekzekutohet. Kini parasysh q fjalia e rritjes s loop ekzekutohet do her q for
loop ekzekutohet.
for (fillimi; fundi; rritja) {
fjalit
}

N Fig. 7. 3 paraqitet mnyra skematike e nj llogike for loop. Si tham dhe m
sipr for loop fillon me pjesn e par q sht fillimi e cila sht nj fjali q
ekzekutohet vetm nj her n fillim t for loop. N pjesn e dyt kemi kushtin e
loop i cili vlersohet dhe kur sht i vrtet ekzekutohen fjalit n vazhdim, kur
kushti nuk sht i vrtet for loop prfundon s ekzekutuari. N strukturn e loop
kemi dhe rritja e cila ekzekutohet do her q for loop ekzekutohet dhe e rrit apo
zvoglon variabln dhe kjo variabl vlersohet prsri n kushtin e loop.
I

v
e
r
t
e
t
e

Fig. 7. 3 Llogjika pr nj for loop.

Page 80 of 275

Le t konsiderojm tani nj shembull t thjesht t cilin ju mund ta provoni dhe si
nj program n Java. Klasa forloop sht prdorur pr t printuar variabln (i)
do her q loop ekzekutohet. Vlera e par q do t printohet do t jet vlera n t
ciln loop fillon, pra i = 1. Shikoni se si variabla (i) sht deklaruar brenda for
loop, e cila shum her sht e praktikushme kur variabla nuk nevoitet jasht
loop. Ekzekutimi i ktij programi do t printoj vlerat nga 1 deri n 10.
class Forloop {
public static void main(String[] args){
for(int i=1; i<11; i++){
System.out.println("Numri eshte: " + i);
}
}
}

Vreni se si n shembullin e mposhtm po krijojm nj infinit loop.
for ( ; ; ) { // infinite loop

// ketu eshte kodi
}

Le t shohim tani Program 7. 6 se si programi printon vlerat deri n nj limit t
siprm. Prdorusit i jepet mundsia t zgjedhi numrin shumzusit e t cilit do
printohen dhe kufirin e siprm deri n far vlere do t printohet. Vreni me
kujdes output dhe shikoni se si for loop sht ndrtuar. Pjesa e par sht
shumezus = vlera dhe tregon se kush do t jet vlera e par q do t printohet. N
pjesn e dyt kemi shumezus <= limit pra tregon vlern maksimale q do t
printohet dhe pjesa e tret tregon se si rritja bhet duke i shtuar vlern t ciln
prdorusi ka zgjedhur.
Program 7. 6
//********************************************************************
// Shumezusi.java Author: Gjergji Shaska
//
// Perdorimi i for loop.
//********************************************************************

import java.util.Scanner;

Page 81 of 275


public class Shumezusi
{
//-----------------------------------------------------------------
// Printon shumezusit e nje numri te zgjedhur nga perdorusi
//-----------------------------------------------------------------
public static void main (String[] args)
{
final int PER_RRESHT = 7;
int vlera, limit, shumezus, numero = 0;

Scanner scan = new Scanner (System.in);

System.out.print ("Fusni nje numer pozitiv: ");
vlera = scan.nextInt();

System.out.print ("Fusni limitin e siperm: ");
limit = scan.nextInt();

System.out.println ();
System.out.println ("Shmezusit e " + vlera + " ndermjet " +
vlera + " dhe " + limit + " jane:");

for (shumezus = vlera; shumezus <= limit; shumezus += vlera)
{
System.out.print (shumezus + "\t");


Page 82 of 275

// Printon nje numer vlerash si output
numero++;
if (numero % PER_RRESHT == 0)
System.out.println();
}
}
}
Output----------------------------------------------------------------------------------------
Fusni nje numer pozitiv: 10
Fusni limitin e siperm: 100

Shmezusit e 10 ndermjet 10 dhe 100 jane:
10 20 30 40 50 60 70
80 90 100
N programin n vazhdim po japim nj shembull t nested loop. Vini re si loop e
jashtme ekzekutohet saktsisht pes her, ndrsa loop e brendshme do t
ekzekutohet n varsi t loop s jashtme.
Program 7. 7
//********************************************************************
// Topat.java Author: Gjergji Shaska
//
// Perdorimi i nested for loops.
//********************************************************************

public class Topat
{
//-----------------------------------------------------------------
// Printon karakterin pike.

Page 83 of 275

//-----------------------------------------------------------------
public static void main (String[] args)
{
final int MAX_RRESHT = 5;

for (int rresht = 1; rresht <= MAX_RRESHT; rresht++)
{
for (int pika = 1; pika <= rresht; pika++)
System.out.print (".");
System.out.println();
}
}
}
Output----------------------------------------------------------------------------------------
.
..
...
....
.....
T treja llojet e loop (while, do while dhe for) jan pothuajse ekuivalente t njra
tjetrs, por prdorimi i tyre varet nga situata t veanta n proram. Ndryshimi
ndrmjet do while loop dhe while loop sht se do while loop ekzekutohet t
paktn nj her edhe kur kushti i saj nuk plotsohet. N ndryshim nga for loop t
dyja kto loop prdoren kur ne nuk e dim numrin q loop do t ekzekutohet.





Page 84 of 275

USHTRIME DHE PROBLEMA

7.1 Krahaso while loop dhe do while loop. Kush sht ndryshimi ndrmjet tyre?
7.2 Kur ne prdorim nj for loop n vend t nj while loop?
7.3 Kush do t jet output n kodin n vazhdim?
int x = 0, y = 10;
while (x < y)
{
System.out.printl (x);
x += 2;
}
7.4 Kush do t jet output n kodin n vazhdim?
for (int x = 0; x <= 50; x +=4)
System.out.printl (x);
7.5 Transformo kodin e while loop n do while loop.
int x = 1;
while (x < 10)
{
System.out.printl (x);
x ++;
}
7.6 Transformo kodin e while loop t ushtrimit t msiprm n for loop.

Page 85 of 275




Kapitulli 8


PRDORIMI I KLASAVE DHE OBJEKTEVE

N kt kapitull ne do t prdorim klasat dhe objektet pr manipulimin e
strings, pr llogaritje t ndryshme, formatuar output sipas nevojs etj.
Prdorimi i klasave dhe objekteve sht thelbsor n object-oriented
programing, ku lexusi do t marri bazat pr t shkruar nj program. Ne i
kemi prdorur klasat dhe objektet n t kaluarn por pa u futur shum n
detaje n shpjegimin e tyre, ndrsa ky kapitull fokuset n to. Gjithashtu n
kt kapitull do t japim iden e tipeve enumerated, t cilat jan klasa
speciale n Java dhe shum her prdorimi i tyre do t na lehtsoj shum
punn gjat programimit.

8.1 Deklarimi import
Klasat e java.lang package jan automatikisht t vlefshme pr prdorim kur
shkruan nj Java programing. Pr ti prdorur ato ju duhet ti referoheni nj
deklarimi import. Kujtoni shembujt kur ne kemi prdorur nj klas Scanner e cila
prdorte nj deklarim import si:
import java.util.Scanner;
Kur ky deklarim bhet gjat programimit ne i referohemi vetm emrit Scanner.
Nse ne nuk do t bjm nj deklarim t till ne do na duhet ti referohemi emrit t
plot sa her ne kemi nevoj pr t gjat programimit. Kjo mnyr referimi sht
zakonisht e prdorshme kur ne i referohemi nj apo dy packages, por pr tu
referuar t gjitha klasave q jan n package ne prdorim nj deklarim import (*).
Deklarimi n vazhdim na jep mundesin tu referohemi t gjitha klasave n
java.util package pa qen nevoja q ti referohemi secils prej tyre.

Page 86 of 275

import java.uil.*;
Klasat e java.lang package jan shum thelbsore pr t gjitha llojet e programeve
sepse na krijojn mundsin ti prdorim pa shkruajtur ndonj kod, pra na
lehtsojn punn gjat programimit. Megjithat sepse ato jan shum t
prdorshme do klas n java.lang package automatikisht dhe pa krkuar ndonj
deklarim import mund t prdori System dhe String.

8.2 Klasa Random
Gjat programimit shpesh nevoitet gjenerimi i numrave, si psh loja me zare. Kjo
mnyr sht e realizushme nprmjet klass Random, e cila sht pjes e klass
java.util. Ne nuk po futemi n detaje se si kjo kryhet nga Java software por ne
vetm do ta trajtojm at se si ta prdorim.
Metoda nextInt mund t thrritet pa ndonj parametr, ose me nj int value. Kur
prdoret pa parametr ajo gjeneron nj numr prgjat gjith int value, pra
pozitive dhe negative. Por zakonisht ne na nevoiten vlera n kufi t caktuar, si psh
n rastin e nj loje me zare ne duam vlera nga 1 n 6. Por metoda nextInt gjeneron
numrat duke filluar nga 0 dhe deri minus 1 nga vlera e parametrit t caktuar nga
programusi. Pr t shmangur kt anomali ne mund t shtojm apo t zbresim nj
vler t caktuar sipas krkess. Pr t marr vlerat nga 1 n 6 ne mund t
thrrasim nextInt(6), pra do t marrim vlerat nga 0 n 5 dhe i shtojm 1.
Kodi n Programi 8. 1 prodhon numra n kufi t caktuar. Studjojeni me kujdes
kodin dhe ndryshoni vlerat e tij pr t par vlerat e output. Ne po shpjegojm
vetm rastet kur duam t gjenerojm vlera n kufit 1-6. Si e shihni dhe nga
fjalia n vazhdim nextInt(6) do gjeneroj vlera ndrmjet 0 dhe 5 po duke i shtuar
1 do t gjeneroj vlera ndrmjet 1 dhe 6.
num1 = gjeneron.nextInt(6) + 1;
System.out.println ("Nga 1-6: " + num1);
T njjtin rezultat na e jep dhe mnyra n vazhdim, ku nextFloat() gjeneron vlera
ndrmjet 0 dhe 1 dhe duke u shumzuar me 6 do gjeneroj ndrmjet 0 dhe 6. N
rreshtin e dyt t kodit ne po marrim vetm int value dhe po u shtojm 1. Pra
rezultati do jet i njjt me kodin e msiprm.
num2 = gjeneron.nextFloat() * 6; // 0.0 ne 5.999999
num1 = (int)num2 + 1;
System.out.println ("Nga 1-6: " + num1);

Page 87 of 275

Programi 8. 1
//****************************************************************
****
// GeneronNumrat.java Autor: Gjergji Shaska
//
// Random numbers
//****************************************************************
****

import java.util.Random;

public class GeneronNumrat
{
//-----------------------------------------------------------------
// Gjeneron numrat ne kufi te caktuar.
//-----------------------------------------------------------------
public static void main (String[] args)
{
Random gjeneron = new Random();
int num1;
float num2;

num1 = gjeneron.nextInt();
System.out.println ("Nje integer: " + num1);

num1 = gjeneron.nextInt(10);
System.out.println ("Nga 0-9: " + num1);


Page 88 of 275

num1 = gjeneron.nextInt(10) + 1;
System.out.println ("Nga 1-10: " + num1);

num1 = gjeneron.nextInt(6) + 1;
System.out.println ("Nga 1-6: " + num1);

num1 = gjeneron.nextInt(10) - 5;
System.out.println ("Nga -5-4: " + num1);

num2 = gjeneron.nextFloat();
System.out.println ("Nje float nga 0-1: " + num2);

num2 = gjeneron.nextFloat() * 6; // 0.0 ne 5.999999
num1 = (int)num2 + 1;
System.out.println ("Nga 1-6: " + num1);
}
}
Output----------------------------------------------------------------------------------------
Nje integer: 170955027
Nga 0-9: 7
Nga 1-10: 7
Nga 1-6: 3
Nga -5-4: -5
Nje float nga 0-1: 0.691747
Nga 1-6: 2


Page 89 of 275

8.3 Klasa Math
Klasa Math sht e prcaktuar n java.lang package, e cila ofron nj numr t
math funksionesh pr t br llogaritje. Metodat n klasn Math kthejn vlera t
cilat mund t prdoren n program sipas nevojs.
N Programi 8. 2 prdoruesi ka t drejtn t zgjedhi koefientt pr formuln
kuadratike dhe klasa Math kryen llogaritjet pr t gjetur rrnjt. Shikoni n
vazhdim formuln pr zgjidhjet e ekuacionit.
a
ac b b
rrenja
2
4
2

=
Shikoni kodin n vazhdim se si zgjidhjet arrihen. Ne kemi krijuar nj variabl
rrenjkatrore e cila na kthen n program numrin q korespondon brenda rrnjs.
Vreni se si b sht ngritur n katror. N fjalin e dyt dhe t tret po kryejm
llogaritjet pr rrenja1 dhe rrenja2.
rrenjkatrore = Math.pow(b, 2) - (4 * a * c);
rrenja1 = ((-1 * b) + Math.sqrt(rrenjkatrore)) / (2 * a);
rrenja2 = ((-1 * b) - Math.sqrt(rrenjkatrore)) / (2 * a);
Programi 8. 2
//********************************************************************
// Kuadratik.java Autor: Gjergji Shaska
//
// Perdorimi i klases Math per llogaritje.
//********************************************************************

import java.util.Scanner;

public class Kuadratik
{
//-----------------------------------------------------------------
// Percakton rrenjet e nje kuadratik equation.

Page 90 of 275

//-----------------------------------------------------------------
public static void main (String[] args)
{
int a, b, c; // ax^2 + bx + c
double rrenjkatrore, rrenja1, rrenja2;

Scanner scan = new Scanner (System.in);

System.out.print ("Fut koeficentin e x^2: ");
a = scan.nextInt();

System.out.print ("Fut koeficent x: ");
b = scan.nextInt();

System.out.print ("Fut konstanten: ");
c = scan.nextInt();

// Shpresojme vlera pozitive nen rrenjen katrore.

rrenjkatrore = Math.pow(b, 2) - (4 * a * c);
rrenja1 = ((-1 * b) + Math.sqrt(rrenjkatrore)) / (2 * a);
rrenja2 = ((-1 * b) - Math.sqrt(rrenjkatrore)) / (2 * a);

System.out.println ("Rrenja #1: " + rrenja1);
System.out.println ("Rrenja #2: " + rrenja2);
}
}

Page 91 of 275


Output----------------------------------------------------------------------------------------
Fut koeficentin e x^2: 2
Fut koeficent x: 4
Fut konstanten: -2
Rrenja #1: 0.41421356237309515
Rrenja #2: -2.414213562373095

8.4 Formatimi i output
Klasat NumberFormat dhe DecimalFormat prdoren pr t formatuar
informacionin n mnyr q ai t duket n menyrn e dshiruar kur printohet. T
dyja kto klasa jan pjes e libraris standarte t Java software dhe prcaktohen
n Java.text package. Dy jan metodat m t prdorshme n klasn
NumberFormat: getCurrencyInstance dhe getPercentInstance. Metoda
getCurrencyInstance prdoret pr formatimin e vlerave monetare, ndrsa metoda
getPercentInstance prdoret pr nj objekt q formaton prqindjen. N Programi
8. 3 t dyja metodat prdoren pr t printuar mimin. Pasi prdoruesi fut numrin e
copve dhe mimin pr do cop programi do t llogaris mimin total pa taks,
taksn dhe mimin q paguan blersi me gjith taks. Pr t printuar prkatsisht
vlern monetare dhe prqindjen t dyja metodat jan prdorur.
Programi 8. 3
//********************************************************************
// Pazari.java Autor: Gjergji Shaska
//
// Perdorimi i klases NumberFormat.
//********************************************************************

import java.util.Scanner;
import java.text.NumberFormat;


Page 92 of 275

public class Pazari
{
//-----------------------------------------------------------------
// Llogarit cmimin gjithsej pas taksave qe duhet te
// paguaj bleresi.
//-----------------------------------------------------------------
public static void main (String[] args)
{
final double PERQINDJA_TAKS = 0.10; // 10% takse

int sasia;
double totalpataks, taks, Cmimitotal, cmimicope;

Scanner scan = new Scanner (System.in);

NumberFormat fmt1 = NumberFormat.getCurrencyInstance();
NumberFormat fmt2 = NumberFormat.getPercentInstance();

System.out.print ("Fusni sasin: ");
sasia = scan.nextInt();

System.out.print ("Fusni cmimin per cope: ");
cmimicope = scan.nextDouble();

totalpataks = sasia * cmimicope;
taks = totalpataks * PERQINDJA_TAKS;
Cmimitotal = totalpataks + taks;

Page 93 of 275


// Printo me formatimin perkates
System.out.println ("Cmimi total pa taks: " + fmt1.format(totalpataks));
System.out.println ("Taks: " + fmt1.format(taks) + " per "
+ fmt2.format(PERQINDJA_TAKS));
System.out.println ("Cmimi total: " + fmt1.format(Cmimitotal));
}
}
Output----------------------------------------------------------------------------------------
Fusni sasin: 5
Fusni cmimin per cope: 3
Cmimi total pa taks: $15.00
Taks: $1.50 per 10%
Cmimi total: $16.50

8.5 Tipet Enumerated
Nj klas enumerated sht nj tip special klase, e cila ofrohet nga Java. Fjala e
rezervuar enum prdoret pr tju referuar tipeve enumerated. Pasi nj tip
enumerated sht deklaruar, ajo mund t prdoret sa her nevoitet n program.
Vlerat pr enumerated mund t jen t llojeve t ndryshme si: numra, shkronja,
fjal etj. Shikoni nj tip enumerated n fjalin n vazhdim.
enum Emrat {vlora, fieri, tirana};
Numri i vlerave n enum sht pa limit. Pasi enumerated sht deklaruar ne mund
ti referohemi vetm vlerave t saj duke deklaruar nj variabl, e cila mund t
marr vetm nj nga tre vlerat e deklaruara; vlora, fieri, tirana.
Emrat qytetet
Pas ksaj ne mund ti referohemi vlers vlora si n fjalin n vazhdim.
qytetet = Emrat.vlora;

Page 94 of 275

Secila vler n tipet enumerated ruhet si integer, e cila referohet n radh. Pra
vlora ka vlern 0, fieri ka vlern 1, tirana ka vlern 2 dhe kshtu me radh. Tipet
enumerated jan tipe speciale t klasave, kshtu q ato n prgjithsi nuk
deklarohen n nj metod, ato deklarohen n nivelin e klass.
N Programi 8. 4 UV sht enum me vlera emai, llogaria, regjistrimi. Vreni se si
variablat e student1, student2 dhe student3 i referohen enum dhe pr ta kuptuar
m mir kt ne po printojm vlerat dhe emrin pr seciln variabl.
Programi 8. 4
//********************************************************************
// Universiteti.java Autor: Gjergji Shaska
//
// Perdorimi i tipit enumerated.
//********************************************************************

public class Universiteti
{
enum UV {email, llogaria, regjistrim}

//-----------------------------------------------------------------
// Creates and uses variables of the Flavor type.
//-----------------------------------------------------------------
public static void main (String[] args)
{
UV student1, student2, student3;
student1 = UV.llogaria;
System.out.println ("student1 vlera: " + student1);
System.out.println ("student1 pozicioni: " + student1.ordinal());
System.out.println ("student1 emri: " + student1.name());


Page 95 of 275

student2 = UV.regjistrim;

System.out.println ();
System.out.println ("student2 vlera: " + student2);
System.out.println ("student2 pozicioni: " + student2.ordinal());
System.out.println ("student2 emri: " + student2.name());

student3 = UV.email;

System.out.println ();
System.out.println ("student3 vlera: " + student3);
System.out.println ("student3 pozicioni: " + student3.ordinal());
System.out.println ("student3 name: " + student3.name());
}
}
Output----------------------------------------------------------------------------------------
student1 vlera: llogaria
student1 pozicioni: 1
student1 emri: llogaria

student2 vlera: regjistrim
student2 pozicioni: 2
student2 emri: regjistrim

student3 vlera: email
student3 pozicioni: 0
student3 name: email

Page 96 of 275

USHTRIME DHE PROBLEMA

8.1 Kush sht efekti i nj fjalie n vazhdim?
import java.awt.*;
8.2 Trego kufit e rezultateve pr seciln nga shprehjet n vazhdim.
a) generator.nextInt(10);
b) generator.nextInt(9) + 1;
c) generator.nextInt(10) - 5;
8.3 Shkruaj nj fjali e llogarit rrnjn katrore t x dhe y dhe e ruan rezultatin n z.

Page 97 of 275




Kapitulli 9


T SHKRUASH KODIN E KLASAVE


N kapitullin 8 ne prdorm klasat dhe objektet n situata t ndryshme n
program, ndrsa n kt kapitull ne do t shkruajm kodin pr klasat duke
prcaktuar objektet tan. N kt kapitull ne do msojm gjithashtu encapsulation
e cila na mson mnyrn m t mir t t shkruarit t programit q t jet sa m i
sigurt.


9.1 Anatomia e Klass
Deri tani programet tona megjithse kan qen t plota dhe kan zgjidhur nj
problem t caktuar ato t gjitha kan qen t prbra nga nj klas e vetme dhe n
prgjithsi me nj metod t vetme. Le ta shpjegojm me nj shembull se si dy
klasa mund t prdoren n t njjtin projekt. Si dhe do ta shohim dhe n
programe t tjera t mvonshme ne do t prdorim dhe m shum se dy klasa n
t njjtin projekt, por ideja e lidhjeve ndrmjet tyre sht e njjt.
Ndryshimi ndrmjet ktij programi dhe programeve t mparshme sht se ktu
ne po e shruajm vet klasn e dyt ndrsa n programet e deri tanishme ne kemi
prdorur vetm klasa q na i ofronte libraria e Javs. N Programi 9. 1 sht i
njjti kode q ne kemi shkruar dhe n programet e mparshme, pra klasa kryesore
me nj metod t vetme. Ne do t vazhdojm dhe n t ardhmen me t njjtn ide
pr klasn kryesore, pra do t jet klasa ku do t startoj programi. Ndrsa
Programi 9. 2, q si tham dhe m sipr nuk sht n librarin e Javs, por ne vet
duhet ta shkruajm at.

Page 98 of 275

Klasa Zare n Programi 9. 2 ka dy tipe data: nj integer konstant (MAKS) q
paraqet maksimumin e faqeve t zarit, dhe nj integer variable (vleraFaqe) q
paraqet faqen e zarit n at moment. Jan prdorur katr metoda n kt klas:
rotullon, vevleraFaqe, mervleraFaqe dhe toString.
Nse do t shihni me kujdes ne po prdorim gjithashtu nj metod speciale t
quajtur cunstructors, e cila si e shihni ka t njjtin emr me emrin e klass. Kjo
metod sht prdorur pr t startuar vleraFaqe n nj vler t caktuar, n rastin
ton sht 1. Prej tani dhe n vazhdim ne do t prdorim gjersisht cunstructors
dhe do t shohim se si ato prdoren pr t iniciuar vlera t ndryshme.
Metoda rotullon duke u bazuar n Math.random() q ne e kemi shpjeguar n
kapitujt e kaluar, gjeneron numrat dhe kthen vlern n metodn q e thrret. Ne
mund t marrim kt vler gjithashtu n do koh q na nevoitet duke prdorur
metodn mervleraFaqe, ndrsa metoda vleraFaqe vendos vlern e faqes s zarit n
nj vler t specifikuar.

Programi 9. 1
//********************************************************************
// RrotullonZaret.java Autor: Gjergji Shaska
//
// Perdorimi i disa klasave
//********************************************************************

public class RrotullonZaret
{
//-----------------------------------------------------------------
// Krijon dy objekte qe rrotullohen disa here.
//-----------------------------------------------------------------
public static void main (String[] args)
{

Page 99 of 275

Zare zar1, zar2; // Zare eshte klasa Zare
int shuma;

zar1 = new Zare();
zar2 = new Zare();

zar1.rotullon();
zar2.rotullon();
System.out.println ("Zari pare: " + zar1 + ", Zari dyte: " + zar2);

zar1.rotullon();
zar2.veVleraFaqe(4);
System.out.println ("Zari pare: " + zar1 + ", Zari dyte: " + zar2);

shuma = zar1.merVleraFaqe() + zar2.merVleraFaqe();
System.out.println ("Shuma: " + shuma);

shuma = zar1.rotullon() + zar2.rotullon();
System.out.println ("Zari pare: " + zar1 + ", Zari dyte: " + zar2);
System.out.println ("Shuma e re: " + shuma);
}
}
Output----------------------------------------------------------------------------------------
Zari pare: 4, Zari dyte: 5
Zari pare: 2, Zari dyte: 4

Page 100 of 275

Shuma: 6
Zari pare: 1, Zari dyte: 4
Shuma e re: 5
Programi 9. 2
//********************************************************************
// Zare.java Autor: Gjergji Shaska
//
// Prezanton nje zar me faqe qe tregojn vlerat ndermjet 1 dhe 6
//********************************************************************

public class Zare
{
private final int MAKS = 6; // maksimumi faqeve

private int vleraFaqe; // vlera qe tregohet ne zare

//-----------------------------------------------------------------
// Constructor: vendos vleren fillestare.
//-----------------------------------------------------------------
public Zare()
{
vleraFaqe = 1;
}

//-----------------------------------------------------------------
// Rrotullon zarin dhe kethen rezultatin.
//-----------------------------------------------------------------

Page 101 of 275

public int rotullon()
{
vleraFaqe = (int)(Math.random() * MAKS) + 1;

return vleraFaqe;
}

//-----------------------------------------------------------------
// Vendos vleren e faqes te zarit ne vleren specifike.
//-----------------------------------------------------------------
public void veVleraFaqe (int vlera)
{
vleraFaqe = vlera;
}


//-----------------------------------------------------------------
// Kthen vleren e faqes se zarit.
//-----------------------------------------------------------------
public int merVleraFaqe()
{
return vleraFaqe;
}

//-----------------------------------------------------------------
// Kthen nje string qe prezanton kete zar.
//-----------------------------------------------------------------

Page 102 of 275

public String toString()
{
String rezultati = Integer.toString(vleraFaqe);

return rezultati;
}
}
Vini re n klasn Zare, konstantja MAKS dhe variabla vleraFaqe jan deklaruar
brenda klass por jasht metodave. Kjo bn t mundur q ktyre variablave mund
tu referohen t gjitha metodat n kt klas.

9.2 Encapsulation
Nj objekt duhet t jet i udhhequr nga vetja e tij, q do t thot q vlerat e ktij
objekti mund t modifikohen vetm nga ky objekt. Vetm metoda e klass Zare
sht prgjegjse pr t ndryshuar vlerat e variabls vleraFaqe. Ne duhet ta bjm
at t pamundur pr tu ndryshuar jasht klass Zare. Encapsulation sht
mnyra e cila data nuk mund t ndryshohet n mnyr direkte nga nj pjes
tjetr e kodit.
Le ti referohemi metods kryesore n klasn RrotullonZaret dhe vreni se si
programi thrret metodn rotullon pr objektin zar. Metoda kryesore nuk mund ti
referohet variabls vleraFaqe direkt.
Disa modifikus n Java quhen visibility sepse ato kontrollojn akseset e pjestarve
t klass. Fjalt e rezervuara public, private dhe protected jan modifikus visibiliy
q mund t aplikohen n variablat dhe metodat e nj klase. Nse nj variabl sht
deklaruar public ather vlerat e saj mund t ndryshohen dhe jasht ksaj klase,
pra veorit e encapsulation nuk ruhen. Ndrsa nse sht deklaruar private vetm
brenda ksaj klase ne kemi akses tek kjo variabl. I vetmi qllim kur prdoret
private sht q ajo t ndimoj metodat brenda ksaj klase pr t kryer funksionet
e tyre. Mnyra tjetr protected sht disi n mes t t dyjave, e cila lejon disa nga
veorit e encapsulation.
Le ta mbyllim kt kapitull me nj program q pothujse prmbledh far ne kemi
thn m sipr por dhe disa koncepte q ne nuk i kemi shpjegur n detaje. Klasa
Transaksion n Programi 9. 3 ka nj metod kryesore q krijon disa llogari bankare

Page 103 of 275

duke prfshir dhe shrbimet e tyre. N tre fjalit e para ne po fusim t dhnat pr
tre klient t banks si jan emri, numri i llogaris dhe sasia e parave.
Klasa Llogaria n Programi 9. 4 tregon n t vrtet se si kryhen llogaritjet n
llogarin bankare. Si e vini re constroctor n kt klas ka tre parametra n
ndryshim me constroctor q ne kemi prdorur m par ku kemi prdorur vtm
nj parametr. Megjithat ideja sht e njjt, ato prdoren pr t startuar data.
Metoda deposit prdoret pr t depozituar sasin e parave n variabln balance
dhe t kthej vlern e saj prsri n program. Metoda terheq prdoret pr t
llogaritur sasin e parave q do t ngelen n variabln balance pasi kemi zbritur
sasin e parave q prdorusi trheq nga llogaria e tij bankare dhe taksn e banks.
M pas kjo variabl sht kthyer prsri n program. Metoda shtoInteresin
prdoret pr t llogartitur sasin e parave pasi interesi sht llogaritur sipas
formuls q ju e shihni brenda ksaj metode dhe vlera e variabls balance kthehet
n program. Metoda merrBalance prdoret pr t marr vlern e variabls balance
dhe pr ta kthyer at n mnyr q t prdoret n klasn Transaksion. N metodn
toString po prdorim NumberFormat pr t formatur vlerat monetare dhe po
kthejm vlern n formn si paraqitet n rreshtin e fundit.
Programi 9. 3
//****************************************************************
****
// Transaksion.java Autor: Gjergji Shaska
//
// Demostron krijimin dhe perdorimin e disa llogarive bankare.
//****************************************************************
****

public class Transaksion
{
//-----------------------------------------------------------------
// Krijon disa llogari bankare dhe kerkon disa sherbime.
//-----------------------------------------------------------------
public static void main (String[] args)
{

Page 104 of 275

Llogaria klient1 = new Llogaria ("Kastriot Shaska", 56347, 580.39);
Llogaria klient2 = new Llogaria ("Gjergji Shaska", 87432, 65.25);
Llogaria klient3 = new Llogaria ("Tanush Shaska", 64375, 361.86);

klient1.deposit (21.32);

double gjergjiBalance = klient2.deposit (200.00);
System.out.println ("Llogaria e Gjergjit pas depozites: " +
gjergjiBalance);

System.out.println ("Llogaria e Gjergjit pas terheqjes: " +
klient2.terheq (130.75, 1.00));

klient1.shtoInteresin();
klient2.shtoInteresin();
klient3.shtoInteresin();

System.out.println ();
System.out.println (klient1);
System.out.println (klient2);
System.out.println (klient3);
}
}
Output----------------------------------------------------------------------------------------
Llogaria e Gjergjit pas depozites: 265.25
Llogaria e Gjergjit pas terheqjes: 133.5


Page 105 of 275

56347 Kastriot Shaska $640.82
87432 Gjergji Shaska $142.18
64375 Tanush Shaska $385.38
Programi 9. 4
//********************************************************************
// Llogaria.java Autor: Gjergji Shaska
//
// Llogaria bankare me sherbimet; depozit dhe terheqje.
//********************************************************************

import java.text.NumberFormat;

public class Llogaria
{
private final double PERQINDJA = 0.065; // perqindja interesit 6.5%

private long vepNum;
private double balance;
private String emri;

//-----------------------------------------------------------------
// Vendos llogarin duke percaktuar zoterusin, numrin e llogaris,
// dhe balancen fillestare.
//-----------------------------------------------------------------
public Llogaria (String zoterusi, long llogaria, double fillestare)
{
emri = zoterusi;

Page 106 of 275

vepNum = llogaria;
balance = fillestare;
}

//-----------------------------------------------------------------
// Depoziton sasin specifike ne llogari dhe kthen balancen e re.
//-----------------------------------------------------------------
public double deposit (double sasia)
{
balance = balance + sasia;

return balance;
}

//-----------------------------------------------------------------
// Terheq sasin e kerkuar dhe kthen balancen e re.
//-----------------------------------------------------------------
public double terheq (double sasia, double taks)
{
balance = balance - sasia - taks;

return balance;
}

//-----------------------------------------------------------------
// Shton interesin ne llogari dhe kthen balancen e re.
//-----------------------------------------------------------------

Page 107 of 275

public double shtoInteresin ()
{
balance += (balance * PERQINDJA);
return balance;
}

//-----------------------------------------------------------------
// Kthen balancen e llogaris.
//-----------------------------------------------------------------
public double merrBalance ()
{
return balance;
}

//-----------------------------------------------------------------
// Kthen pershkrimin e llogaris si nje string.
//-----------------------------------------------------------------
public String toString ()
{
NumberFormat fmt = NumberFormat.getCurrencyInstance();

return (vepNum + "\t" + emri + "\t" + fmt.format(balance));
}
}




Page 108 of 275

USHTRIME DHE PROBLEMA

9.1 Prcakto pr seciln nga fjalit n vazhdim kush prezanton nj klas dhe kush
prezanton nj objekt pr at klas.
a) Vlora, Flamurtari
b) Universitet, Student
c) 28 Nntori, Fest
9.2 Kush jan dallimet ndrmjet deklarimeve public, private dhe protected. far
bn fjalia return n nj program?




















Page 109 of 275

PROJEKTI 1
****************************************************************
N programin n vazhdim ne po japim t pfunduar kodin n t dyja klasat pr t
prcaktuar kohn. Ju duhet ta ndryshoni at n mnyr t till q t plotsohen
krkesat e mposhtme: ndryshoni kodin n mnyr q output t jet n shqip dhe
fjalia e par t jet emri dhe mbiemri juaj, emrat e klasave duhet t jen Koha dhe
Stimulus, tipet e kohs duhet t jen: shi,breshr, bor, diell, mjegull, stuhi, vap
dhe vetm emri juaj, jo mbiemri. Ndryshoni variablat pr kodin int inside,
condition, choice; n brenda, kushti dhe zgjedhje dhe pr Simulator autoset, rnd;
ndrysho n vendos dhe mundesi. Ju duhet t ktheni pr korigjim: kodin e printuar
pr t dyja klasat dhe outputin e printuar ku programi t jet testuar me t gjitha
mundsit; 1, 2, 3 dhe zgjith dhe nj numr m t math se tre.

Kodi projekt 1. 1
//********************************************************************
// Weather.java Autor: Gjergji Shaska
// Projekti 1.
//********************************************************************

import java.util.Scanner;

public class Weather
{

public static void main (String[] args)
{
int inside, condition, choice;

Simulator autoset, rnd;


Page 110 of 275

Scanner scan = new Scanner (System.in);
autoset = new Simulator();
rnd = new Simulator();

autoset.simulate();

System.out.println("The current weather is: Sun");
System.out.println ("---------------------------");
autoset.setFaceValue(3);

inside = 0; // Sets inside to 0 to enter the while loop

while (inside == 0)
{
System.out.println ("Would you like to select the weather or let the Simulator?");
System.out.println ();
System.out.println ("You selection options are:");
System.out.println (" 1 - to set Weather");
System.out.println (" 2 - to let Simulator");
System.out.println (" 3 - to display current Weather");
System.out.print ("Please select one of the above choices: ");
choice = scan.nextInt();
++inside;

if (choice > 3)
System.out.print ("You have selected an incorrect option please try again");
System.out.println ();

Page 111 of 275

inside = 0;

if (choice == 1)
{
System.out.println ("Type the weather number you would like. Your choices are:");
System.out.println ();
System.out.println (" 1 - for Rain");
System.out.println (" 2 - for Snow");
System.out.println (" 3 - for Sun");
System.out.println (" 4 - for Wind");
System.out.println (" 5 - for Hail");
System.out.println ();

System.out.print ("Select your Weather: ");
condition = scan.nextInt();

if (condition == 1)
{
System.out.println ("You have set the weather to: Rain ");
System.out.println ("----------------------------------");
}
if (condition == 2)
{
System.out.println ("You have set the weather to: Snow ");
System.out.println ("----------------------------------");
}
if (condition == 3)

Page 112 of 275

{
System.out.println ("You have set the weather to: Sun ");
System.out.println ("---------------------------------");
}
if (condition == 4)
{
System.out.println ("You have set the weather to: Wind ");
System.out.println ("----------------------------------");
}
if (condition == 5)
{
System.out.println ("You have set the weather to: Hail ");
System.out.println ("----------------------------------");
}

autoset.setFaceValue(condition);
System.out.println ();
inside = 0;
}

else if (choice == 2)
{
rnd.simulate();

if (rnd.faceValue == 1)
{
System.out.println ("The Simulator has set the weather to: Rain");

Page 113 of 275

System.out.println ("------------------------------------------");
}
if (rnd.faceValue == 2)
{
System.out.println ("The Simulator has set the weather to: Snow");
System.out.println ("------------------------------------------");
}
if (rnd.faceValue == 3)
{
System.out.println ("The Simulator has set the weather to: Sun");
System.out.println ("------------------------------------------");
}
if (rnd.faceValue == 4)
{
System.out.println ("The Simulator has set the weather to: Wind");
System.out.println ("------------------------------------------");
}
if (rnd.faceValue == 5)
{
System.out.println ("The Simulator has set the weather to: Hail");
System.out.println ("------------------------------------------");
}

autoset.setFaceValue(rnd.faceValue);
System.out.println ();
inside = 0;


Page 114 of 275

}

else if (choice == 3)
{
autoset.getFaceValue();

if (autoset.faceValue == 1)
{
System.out.println ("The current weather is: Rain");
System.out.println ("----------------------------");
}
if (autoset.faceValue == 2)
{
System.out.println ("The current weather is: Snow");
System.out.println ("----------------------------");
}
if (autoset.faceValue == 3)
{
System.out.println ("The current weather is: Sun");
System.out.println ("----------------------------");
}
if (autoset.faceValue == 4)
{
System.out.println ("The current weather is: Wind");
System.out.println ("----------------------------");
}
if (autoset.faceValue == 5)

Page 115 of 275

{
System.out.println ("The current weather is: Hail");
System.out.println ("----------------------------");
}

System.out.println ();
inside = 0;
}

}
}
}

Kodi projekt 1. 2
//********************************************************************
// Simulator.java Autor: Gjergji Shaska
// Projekti 1.
//********************************************************************

public class Simulator
{
private final int MAX = 5; // maximum weather types
public int faceValue;

public Simulator()

{

Page 116 of 275

faceValue = 1;
}

//-----------------------------------------------------------------
// Selects a random number between 1 to 5 and returns the result.
//-----------------------------------------------------------------
public int simulate()
{
faceValue = (int)(Math.random() * MAX) + 1;

return faceValue;
}


public void setFaceValue (int value)
{
faceValue = value;
}


public int getFaceValue()
{
return faceValue;
}

public String toString()
{

Page 117 of 275

String result = Integer.toString(faceValue);

return result;
}

}


Page 118 of 275




Kapitulli 10


GRAPHICS DHE APPLETS


N kt kapitull ne do t japim disa nga konceptet e grafikve q luajn nj
rol t rndsishm n kompiutera. Ne do t tregojm se si t ndryshojm
ngjyrat dhe t vizatojm figura t ndryshme. N vazhdim t ktij kapitulli
do t shpjegojm dy mnyrat e Java programs: Java applets dhe Java
applications.


10.1 Graphics
Data grafike paraqiten duke e ndar at n pjes t vogla t quajtura pixels. Ideja
ktu sht e njjt me far ne kemi thn pr do lloj informacioni, ai ndahet n
pjes t vogla dhe paraqitet n kompiuter me numra sipas vlerave q ruhet. Pra
nj piktur ndahet n pjes t vogla t quajtura pixels dhe secila prej tyre paraqitet
me nj numr. Sa m i madh t jet numri i pixels aq m e qart do t jet piktura.
Pr paraqitjen e nj pikture bardh dhe zi ideja sht fare e qart, duhet q secila
pixels ti jepet nj vler 0 pr ngjyrn e bardh dhe 1 pr ngjyrn e zez.
Kodi n vazhdim sht prdorur vetm pr t treguar se si kjo arrihet n nj
program t vrtet por mos u mundoni t kuptoni kodin pasi ne kemi prdorur
FPGA pr t realizuar at dhe kjo nuk i prket ksaj klase. Ky sht nj kod i
shkruajtur pr realizimin e nj videogami i cili paraqet nj loj me nj brekock e
cila mundohet t kaloj nj autostrad me pes ndarje pr makina. Nse
prdoruesi duke e lvizur brekockn majtas, djathtas, lart, posht arrin q ajo t

Page 119 of 275

kaloj, ai sht fitus, nse makina e godet brekockn ai sht humbs. N Fig. 10.
1 jepet nj piktur e ktij programi kur ai sht duke punuar.

Fig. 10. 1 Programi I lojs me brekockn q mundohet t kaloj autostradn.
Prqndrohuni n kodin n vazhdim vetm tek mnyra se si harrihet t ndrtohet
nj makin vetm duke shkruajtur 0 dhe 1. N kodin n vazhdim ne kemi dhn
kodin vetm pr nj makin por si e kuptoni dhe nga figura e msiprme ne
kemi katr kode t njjta ku ndryshimi i pozicioneve t 0 dhe 1 paraqet format e
ndryshme pr makinat. Vreni me kujdes pjesn e kodit q sht e mbushur me 0
dhe 1 ku ju mund ta dalloni formn e makins. Mos u ngatrroni me ngjyrat q
ato duken n pikturn e msiprme pasi ky kod ka dhe shum pjes t tjera ku ne
ndryshojm dhe ngjyrat. Gjithashtu menjher pas ktij kodi po japim dhe kodin
pr brekockn, verejeni dhe at me kujdes dhe dalloni formn e saj.
Kodi i nj prej makinave
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;

entity Prom5 is
Port (

Page 120 of 275

addr5: in STD_LOGIC_VECTOR (5 downto 0);
M5: out STD_LOGIC_VECTOR (0 to 49)
);
end Prom5;

architecture Prom_arch5 of Prom5 is
type rom_array5 is array (NATURAL range <>)
of STD_LOGIC_VECTOR (49 downto 0);

constant rom5: rom_array5 := (
"00000000000000000000000000000000000000000000000000",
"00000000000000000000000000000000000000000000000000",
"00000000000000000000000000000000000000000000000000",
"00000000000000000000000000000000000000000000000000",
"00000000000000000000000000000000000000000000000000",
"00000000000000000000000000000000000000000000000000",
"00000000000000000000000000000000000000000000000000",
"00000000000111111111111111111111111111111110000000",
"00000000000111111111111111111111111111111110000000",
"00000000000111000000000011111100000000001110000000",
"00000000000111000000000011111100000000001110000000",

Page 121 of 275

"00000000000111000000000011111100000000001110000000",
"00000000000111000000000011111100000000001110000000",
"00000000000111000000000011111100000000001110000000",
"00000000000111000000000011111100000000001110000000",
"00000000000111000000000011111100000000001110000000",
"00000000001111111111111111111111111111111110000000",
"00000111111111111111111111111111111111111110000000",
"00000000001111111111111111111111111111111110000000",
"11111111111111111111111111111111111111111111111111",
"11111111111111111111111111111111111111111111111111",
"01111111111111111111111111111111111111111111111111",
"01111111111111111111111111111111111111111111111111",
"11111111111111111111111111111111111111111111111111",
"11111111111111111111111111111111111111111111111111",
"11111111111111111111111111111111111111111111111111",
"11111111111111111111111111111111111111111111111111",
"11111111111111111111111111111111111111111111111111",
"11111111111111111111111111111111111111111111111111",
"11111111111111111111111111111111111111111111111111",
"11111111111111111111111111111111111111111111111111",
"11111111111111111111111111111111111111111111111111",

Page 122 of 275

"11111111111111111111111111111111111111111111111111",
"01111111111111111111111111111111111111111111111110",
"00000111111111000000000000000000000011111111100000",
"00000111111111000000000000000000000011111111100000",
"00000111111111000000000000000000000011111111100000",
"00000011111110000000000000000000000001111111000000",
"00000000111000000000000000000000000000011100000000",
"00000000000000000000000000000000000000000000000000");

begin
process(addr5)
variable j: integer;
begin
j := conv_integer(addr5);
M5 <= rom5(j);
end process;
end Prom_arch5;

Kodi pr pikturn e brekocks
library IEEE;
use IEEE.std_logic_1164.all;

Page 123 of 275

use IEEE.std_logic_unsigned.all;

entity Prom6 is
Port (
addr6: in STD_LOGIC_VECTOR (5 downto 0);
M6: out STD_LOGIC_VECTOR (39 downto 0)
);
end Prom6;

architecture Prom_arch6 of Prom6 is
type rom_array6 is array (NATURAL range <>)
of STD_LOGIC_VECTOR (39 downto 0);

constant rom6: rom_array6 := (
"0000000000000000000000000000000000000000",
"0000000000000000000000000000000000000000",
"0000000000000000000110000000000000000000",
"0000000000000000001111000000000000000000",
"0000000000000000011111100000000000000000",
"1010100000000000011111100000000000010101",
"0111000000000000001111000000000000001110",

Page 124 of 275

"0111000000000011111111111100000000001110",
"0111000000000111111111111110000000001110",
"1111111111111111111111111111111111111111",
"1111111111111111111111111111111111111111",
"0111111111111111111111111111111111111110",
"0000000000111111111111111111110000000000",
"0000000000011111111111111111100000000000",
"0000000000001111111111111111000000000000",
"0000000000000111111111111110000000000000",
"0000000000000011111111111100000000000000",
"0000000000000011111111111100000000000000",
"0000000000000011111111111100000000000000",
"0000000000000011111111111100000000000000",
"0000000000000011111111111100000000000000",
"0000000000000011111111111100000000000000",
"0000000000000011111111111100000000000000",
"0000000000000011111111111100000000000000",
"0000000000000011111111111100000000000000",
"0000000000000011111111111100000000000000",
"0000000000000111111111111110000000000000",
"0000000000001111111111111111000000000000",

Page 125 of 275

"0111111111111111111111111111111111111110",
"1111111111111111111111111111111111111111",
"0111000000001111111111111111000000001110",
"0111000000001111111111111100000000001110",
"1010100000000001111111111000000000010101",
"0000000000000000011111100000000000000000",
"0000000000000000000000000000000000000000",
"0000000000000000000000000000000000000000",
"0000000000000000000000000000000000000000",
"0000000000000000000000000000000000000000",
"0000000000000000000000000000000000000000",
"0000000000000000000000000000000000000000");

begin
process(addr6)
variable j: integer;
begin
j := conv_integer(addr6);
M6 <= rom6(j);
end process;
end Prom_arch6;

Page 126 of 275

do kompiuter dhe gjuh programimi ka t prcaktuar nj sistem kordinativ. Ky
sistem kordinativ q prdoret n Java sht i njjt me at q ne njohim deri tani,
prve se ai nuk ka vlera negative por vlerat e tij jan gjithmon pozitive dhe
origjina ndodhet n krahun e majt lart t pikturs n Java. Imagjinojeni me
ekranin e kompiuterit, n krahun e majt lart sht origjina (0,0), nse ecim
djathtas boshti x rritet dhe nse ecim posht boshti y rritet.
do ngjyr n Java mund t prezantohet n marrdhnie me tri nngjyrat baz: red,
green dhe blue (RGB). Secili numr pr RGB prezanton kontributin e ngjyrave,
duke dhn nga nj byte pr secilin numr, pra n kufijt nga 0 n 255. N Fig.
10. 2 po japim vlerat q korespondojn pr seciln ngjyr, kto n Java jan t
prcaktuara n klasn Color e cila sht pjes e java.awt package.
Ngjyra Objekti Vlerar RGB
black Color.black 0,0,0
blue Color.blue 0,0,255
gray Color.gray 128,128,128
green Color.green 0,255,0
magenta Color.magenta 255,0,255
orange Color.orange 255,200,0
pink Color.pink 255,175,175
red Color.red 255,0,0
white Color.white 255,255,255
yellow Color.yellow 255,255,0
Fig. 10. 2 Vlerat e ngjyrave n klasn Color.

10.2 Applets
Applets jan programe Java q prdoren gjersisht n network dhe Web browser.
Shikoni Programi 10. 1 se si prdor n fillim t klass fjalin import
javax.swing.JApplet e cila tregon se klasa JApplet sht pjes e javax.swing
package. E vetmja e re n kt program sht vlerat pr sistemin kordinativ.
Provoni t lvizni vlerat pr pixels dhe vreni n output se si do t zhvendosen
figurat.
Programi 10. 1
//********************************************************************
// Pikture.java Autor: Gjergji Shaska
//

Page 127 of 275

// Perdorimi i appleteve baze.
//********************************************************************

import javax.swing.JApplet;
import java.awt.*;

public class Pikture extends JApplet
{
//-----------------------------------------------------------------
// Pikturo nje thenie.
//-----------------------------------------------------------------
public void paint (Graphics page)
{
page.drawRect (70, 70, 60, 60); // katror
page.drawRect (80, 100, 245, 50); // drejtkendesh
page.drawOval (95, 75, 40, 40); // rreth
page.drawLine (55, 80, 120, 140); // vije

page.drawString ("Universiteti Ismail Qemali", 150, 120);
page.drawString ("Vlore, Albania", 150, 140);
}
}
Shikoni outputin pr kt program n Fig. 10. 3.
Klasa graphics sht prcaktuar n java.awt package. Si e shihni ne e
prdorm at n programin e msiprm ku ajo ka funksionet pr t vizatuar katror,
drejtkndsh, rreth dhe vij. Metodat e klasave grafike na lejojn ne t zgjedhim

Page 128 of 275

se si e duam pikturn t mbushur apo jo, e thn me fjal t tjera jotransparente
dhe transparente.
Fig. 10. 3 Outputi pr Programi 10. 1

Le ti ilustrojm far tham m lart me nj shembull konkret. N Programi 10. 2
ne shkruajtm nj kod pr t paraqitur nj njeri prej bore. Me sistemin kordinativ
ju duhet t jeni t ambjentuar tani e vetmja e re n kt program sht se si pjes
t veanta t tij duke prdorur fjaln fill bhen solide dhe jo transparente.
Programi 10. 2
//********************************************************************
// NjeriBore.java Autor: Gjergji Shaska
//
// Perdorimi i metodave per te vizatuar.
//********************************************************************

import javax.swing.JApplet;
import java.awt.*;

public class NjeriBore extends JApplet
{
//-----------------------------------------------------------------

Page 129 of 275

// Vizato nje njeri prej bore.
//-----------------------------------------------------------------
public void paint (Graphics page)
{
final int MES = 150;
final int KOK = 50;

setBackground (Color.white);

page.setColor (Color.green);
page.fillRect (0, 175, 400, 50); // dyshemeja

page.setColor (Color.red);
page.fillOval (-30, -30, 80, 80); // dielli

page.setColor (Color.white);
page.fillOval (MES-20, KOK, 40, 40); // head
page.fillOval (MES-35, KOK+35, 70, 50); // pjesa e siperme
page.fillOval (MES-50, KOK+80, 100, 60); // pjesa e poshtme

page.setColor (Color.black);
page.fillOval (MES-10, KOK+10, 5, 5); // syri majte
page.fillOval (MES+5, KOK+10, 5, 5); // syri djathte

page.drawArc (MES-10, KOK+20, 20, 10, 190, 160); // buzeqeshja

Page 130 of 275


page.drawLine (MES-25, KOK+60, MES-50, KOK+40); // krahu i majte
page.drawLine (MES+25, KOK+60, MES+55, KOK+60); // krahu i djathte

page.drawLine (MES-20, KOK+5, MES+20, KOK+5); // kapelja
page.fillRect (MES-15, KOK-20, 30, 25); // kapelja
}
}
Output----------------------------------------------------------------------------------------










Page 131 of 275

USHTRIME DHE PROBLEMA

10.1 far sht nj pixels?
10.2 Ku gjendet origjina e sistemit kordinativ dhe si jan orientuar boshtet
kordinative?
10.3 Shpresoni se you keni nj objekt grafik t quajtur faqe, shkruani nj fjali q
do t vizatoj nj vij nga pika (15,35) n pikn (65,70).
10.4 Shpresoni se you keni nj objekt grafik t quajtur faqe, shkruani nj fjali q
do t vizatoj nj drejtkndsh me lartsi 50 dhe gjersi 30, ku pika e krahut
t majt sipr sht n pikn (5,10).



Page 132 of 275




Kapitulli 11


KOMPONENTT DHE KONTENIERT

N kt kapitull do t shpjegojm graphical user interfaces (GUI) dhe do t
vazhdojm me frames dhe panels. Gjithashtu do t kthehemi tek package ku
do t shpjegojm dy paketat e klasave GUI dhe do t japim komponentt
GUI.


11.1 Graphical User Interfaces GUI
Nj komponent GUI sht nj objekt q prezanton nj element n ekran q
prdoret pr t paraqitur informacione ose i lejon prdoruesit t komunikoj me
programin. Komponentt GUI prfshijn: labels, buttons, text fields, scroll bars
dhe menus. Klasat n GUI jan t prcaktuara n dy paketa: java.awt dhe
javax.swing. Ne prdorm java.awt n kapitullin e kaluar ku ne duhet t
theksojm se kjo sht paketa origjinale n Java, n t ciln gjenden klasa Color
apo Draw t njohura tashm pr ju. Nj version i cili sht shtuar m von sht
javax.swing (vini re x), e cila prmban m shum komponent q ne na nevoiten
gjat programimit. Nj kontainer sht nj tip special komponenti q prdoret pr
t mbajtur dhe organizuar komponent t tjer. Frames dhe panels jan dy
shembuj t kontenierve n Java.

11.2 Frames dhe Panels
Nj frame sht nj kontenier q prdoret pr t paraqitur nj aplikim n GUI
Java, i cili paraqitet n nj window mnjan me emrin e tij. N krahun e djatht

Page 133 of 275

sipr ndodhen tre butona t vegjl t cilt na japin mundsin pr t zvogluar,
zmadhuar dhe mbyllur at. Nj frame prcaktohet nga klasa JFrame.
Panel sht gjithashtu nj kontenier i cili nuk mund t shfaqet n nj window
mnjan, por ai duhet t shtohet te nj kontenier tjetr q t shfaqet. Funksioni
kryesor i tij sht t ndimoj n organizimin e komponentve t tjer dhe ai
prcaktohet n klasn JPanel.
Pr t paraqitur nj tekst apo imazh n GUI prdoret nj label e prcaktuar n
klasn JLabel, ku pa ekzagjerim mund t themi se ato gjenden pothuajse n do
GUI program. Pr t kuptuar m mir far ne tham m lart le t vazhdojm me
nj program ku JFrame, JPanel dhe JLabel prdoren.
Programi 11. 1 fillon duke importuar dy paketat q i shpjeguam n fillim t ktij
kapitulli. M pas JFrame merr nj string si parametr, pra fjaln Flamurtari.
Metoda frame.setDefaultCloseOperation prcakton far do t ndodhi kur t
klikohet (x) n krye t ans s djatht, pra t mbyllet frame. Zakonisht prdoret
EXIT_ON_CLOSE e cila l butonin (x) ta prfundoj programin.
Nj panel krijohet duke e filluar at n klasn JFrame. M posht n kod
prcaktohen ngjyra e bekgraundit dhe dimesionet pr frame. Shpesh ne do t
prdorim pr t caktuar dimensionet e frame setMaximumSize dhe
setMinimumSize.
Labels fillimisht jan krijuar dhe pastaj teksti kalohet n t. N kt program ne
po prdorim tre label por n t njjtn mnyr mund t prdorim sa label t na
nevoiten. Konteniert kan nj add metod q lejon konteniert e tjer t shtohen
tek ta. Tregoni kujdes kur krijoni kontenier q dhe ti shtoni ata m pas nse ju
vetm i krijoni por nuk i shtoni, programi compilet pa gabime por label nuk
shfaqet.
Pasi label jan shtuar prdoret metoda getContentPane e cila menjher thrret
metodn pr t shtuar label. Metoda e fundit e kodid frame.setvisible bn t
mundur q frame t shfaqet n ekran.

Programi 11. 1
//****************************************************************
****
// Flamurtari.java Autor: Gjergji Shaska
//

Page 134 of 275

// Perdorimi i frames, panels dhe labels.
//****************************************************************
****

import java.awt.*;
import javax.swing.*;

public class Flamurtari
{
//-----------------------------------------------------------------
// Trego nje fjali.
//-----------------------------------------------------------------
public static void main (String[] args)
{
JFrame frame = new JFrame ("Flamurtari");

frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

JPanel fillimisht = new JPanel();
fillimisht.setBackground (Color.green);
fillimisht.setPreferredSize (new Dimension(350, 100));

JLabel label1 = new JLabel ("Kush eshte Flamurtari?");
JLabel label2 = new JLabel ("Flamurtari eshte ekipi i futbollit" +
" te qytit te Vlores.");
JLabel label3 = new JLabel ("Flamurtari eshte krenaria e qytetit.");

fillimisht.add (label1);

Page 135 of 275

fillimisht.add (label2);
fillimisht.add (label3);

frame.getContentPane().add(fillimisht);
frame.pack();
frame.setVisible(true);
}
}
Output----------------------------------------------------------------------------------------


11.3 Nested Panels
Le t shohim tani nj tjetr program ku do t prdorim nested panels. Shikoni n
Programi 11. 2 nestedpanels krijojn katr subpanels, secili ka nga nj label q
tregon emrin Vlora. Pr secilin nga subpanels kemi vendosur dimensionet dhe
ngjyrn.



Page 136 of 275

Programi 11. 2
//********************************************************************
// NestedPanels.java Autor: Gjergji Shaska
//
// Perdorimi i nested panels.
//********************************************************************

import java.awt.*;
import javax.swing.*;

public class NestedPanels
{
//-----------------------------------------------------------------
// Prezantor tre panel nested ne nje te katert.
//-----------------------------------------------------------------
public static void main (String[] args)
{
JFrame frame = new JFrame ("Bluza Flamurtarit");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

// subpanel 1
JPanel subPanel1 = new JPanel();
subPanel1.setPreferredSize (new Dimension(50, 250));
subPanel1.setBackground (Color.red);
JLabel label1 = new JLabel ("V");

Page 137 of 275

subPanel1.add (label1);

// subpanel 2
JPanel subPanel2 = new JPanel();
subPanel2.setPreferredSize (new Dimension(50, 250));
subPanel2.setBackground (Color.blue);
JLabel label2 = new JLabel ("L");
subPanel2.add (label2);

// subpanel 3
JPanel subPanel3 = new JPanel();
subPanel3.setPreferredSize (new Dimension(50, 250));
subPanel3.setBackground (Color.red);
JLabel label3 = new JLabel ("O");
subPanel3.add (label3);

// subpanel 4
JPanel subPanel4 = new JPanel();
subPanel4.setPreferredSize (new Dimension(50, 250));
subPanel4.setBackground (Color.blue);
JLabel label4 = new JLabel ("R");
subPanel4.add (label4);

// Set up primary panel
JPanel primary = new JPanel();

Page 138 of 275

primary.setBackground (Color.white);
primary.add (subPanel1);
primary.add (subPanel2);
primary.add (subPanel3);
primary.add (subPanel4);

frame.getContentPane().add(primary);
frame.pack();
frame.setVisible(true);
}
}
Output----------------------------------------------------------------------------------------






Page 139 of 275

USHTRIME DHE PROBLEMA

11.1 Shpjego konceptin e kontenierit, frame dhe t operatorit new?
11.2 Shkruj nj deklarim pr nj enumerated q prezanton ditt e javs.

Page 140 of 275



Kapitulli 12

OBJEKTET GRAFIKE

Ky kapitull do t shpjegoj disa objekte q kan prezantime grafike, q
nnkupton se si objekti duket vizual. Nj objekt grafik mund t prmbaj
data rreth dimensioneve dhe ngjyrave dhe gjithashtu mund t prmbaj
metoda pr ta vizatuar at. N kt kapitull ne do t shpjegojm n detaje se
si t prcaktojm nj objekt i cili ka karakteristika grafike. Ky kapitull do t
vazhdoj me shfaqen e butonave n nj frame dhe me nj tjetr komponent,
text fild, i cili i lejon prdoruesit t fusi n program data dhe t marri output.
N kt kapitull do t prdorim dy klasa n t njjtin program dhe n
kapitujt n vazhdim dy dhe m shum klasa do jen t pranishme gjith
kohs.



12.1 Prdorimi i Klasave t Ndara
Programi 12. 1 tregon metodn kryesore e cila ssht gj tjetr vese e njjta
klase si dhe kemi prdorur m par. Si output pr kt program do t marrim nj
fytyr t qeshur dhe nj tekst pr Spunch Bob.
Programi 12. 2 do t prcaktoj t gjitha dimensionet pr t shfaqur kokn e
Spunch Bobit duke prcaktuar: kokn, vesht, syt, bebet e syrit, vetullat, hundn
dhe gojn. do pjes e programit tashm sht e njohur pr ju dhe nse sht
nevoja referohuni tek kapitulli 10 ku ne treguam mnyrat e ndryshme t vizatimit.
Dy konstantet e prdorura n program jan prdorur pr t caktua qendrn n t
ciln vizatimi bazohet. Si dhe ju e shihni n program pjest e ndryshme t
vizatimit jan bazuar n kt pik, duke shtuar apo zbritur. M pas programi
vazhdon me nj constructor e cila nuk bn gj tjetr por vetm sa vendos ngjyrn,
dimensionet dhe tipin e fontit pr kt panel.

Page 141 of 275

Vini re fjalin public class FytyreQeshur extends Jpanel e prdorur n Programi
12. 2. N detaje ne do ta shpjegojm at n kapitujt e mvonshm kur t flasim
pr klasat prindr dhe fmij. Ajo far ne mund t themi tani sht se
FytyreQeshur sht nj JPanel, q do t thot se ajo ka akses n klasn JPanel.
Metoda paintComponent pranon nj objekt grafik si parametr. do objekt Jpanel
ka nj metod paintComponent e cila automatikisht thrritet t vizatoj panelin.
N rreshtin e par t metods paintComponent t ciln gjithashtu do ta
shpjegojm ne detaje m von, prdoret super.paintComponent e cila prdoret
gjithmon kur kemi klasat prindr dhe fmij.

Programi 12. 1
//****************************************************************
****
// Buzeqesh.java Autor: Gjergji Shaska
//
// Demostrimi i klasave te ndara.
//****************************************************************
****

import javax.swing.JFrame;

public class Buzeqesh
{
//-----------------------------------------------------------------
// Klasa kryesore e programit.
//-----------------------------------------------------------------
public static void main (String[] args)
{
JFrame frame = new JFrame ("Fytyre e qeshur");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

Page 142 of 275


FytyreQeshur panel = new FytyreQeshur();

frame.getContentPane().add(panel);

frame.pack();
frame.setVisible(true);
}
}

Programi 12. 2
//********************************************************************
// FytyreQeshur.java Autor: Gjergji Shaska
//
// Demostrimi i klasave te ndara.
//********************************************************************

import javax.swing.JPanel;
import java.awt.*;

public class FytyreQeshur extends JPanel
{
// permasat e qendres se kokes
private final int QENDRAX = 120, QENDRAY = 60;
//-----------------------------------------------------------------
// Constructor: Vendos karakteret kryesore te panelit.
//-----------------------------------------------------------------

Page 143 of 275

public FytyreQeshur ()
{
setBackground (Color.red);
setPreferredSize (new Dimension(320, 200));
setFont (new Font("Courier", Font.BOLD, 16));
}

//-----------------------------------------------------------------
// Vizaton fytyren.
//-----------------------------------------------------------------
public void paintComponent (Graphics page)
{
super.paintComponent (page);

page.setColor (Color.green);
page.fillOval (QENDRAX, QENDRAY, 80, 80); // koka
page.fillOval (QENDRAX-5, QENDRAY+20, 90, 40); // veshet

page.setColor (Color.black);
page.drawOval (QENDRAX+20, QENDRAY+30, 15, 7); // syte
page.drawOval (QENDRAX+45, QENDRAY+30, 15, 7);

page.fillOval (QENDRAX+25, QENDRAY+31, 5, 5); // bebja e syrit
page.fillOval (QENDRAX+50, QENDRAY+31, 5, 5);

page.drawArc (QENDRAX+20, QENDRAY+25, 15, 7, 0, 180); // vetulla
page.drawArc (QENDRAX+45, QENDRAY+25, 15, 7, 0, 180);

Page 144 of 275


page.drawArc (QENDRAX+35, QENDRAY+40, 15, 10, 180, 180); // hunda
page.drawArc (QENDRAX+20, QENDRAY+50, 40, 15, 180, 180); // goja

page.setColor (Color.white);
page.drawString ("Pershendetje Spunch Bob!",
QENDRAX-90, QENDRAY-20);
page.drawString ("Je shume i bukur.", QENDRAX-45, QENDRAY+105);
}
}

Output----------------------------------------------------------------------------------------

Po japim dhe nj tjetr shembull ku kemi prdorur tre klasa t ndara nga njra-
tjetra. Programi 12. 3 ka metodn kryesore e cila krijon dhe shfaq frame, n t
ciln shfaqen disa rrath t mbushur. E veanta n kt program sht se si
realizohet vizatimi i ktyre rrathve, pra do rreth i vizatuar n kt program
paraqitet me nj objekt t tijin. Metoda kryesore fillon nj objekt
PrezantonRrathpanel dhe e shton at n frame. PrezantonRrathpanel tregohet n

Page 145 of 275

Programi 12. 4, e cila sht derivuar nga JPanel. Ajo prmban dhe starton data pr
pes objekte rrathsh, vlerat e t cilave jan nisur fillimisht n nj constuctor.
Metoda paintComponent n klasn PrezantonRrathpanel vizaton panelin duke
thirrur metodn vizato pr secilin rreth, q do t thot se klasa
PrezantonRrathpanel i krkon secilit rreth t vizatoj veten e tij. Programi 12. 5
prcakton vlerat pr t ruajtur dimensionet e rrethit, pozicionin (x,y) dhe ngjyrn.
Provojeni progaramin dhe vereni output.


Programi 12. 3
//********************************************************************
// PrezantonRrath.java Autor: Gjergji Shaska
//
// Perdorimi i objekteve grafike.
//********************************************************************

import javax.swing.*;
import java.awt.*;

public class PrezantonRrath
{
//-----------------------------------------------------------------
// Prezanton disa rrathe.
//-----------------------------------------------------------------
public static void main (String[] args)
{
JFrame frame = new JFrame ("Prezanton Rrath");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);


Page 146 of 275

frame.getContentPane().add(new PrezantonRrathPanel());

frame.pack();
frame.setVisible(true);
}
}
Output----------------------------------------------------------------------------------------


Programi 12. 4
//********************************************************************
// PrezantonRrathPanel.java Autor: Gjergji Shaska
//
// Perdorimi i objekteve grafike.
//********************************************************************

import javax.swing.*;
import java.awt.*;

Page 147 of 275


public class PrezantonRrathPanel extends JPanel
{
private Rrathe rreth1, rreth2, rreth3, rreth4, rreth5;

//-----------------------------------------------------------------
// Constructor: Krijon pese objekte rrathe.
//-----------------------------------------------------------------
public PrezantonRrathPanel()
{
rreth1 = new Rrathe (50, Color.cyan, 60, 30);
rreth2 = new Rrathe (45, Color.green, 40, 25);
rreth3 = new Rrathe (90, Color.red, 65, 75);
rreth4 = new Rrathe (45, Color.blue, 165, 35);
rreth5 = new Rrathe (50, Color.yellow, 190, 65);

setPreferredSize (new Dimension(300, 200));
setBackground (Color.orange);
}

//-----------------------------------------------------------------
// Vizaton kete panel qe secili rreth vizaton vetveten.
//-----------------------------------------------------------------
public void paintComponent (Graphics page)
{
super.paintComponent(page);


Page 148 of 275

rreth1.vizato(page);
rreth2.vizato(page);
rreth3.vizato(page);
rreth4.vizato(page);
rreth5.vizato(page);
}
}
Programi 12. 5
//********************************************************************
// Rrathe.java Autor: Gjergji Shaska
//
// Prezanton nje rrath pozicion, dimensionet dhe ngjyrat.
//********************************************************************

import java.awt.*;

public class Rrathe
{
private int diameteri, x, y;
private Color ngjyra;

//-----------------------------------------------------------------
// Constructor: Vendos vlerat e ketij rrethi.
//-----------------------------------------------------------------
public Rrathe (int dimensionet, Color dritHije, int upperX, int upperY)
{
diameteri = dimensionet;

Page 149 of 275

ngjyra = dritHije;
x = upperX;
y = upperY;
}

//-----------------------------------------------------------------
// Vizato kete rreth.
//-----------------------------------------------------------------
public void vizato (Graphics page)
{
page.setColor (ngjyra);
page.fillOval (x, y, diameteri, diameteri);
}

//-----------------------------------------------------------------
// Diameteri.
//-----------------------------------------------------------------
public void setDiameter (int dimensionet)
{
diameteri = dimensionet;
}

//-----------------------------------------------------------------
// Ngjyrat.
//-----------------------------------------------------------------
public void setColor (Color dritHije)
{

Page 150 of 275

ngjyra = dritHije;
}

//-----------------------------------------------------------------
// X.
//-----------------------------------------------------------------
public void setX (int upperX)
{
x = upperX;
}


//-----------------------------------------------------------------
// Y.
//-----------------------------------------------------------------
public void setY (int upperY)
{
y = upperY;
}

//-----------------------------------------------------------------
// Diameter accessor.
//-----------------------------------------------------------------
public int getDiameter ()
{
return diameteri;
}

Page 151 of 275


//-----------------------------------------------------------------
// Ngjyrat.
//-----------------------------------------------------------------
public Color getColor ()
{
return ngjyra;
}

//-----------------------------------------------------------------
// X.
//-----------------------------------------------------------------
public int getX ()
{
return x;
}

//-----------------------------------------------------------------
// Y.
//-----------------------------------------------------------------
public int getY ()
{
return y;
}
}
12.2 Butonat
Le t shpjegojm prdorimin e butonave me nj shembull. Programi 12. 6 i
krkon prdoruesit t klikoj butonin me mouse dhe do her q butoni shtypet

Page 152 of 275

vlerat llogariten. Ky buton sht prcaktuar nga klasa JButon. Me interes n kt
program sht se ne krijojm nj list objektesh kur butoni shtypet
shtyp.addActionListener (new ButtonListener());, pra ne duhet t krijojm nj
klas q prezanton kt list. Ne mund t krijojm nj klas ButtonListener
mnjan ose n t njjtn klas. Kto lloj klasash prdoren rrall dhe vetm n
rastet kur gjenden marrdhnie shum t ngushta ndrmjet tyre. Klasat Listeners
shpesh prcaktohen si klasa t brendshme sepse ato kan marrdhnie shum t
ngushta me klasat GUI, kshtu q ajo automatikisht ka akses tek klasa GUI.

Programi 12. 6
//********************************************************************
// ButonNumero.java Autor: Gjergji Shaska
//
// Numeron cdo here butoni shtypet.
//********************************************************************

import javax.swing.JFrame;

public class ButonNumero
{
//-----------------------------------------------------------------
// Main program frame.
//-----------------------------------------------------------------
public static void main (String[] args)
{
JFrame frame = new JFrame ("Shtyp Butonin");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

frame.getContentPane().add(new ButonNumeroPanel());

Page 153 of 275


frame.pack();
frame.setVisible(true);
}
}
Output----------------------------------------------------------------------------------------


Programi 12. 7
//********************************************************************
// ButonNumeroPanel.java Autor: Gjergji Shaska
// Numeron cdo here butoni shtypet.
//********************************************************************

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


Page 154 of 275

public class ButonNumeroPanel extends JPanel
{
private int numero;
private JButton shtyp;
private JLabel label;

//-----------------------------------------------------------------
// Constructor: Vendos GUI.
//-----------------------------------------------------------------
public ButonNumeroPanel ()
{
numero = 10;

shtyp = new JButton ("Shtyp Butonin");
shtyp.addActionListener (new ButtonListener());

label = new JLabel ("Shtyp: " + numero);

add (shtyp);
add (label);

setPreferredSize (new Dimension(300, 40));
setBackground (Color.green);
}

//*****************************************************************
// Nje liste per butonat qe shtypen.

Page 155 of 275

//*****************************************************************
private class ButtonListener implements ActionListener
{
//--------------------------------------------------------------
// Vlerat e reja te counter dhe label kur butoni shtypet.
//--------------------------------------------------------------
public void actionPerformed (ActionEvent event)
{
numero--;
label.setText("Shtyp: " + numero);
}
}
}

12.3 Fushat e Tekstit
Le t shohim nj tjetr shembull q prdor text fields. Metoda kryesore n klasn
KonvertoTemp prfshin nj text field n t cilin prdoruesi mund t type
temperaturn n Fahrenhait. Kur prdoruesi shtyp enter kjo temperatur
konvertohet n Celcius. Nj text field sht nj klas JTextField. N
Programi 12. 9 constructor JtextField merr nj parametr integer q specifikon
dimensionet e fushs. Text field dhe disa labels jan shtuar n panel q ato t
shfaqen kur frame bhet e dukshme. Si dhe e shpjeguam n programin q
prdorm pr butonat edhe n kt program po prdorim nj listener si nj klas
t brendshme. Provojeni programin dhe fusni vlera t ndryshme pr temperaturn
n Fahrenhait dhe vreni se si ajo konvertohet n Celcius.

Programi 12. 8
//********************************************************************
// KonvertoTemp.java Autor: Gjergji Shaska
//

Page 156 of 275

// Perdorimi i text fields.
//********************************************************************

import javax.swing.JFrame;

public class KonvertoTemp
{
//-----------------------------------------------------------------
// Krijon dhe konverton temperaturen.
//-----------------------------------------------------------------
public static void main (String[] args)
{
JFrame frame = new JFrame ("Konverto Temperaturen");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

KonvertoTempPanel panel = new KonvertoTempPanel();

frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
}
Output----------------------------------------------------------------------------------------

Page 157 of 275



Programi 12. 9
//********************************************************************
// KonvertoTempPanel.java Autor: Gjergji Shaska
//
// Demonstrates the use of text fields.
//********************************************************************

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class KonvertoTempPanel extends JPanel
{
private JLabel inputLabel, outputLabel, resultatiLabel;
private JTextField fahrenheit;


Page 158 of 275

//-----------------------------------------------------------------
// Constructor: Vendos komponentet GUI.
//-----------------------------------------------------------------
public KonvertoTempPanel()
{
inputLabel = new JLabel ("Fut temperaturen ne Fahrenheit:");
outputLabel = new JLabel ("Temperatura ne Celsius eshte: ");
resultatiLabel = new JLabel ("---");

fahrenheit = new JTextField (5);
fahrenheit.addActionListener (new TempListener());

add (inputLabel);
add (fahrenheit);
add (outputLabel);
add (resultatiLabel);

setPreferredSize (new Dimension(300, 75));
setBackground (Color.orange);
}

//*****************************************************************
// Tregon nje veprim listener per temperaturen.
//*****************************************************************
private class TempListener implements ActionListener
{
//--------------------------------------------------------------

Page 159 of 275

// Konverton kur shtypim enter.
//--------------------------------------------------------------
public void actionPerformed (ActionEvent event)
{
int fahrenheitTemp, celsiusTemp;

String text = fahrenheit.getText();

fahrenheitTemp = Integer.parseInt (text);
celsiusTemp = (fahrenheitTemp-32) * 5/9;

resultatiLabel.setText (Integer.toString (celsiusTemp));
}
}
}













Page 160 of 275

USHTRIME DHE PROBLEMA

12.1 Prse Listeners deklarohen shpesh si klasa t brendshme?
12.2 Kush sht kuptimi i extends i prdorur n programet e ktij kapitulli?
12.3 far do t jet funksioni i kodit n vazhdim i prdourur n programet e ktij
kapitulli?
shtyp.addActionListener (new ButtonListener());




















Page 161 of 275



Kapitulli 13


OBJEKTET GRAFIKE ME IF DHE FOR

N kt kapitull do t prqndrohemi n prdorimin e fjalive t kushtzuara
dhe loop, pr t krijuar objekte grafike t llojeve dhe tipeve t ndryshme.
Do t vazhdojm m pas duke e zhvilluar akoma m tej iden pr objektet
listener q ne i prmendm n kapitullin 11.



13.1 Vizato me Fjalit e Kushtzuara if
Klasa Syri n Programi 13. 1 prmban metodn kryesore por vizatimi kryhet n
klasn SyriPanel t
Programi 13. 2. PaintComponent n kt klas prdor nj fjali if pr t alternuar
ngjyrat ndrmjet t kuqes dhe t bardhs. do rreth vizatohet si nj rreth i
mbushur dhe duke qen se ne i vendosim ata njri mbi tjetrin krijohet ideja e
rrathve. N fund nj rreth i zi vizatohet pr beben e syrit.

Programi 13. 1
//********************************************************************
// Syri.java Autor: Gjergji Shaska
//
// Perdorimi i fjalive te kushtezuara dhe loops per te vizatuar.
//********************************************************************

Page 162 of 275


import javax.swing.JFrame;

public class Syri
{
//-----------------------------------------------------------------
// Frame kryesor i programit.
//-----------------------------------------------------------------
public static void main (String[] args)
{
JFrame frame = new JFrame ("Syri");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

SyriPanel panel = new SyriPanel();

frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
}
Output----------------------------------------------------------------------------------------

Page 163 of 275



Programi 13. 2
//********************************************************************
// SyriPanel.java Autor: Gjergji Shaska
//
// Perdorimi i fjalive te kushtezuara dhe loops per te vizatuar.
//********************************************************************

import javax.swing.JPanel;
import java.awt.*;

public class SyriPanel extends JPanel
{
private final int MAX_GJERSI = 400, NUM_RRATH = 5, RING_GJERSI = 25;

//-----------------------------------------------------------------
// vendos panelin e syrit.

Page 164 of 275

//-----------------------------------------------------------------
public SyriPanel ()
{
setBackground (Color.green);
setPreferredSize (new Dimension(400,400));
}

//-----------------------------------------------------------------
// Ngjyrat e syrit.
//-----------------------------------------------------------------
public void paintComponent (Graphics page)
{
super.paintComponent (page);

int x = 0, y = 0, diameter = MAX_GJERSI;

page.setColor (Color.white);

for (int numero = 0; numero < NUM_RRATH; numero++)
{
if (page.getColor() == Color.red) // alternimi i ngjyrave
page.setColor (Color.white);
else
page.setColor (Color.red);

page.fillOval (x, y, diameter, diameter);


Page 165 of 275

diameter -= (2 * RING_GJERSI);
x += RING_GJERSI;
y += RING_GJERSI;
}

// Vizaton beben e syrit
page.setColor (Color.black);
page.fillOval (x, y, diameter, diameter);
}
}

13.2 Vizato me Fjalit Loop
Le t shohim dhe nj shembull tjetr. Programi 13. 3 tregon klasn Kuti e cila fillon dhe paraqet
klasn KutiPanel e treguar n Programi 13. 4. Qllimi i ktij programi sht t vizatoj disa
drejtkndsha, nse gjersia e tyre sht m e vogl se nj variabl trashsi e caktuar (n rastin
ton 10 pixels) kutia sht mbushur me ngyrn e verdh. Nse lartsia sht m e vogl se
variabla trashsia kutia sht mbushur me ngjyrn jeshile. Kutit e tjera jan me ngjyr t kuqe.

Programi 13. 3
//********************************************************************
// Kuti.java Autor: Gjergji Shaska
//
// Perdorimi i fjalive te kushtezuara dhe loop.
//********************************************************************

import javax.swing.JFrame;

public class Kuti

Page 166 of 275

{
//-----------------------------------------------------------------
// Frame kryesore per programin.
//-----------------------------------------------------------------
public static void main (String[] args)
{
JFrame frame = new JFrame ("Kuti");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

KutiPanel panel = new KutiPanel();

frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
}
Output----------------------------------------------------------------------------------------


Page 167 of 275

Programi 13. 4
//********************************************************************
// KutiPanel.java Autor: Gjergji Shaska
//
// Perdorimi i fjalive te kushtezuara dhe loop.
//********************************************************************

import javax.swing.JPanel;
import java.awt.*;
import java.util.Random;

public class KutiPanel extends JPanel
{
private final int NUM_KUTI = 50, TRASHESI = 10, MAX_DIME = 50;
private final int MAX_X = 350, MAX_Y = 250;
private Random gjeneron;

//-----------------------------------------------------------------
// Vendos panelin e vizatimit.
//-----------------------------------------------------------------
public KutiPanel ()
{
gjeneron = new Random();

setBackground (Color.black);
setPreferredSize (new Dimension(400, 300));
}

Page 168 of 275


//-----------------------------------------------------------------
// Ngjyros kutit. Kutit e erreta dhe te shkurtra jane mbushur.
//-----------------------------------------------------------------
public void paintComponent(Graphics page)
{
super.paintComponent (page);

int x, y, gjeresi, lartesi;

for (int numero = 0; numero < NUM_KUTI; numero++)
{
x = gjeneron.nextInt(MAX_X) + 1;
y = gjeneron.nextInt(MAX_Y) + 1;

gjeresi = gjeneron.nextInt(MAX_DIME) + 1;
lartesi = gjeneron.nextInt(MAX_DIME) + 1;

if (gjeresi <= TRASHESI) // shiko per kutit e erreta
{
page.setColor (Color.yellow);
page.fillRect (x, y, gjeresi, lartesi);
}
else
if (lartesi <= TRASHESI) // shiko per kutit e shkurtra
{
page.setColor (Color.green);

Page 169 of 275

page.fillRect (x, y, gjeresi, lartesi);
}
else
{
page.setColor (Color.red);
page.drawRect (x, y, gjeresi, lartesi);
}
}
}
}


















Page 170 of 275

USHTRIME DHE PROBLEMA

13.1 Ndrysho kodin pr
Programi 13. 2 n mnyr t till q bebja e syrit t jet blu dhe rrethi i par pas
bebes s syrit t jet i zi.
13.1 Ndrysho kodin pr Programi 13. 4 n mnyr q gjersia e kutive t cilat
jan m t vogla se 7 pixels t mbushen me ngjyrn e bardh.

Page 171 of 275




Kapitulli 14


DIALOG BOXES, CHECK BOXES, RADIO BUTTONS

N kt kapitull do t shpjegojm dialog boxes nj tjetr komponent q
prdoret gjersisht n GUI. Nj dialog boxe sht nj dritare grafike q
shfaqet mbi dritaren e aktivizuar n at moment dhe prdoruesi mund ta
prdor at. N vazhdim do t vazhdojm me check boxes dhe radio
buttons.


14.1 Dialog Boxes
Nj dialog boxe ka lloje t ndryshme funksionesh si: konfirmon nj veprim, i
lejon prdoruesit t fusi informacionin, konverton informacion etj. Prdorimi i
dialog boxes bhet i mundur nga package n librarin e Java e cila prmban nj
klas t quajtur JOptionPane.
Le t shikojm shembullin n vazhdim ku Programi 14. 1 ka nj objekt listener i
cili prdoret nga dy komponent t ndryshm. Ky program shfaq nj label dhe dy
butona, kur butoni majtas klikohet n label shfaqet Majtas dhe kur butoni djathtas
klikohet n label shfaqet Djathtas. Klasa MajtasPanel n
Programi 14. 2 krijon nj objekt pr ButonListener dhe e shton at listener n t
dy butonat. Metoda actionPerformed prdor nj fjali if-else pr t prcaktuar cili
buton sht klikuar. Kushti pr fjalin if krahasohet me burimin dhe nse sht i
njjt, n label do t shfaqet Majtas, n t kundrt do t shfaqet Djathtas. Vereni
me kujdes se si klasa listener sht krijuar, por ne mund t kishim krijuar dhe dy
klasa t ndara nj pr butonin majtas dhe tjetrn pr butonin djathtas. Vine re se t
dy butonat vendosen n t njjtin panel q quhet butonPanel, i cili sht i ndar

Page 172 of 275

nga paneli i klass LeftRightPanel. Nga vendosja e t dy butonave n nj panel
garantohet pamja vizuale e tyre n lidhje me njri-tjetrin.

Programi 14. 1
//********************************************************************
// Majtas.java Autor: Gjergji Shaska
// Perdorimi i nje listener per disa butona.
//********************************************************************

import javax.swing.JFrame;

public class Majtas
{
//-----------------------------------------------------------------
// Programi kryesor frame.
//-----------------------------------------------------------------
public static void main (String[] args)
{
JFrame frame = new JFrame ("Majtas Djathtas");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

frame.getContentPane().add(new MajtasPanel());

frame.pack();
frame.setVisible(true);
}
}

Page 173 of 275

Output----------------------------------------------------------------------------------------


Programi 14. 2
//********************************************************************
// MajtasPanel.java Autor: Gjergji Shaska
//
// Perdorimi i nje listener per disa butona.
//********************************************************************

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MajtasPanel extends JPanel
{
private JButton majtas, djathtas;
private JLabel label;
private JPanel butonPanel;

Page 174 of 275


//-----------------------------------------------------------------
// Constructor: Vendos GUI.
//-----------------------------------------------------------------
public MajtasPanel ()
{
majtas = new JButton ("Majtas");
djathtas = new JButton ("Djathtas");

ButtonListener listener = new ButtonListener();
majtas.addActionListener (listener);
djathtas.addActionListener (listener);

label = new JLabel ("Shtyp butonin");

butonPanel = new JPanel();
butonPanel.setPreferredSize (new Dimension(200, 40));
butonPanel.setBackground (Color.red);
butonPanel.add (majtas);
butonPanel.add (djathtas);

setPreferredSize (new Dimension(200, 80));
setBackground (Color.cyan);
add (label);
add (butonPanel);
}


Page 175 of 275

//*****************************************************************
// Prezanton nje listener per te dy butonat.
//*****************************************************************
private class ButtonListener implements ActionListener
{
//--------------------------------------------------------------
// Percakton cili buton eshte shtypur dhe vendos tekstin per label
//--------------------------------------------------------------
public void actionPerformed (ActionEvent event)
{
if (event.getSource() == majtas)
label.setText("Majtas");
else
label.setText("Djathtas");
}
}
}
14.2 Check Boxes
Nj check boxe sht nj buton q mund t kthehet on or off duke prdorur
mousin. N t njjtn mnyr funksionon dhe nj grup check boxes ku secili prej
tyre operon i pavarur, e thn m thjesht secili mund t vendoset on ose off dhe
kjo nuk influencon tek t tjert. Programi 14. 3 shfaq dy check boxes dhe nj
label, t cilat prcaktojn far fonti teksi do t shfaqet: bold, italic, t dyja s
bashku apo pa asnj prej tyre. Pra kur check box pr bold t klikohet teksti do t
shfaqet n bold, kur check box pr italic t klikohet dhe check box pr bold t jet
jo i klikuar teksi do t jet n italic, kur t dyja t jen t klikura teksi do t jet
dhe n bold dhe n italic.

Programi 14. 4 tregon GUI pr programin DyOpsione. Si e shihni nj check box
prezantohet nga klasa JCheckBox. Kur check box ndryshon state nga i klikuar n

Page 176 of 275

jo i klikuar ose e anasjellta, ai gjeneron nj ngjarje. Ky program prdor nj klas
Font e cila paraqet nj karakter t veant font, i cili prcaktohet nga emri, tipi dhe
madhsia font. N kt program ne po prdorim Courier font dhe tipi mund t
jet bold, italic ose s bashku bold dhe italic. Metoda itemStateChanged
prcakton far tipi font do t kemi kur nj nga check boxe ndryshon pozicion.
Kjo arrihet pasi do check box konsultohet me metodn isSelected e cila kthen nj
vler boolen. Nse check box bold sht klikuar variabla tipi vendoset bold dhe
nse check box italic sht klikuar konstantja ITALIC shtohet n variabln tipi.
S fundmi fonti i label vendoset n nj font t ri me emrin, tipi dhe madhsin e
tekstit.

Programi 14. 3
//********************************************************************
// DyOpsione.java Author: Gjergji Shaska
//
// Perdorimi i check boxes.
//********************************************************************

import javax.swing.JFrame;

public class DyOpsione
{
//-----------------------------------------------------------------
// Krijimi i programit frame.
//-----------------------------------------------------------------
public static void main (String[] args)
{
JFrame frame = new JFrame ("Dy Opsione");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);


Page 177 of 275

DyOpsionePanel panel = new DyOpsionePanel();
frame.getContentPane().add (panel);

frame.pack();
frame.setVisible(true);
}
}
Output----------------------------------------------------------------------------------------


Programi 14. 4
//********************************************************************
// DyOpsionePanel.java Autor: Gjergji Shaska
//
// Perdorimi i check boxes.
//********************************************************************

import javax.swing.*;

Page 178 of 275

import java.awt.*;
import java.awt.event.*;

public class DyOpsionePanel extends JPanel
{
private JLabel saying;
private JCheckBox bold, italic;

//-----------------------------------------------------------------
// Nje panel dhe nje label qe kontrollon fontin e shkrimit.
//-----------------------------------------------------------------
public DyOpsionePanel()
{
saying = new JLabel ("Bregdeti i Vlores eshte i bukur.");
saying.setFont (new Font ("Courier", Font.PLAIN, 26));

bold = new JCheckBox ("Bold");
bold.setBackground (Color.red);
italic = new JCheckBox ("Italic");
italic.setBackground (Color.red);

StyleListener listener = new StyleListener();
bold.addItemListener (listener);
italic.addItemListener (listener);

add (saying);
add (bold);

Page 179 of 275

add (italic);

setBackground (Color.green);
setPreferredSize (new Dimension(520, 100));
}

//*****************************************************************
// Prezanton listener per te dy check boxes.
//*****************************************************************
private class StyleListener implements ItemListener
{
//--------------------------------------------------------------
// Update tipin e fontit per label.
//--------------------------------------------------------------
public void itemStateChanged (ItemEvent event)
{
int tipi = Font.PLAIN;

if (bold.isSelected())
tipi = Font.BOLD;

if (italic.isSelected())
tipi += Font.ITALIC;

saying.setFont (new Font ("Courier", tipi, 26));
}
}

Page 180 of 275

}
14.3 Radio Buttons
Nj buton radio prdoret me butona t tjer pr t kryer funksione t caktuara.
Zakonisht nj buton radio nuk prdoret i vetm, ai ka kuptim kur ai prdoret me
nj ose disa butona t tjer. Kur njri prej tyre klikohet automatikisht tjetri q
ishte on kthehet off. Prej funksionit q kryen nj buton radio merr dhe emrin, i cili
ka kuptimin e nj butoni radio q ndrron stacionet.
Programi 14. 5 shfaq nj label dhe nj grup butonash radio. Kta butona radio
prcaktojn se kush nga makinat do t shfaqet n label. Kur ne klikojm mbi
butonin Fiat n label do t shfaqet teksti; Fiat stht nj makin Italiane, kur ne
klikojm butonin Benx n label do t shfaqet teksti; Benx stht nj makin
Gjermane dhe kur ne klikojm butonin Ford n label do t shfaqet teksti; Ford
stht nj makin Amerikane.
Klasa tjetr OpsionePanel e programit Programi 14. 6 prcakton dhe shfaq
komponentt GUI. Nj buton radio pezantohet nga klasa JRadioButton. Klasa
ButtonGroup prdoret pr t prcaktuar lidhjen ndrmjet butonave sepse kta
butona radio punojn s bashku. Vini re se secili buton shtohet tek grupi buton
dhe gjithashtu secili buton shtohet n panel. ButtonGroup siguron q nse nj
buton radio sht on ai kthehet off kur nj tjetr buton kthehet on. Metoda
actionPerformed fillimisht gjen burimin duke prdorur metodn getSource dhe e
krahason at me tre butonat radio duke shfaqur tekstin sipas butonit korespondus.
Nse do t krahasonim butonat radio me check boxes do t thoshim se butonat
radio kryejn nj veprim vetm kur ata jan on, ndrsa check boxes kryejn
veprim n t dy rastet on dhe off.

Programi 14. 5
//********************************************************************
// Opsione.java Autor: Gjergji Shaska
//
// Perdorimi i butonave radio.
//********************************************************************

import javax.swing.JFrame;

Page 181 of 275


public class Opsione
{
//-----------------------------------------------------------------
// Krijon programin frame.
//-----------------------------------------------------------------
public static void main (String[] args)
{
JFrame frame = new JFrame ("Opsione");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

OpsionePanel panel = new OpsionePanel();
frame.getContentPane().add (panel);

frame.pack();
frame.setVisible(true);
}
}
Programi 14. 6
//********************************************************************
// OpsionePanel.java Autor: Gjergji Shaska
//
// Perdorimi i butonave radio.
//********************************************************************


Page 182 of 275

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class OpsionePanel extends JPanel
{
private JLabel makinat;
private JRadioButton fiat, benx, ford;
private String fiatmakinat, benxmakinat, fordmakinat;

//-----------------------------------------------------------------
// Vendos nje panel me nje label dhe zgjedhjet
// per butonat radio.
//-----------------------------------------------------------------
public OpsionePanel()
{
fiatmakinat = "Fiat eshte nje makine Italiane.";
benxmakinat = "Benx eshte nje makine Gjermane.";
fordmakinat = "Ford eshte nje makine Amerikane.";

makinat = new JLabel (fiatmakinat);
makinat.setFont (new Font ("Courier", Font.BOLD, 24));

fiat = new JRadioButton ("Fiat", true);
fiat.setBackground (Color.yellow);
benx = new JRadioButton ("Benx");
benx.setBackground (Color.yellow);

Page 183 of 275

ford = new JRadioButton ("Ford");
ford.setBackground (Color.yellow);

ButtonGroup group = new ButtonGroup();
group.add (fiat);
group.add (benx);
group.add (ford);

QuoteListener listener = new QuoteListener();
fiat.addActionListener (listener);
benx.addActionListener (listener);
ford.addActionListener (listener);

add (makinat);
add (fiat);
add (benx);
add (ford);

setBackground (Color.yellow);
setPreferredSize (new Dimension(450, 100));
}

//*****************************************************************
// Prezanto listener per te gjithe butonat radio.
//*****************************************************************
private class QuoteListener implements ActionListener
{

Page 184 of 275

//--------------------------------------------------------------
// Vendos tekstin e label duke pare kush prej butonave
// radio eshte on.
//--------------------------------------------------------------
public void actionPerformed (ActionEvent event)
{
Object source = event.getSource();

if (source == fiat)
makinat.setText (fiatmakinat);
else
if (source == benx)
makinat.setText (benxmakinat);
else
makinat.setText (fordmakinat);
}
}
}

Output----------------------------------------------------------------------------------------

Page 185 of 275



















Page 186 of 275

USHTRIME DHE PROBLEMA

14.1 Modifiko klasn MajtasPanel n
Programi 14. 2 n mnyr t till q label t tregoj Shtyp butonin Majtas ose
Djathtas, paneli t ket prmasat (240, 60) dhe ngjyra e tij t jet blu.
14.2 Modifiko kodin e
Programi 14. 4 n mnyr t till q n label t shfaqet emri dhe mbiemri juaj me
font times new roman dhe madhsi 36. Tregoni kujdes pasi q teksti t
prshtatet me dimensionet e frame duhet t kujdeseni pr dimensionet e tij.
14.3 Kush sht ndryshimi ndrmjet check boxes dhe radio buttons?
14.4 Vreni kodin e mposhtm i prdorur n Programi 14. 6. Kush shte
funksioni i fjals true dhe nse ajo nuk prdoret n kod far rezultati do t
merrnim?
fiat = new JRadioButton ("Fiat", true);

Page 187 of 275




Kapitulli 15


IDENTIFIKIMI I KLASAVE DHE OBJEKTEVE

Ky kapitull do t shpjegoj dizenjimin e object-oriented software. Fillimisht
do t fokusohemi n etapat gjat programimit dhe n identifikimin e klasave
dhe objekteve. Gjithashtu n kte kapitull do t shpjegojm diagramat UML
nj ndihm e madhe n dizenjimin jo vetm n Java por dhe n gjuh t
tjera programimi.



15.1 Identifikimi i Klasave dhe Objekteve
Deri tani programimet tona kan qen t prbra prej nj ose dy klasa por n
vazhdim ne do t kemi programe t prbra prej shum klasash. Mendojeni se sa e
rndsishme sht t krijojm nj skem t zgjidhjes s problemit para se t
fillojm dhe t shkruajm kodin, i cili pothuajse bhet i parealizushm pa nj
dizenjim t till.
Personi apo personat q kan nevoj pr nj software shpesh nuk e kan iden e
programimit por ata kan nj list me krkesa se far funksioni programi duhet
t kryej. Pra e thn ndryshe programuesi para se t filloj t shkruaj nj
program duhet t punoj ngusht me klientin pr t prcaktuar t gjitha krkesat e
klientit dhe se si ato mund t implementohen.
Nj dizenjim softwari tregon, si nj program do ti realizoj kto krkesa. Ky
dizenjim specifikon klasat dhe objektet q do t nevoiten n kt program dhe
prcakton se si ato do t lidhen me njra-tjetrn. far tham m sipr do ta
ilustronim me shembullin e nj inxhinjeri ndrtimi i cili kurr nuk mund t

Page 188 of 275

fillonte punn pr ndrtimin e nj pallati pa pasur m par nj skem t ktij
pallati.
Nj pjes e rndsishme e dizenjimit t object-oriented software sht prcaktimi
i klasave q do t na nevoiten n kt program. Kto klasa prcaktojn objektet
q ne do t menaxhojm n kt program. Zakonisht objektet jan emra, pra ne
mund ta nisim punn ton duke identifukuar emrat, dhe pastaj t mundohemi ti
reduktojm ata pasi jo do objekt do t jet nj klas.
Nj klas prezanton nj grup objektesh t ngjashm. Pra hapi i dyt do t jet
grupimi i ktyre emrave n grupe t ngjashm sipas veorive t tyre, ku secilit
grup do i japim nga nj emr. Kto klasa deklarohen n numrin njjs si: Student,
Flamurtari, Vizato etj t cilat ne i kemi prdorur n kapitujt e kaluar.
Si tham n pjesn hyrse t ktij kapitulli diagramat UML prdoren gjersisht
n dizenjimin e programimit n Java. Emri UML sht Unified Modelin
Language, ku emri i softwarit sht Dia t cilin ju mund ta instaloni nga
interneti. UML tregon shum aspekte t object-oriented programing por n kt
klas ne do t fokusohemi n diagramat e klasave UML, pr t treguar prmbajten
e klasave dhe lidhjet ndrmjet tyre.
Nj diagram UML na ndimon n mnyrn vizuale t prmbajtjes dhe lidhjeve
ndrmjet klasave n nj program. N nj diagram do klas sht prezantuar me
nj drejtkndsh, q ka tre pjes q tregon emrin e klass, variablat dhe metodat.
Shikoni nj shembull t thjesht pr nj diagram UML n Fig. 15. 1, e cila
prmban klasn Regjistrim dhe klasn Student e cila sht e varur nga klasa
kryesore. N klasn Student kemi tre variabla: Emri i cili sht nj variabl pr t
ruajtur emrat e studentve, Nr_studentit q sht nj variabl pr numrin q
disponon do student dhe Departamenti q sht variaba pr tju referuar do
studenti sipas departamentit. N pjesn e tret t klass Student kemi dy metoda;
ruajnumrin dhe toString. Shenja pozitve q prdoret prpara ktyre fjalve tregon
se visibility sht public dhe shenja minus tregon se visibility sht privat.
Shigjeta me vija t ndrprera tregon se njra klas prdor metodat e klass tjetr,
pra klasat jan t varura nga njra-tjetra. Kini parasysh se UML nuk sht
specifike pr programin Java, ajo sht m vete dhe gjuha e saj ka dhe ndryshime
me at t programit Java. N vazhdim kur klasat t bhen shum t ndrlikuara
diagramat UML do t jen shum t nevojshm.

Page 189 of 275


Fig. 15. 1 Diagrami UML

15.2 Variablat dhe Metodat Static
Ne i kemi prdorur variablat static dhe m par por pa i shjeguar n detaje ato.
Nj metod static thrritet nga emri i klass dhe jo nga nj objekt n at klas.
Deklarimi i metodave static bhet nprmjet fjals s rezervuar n Java static.
Deri tani ne kemi par dy kategori t variablave: local variables q deklarohen
brenda nj metode dhe instance variables q deklarohen n nj klas por jo
brenda nj metode.
T gjith objektet e klass kan akses n nj variabl q deklarohet static, q
shpesh thrritet klas variabl. Por nse do t ndryshonim vlern e variabls n
nj objekt vlera e saj do t ndyshonte edhe n pozicionet e tjera ku ajo prdoret,
pra prdorimi i saj do njfar kujdesi sepse pa dashur do ndryshonim vlerat e saj
edhe n pozicione t tjera t programit. Kini parasysh se nj local variable nuk
mund t deklarohet static.
Nj metod pr tu deklaruar static prdor fjaln e rezervuar n Java static. N t
gjith programet q ne kemi par deri tani metoda kryesore deklarohet static dhe
kjo sht e deryruar pr arsyen se metoda kryesore mund t ekzekutohet pa e
deklaruar objektin.
Programi 15. 1 deklaron disa objekte n klasn Fjali dhe i printon ato. N fjalin e
fundit vini re metodn getCount e cila kthen numrin e objekteve Fjali. Programi
15. 2 tregon klasn FjaliNumero. Ne po prdorim nj constructor e cila rrit
variabln numero e cila fillon n zero. Numero sht nj variabl e cila numrron
numrin e deklarimeve Fjali t krijura. Vini re se metoda getCount sht deklaruar
static e cila bn t mundur q kjo metod t arrihet nprmjet emrit t klass n
metodn kryesore.
Programi 15. 1
//********************************************************************
// Fjali.java Autor: Gjergji Shaska

Page 190 of 275

// Perdorimi i static.
//********************************************************************

public class Fjali
{
//-----------------------------------------------------------------
// Krijon disa objekte fjalish dhe i printon ato.
//-----------------------------------------------------------------
public static void main (String[] args)
{
FjaliNumero obj;

obj = new FjaliNumero ("Bregdeti i Vlores eshte i bukur.");
System.out.println (obj);

obj = new FjaliNumero ("UV ka shume studente te mire.");
System.out.println (obj);

obj = new FjaliNumero ("Qe te kesh sukses duhet te punosh shume.");
System.out.println (obj);

obj = new FjaliNumero ("Gjimnazi Ali Demi.");
System.out.println (obj);

obj = new FjaliNumero ("Kete jave Flamurtari fitoi.");
System.out.println (obj);


Page 191 of 275

System.out.println();
System.out.println ("Fjalite e krijuara: " + FjaliNumero.getCount());
}
}
Output----------------------------------------------------------------------------------------

Bregdeti i Vlores eshte i bukur.
UV ka shume studente te mire.
Qe te kesh sukses duhet te punosh shume.
Gjimnazi Ali Demi.
Kete jave Flamurtari fitoi.

Fjalite e krijuara: 5
Programi 15. 2
//********************************************************************
// FjaliNumero.java Autor: Gjergji Shaska
//
// Paraqet nje fjali te vetme string.
//********************************************************************

public class FjaliNumero
{
private String fjali;
private static int numero = 0;

//-----------------------------------------------------------------
// Constructor: Vendos fjalin dhe numeron ato te krijuara.

Page 192 of 275

//-----------------------------------------------------------------
public FjaliNumero (String str)
{
fjali = str;
numero++;
}

//-----------------------------------------------------------------
// Kthen fjalin si nje string.
//-----------------------------------------------------------------
public String toString()
{
return fjali;
}

//-----------------------------------------------------------------
// Kthen numrin e variables numero.
//-----------------------------------------------------------------
public static int getCount ()
{
return numero;
}
}





Page 193 of 275

USHTRIME DHE PROBLEMA

15.1 Identifikoni klasat dhe objektet dhe ndrtoni nj diagram UML pr
problemin n vazhdim. Nj universitet krkon t ndrtoj nj software pr
zyrn e regjistrimit, e cila t jet e organizuar sipas tre departamenteve.
Departamenti i shkencave ekzakte i cili ka dy zyra regjistrimi, departamenti i
elektrikes dhe kompiuter science q ka tre zyra regjistrimi dhe departamenti i
gjuheve t huaja q ka nj zyr regjistrimi. T dhnat pr do student pr tu
regjistruar jan; emri, numri i studentit, dega dhe viti.
15.2 far do t ndoth nse Programi 15. 2 nuk e deklaron metodn getCount
static? Shpjegoni prgjigjen tuaj.

Page 194 of 275




Kapitulli 16


MARRDHNIET NDRMJET KLASAVE

Klasat n software kan disa mnyra lidhjesh me njra-tjetrn, por tre prej
tyre jan m t prdorshmet: dependency, aggregation dhe inheritance.
Ne kemi prdorur dependency shum her n kapitujt e kaluar ku nj klas
sht e varur nga nj tjetr, por n kt kapitull do t shpjegojm kur nj
klas sht e varur nga vetja e saj.


16.1 Dependency
Nse do i referoheshim diagramit UML t prdorur n kapitullin 15 do t thoshim
se klasa Regjistrim prdor klasn Student, e cila nnkupton q t paktn nj prej
metodave t klass Regjistrim prdor metodn e klass Student. Nse metoda e
klass Student deklarohet static ather klasa Regjistrim i drejtohet asaj direkt me
emrin e saj. N prgjithsi ne mundohemi t kemi nj numr sa m t vogl t
klasave t varura nga njra-tjetra sepse kjo do na lehtsonte punn si programus.
Prve lidhjeve t varsis ndrmjet dy klasave kemi dhe rastin kur nj klas varet
nga vetvetja, q do t thot se nj objekt i nj klase bashkpunon me nj objekt
tjetr t s njjts klas. Le t shikojm nj shembull pr ta kuptuar kt ide.
Programi 16. 1 krijon dy objekte t cilt prezantojn dy numra racional dhe
kryejn llogaritje me ta. Klasa RacionalNumer n Programi 16. 2 ka disa metoda
pr kryerjen e llogaritjeve si mbledhja, zbritja, shumzimi dhe pjestimi. Vreni
se si metodat e ksaj klase prdorin objekte t po ksaj klase. Nse do ta provoni
kt program do t shihni se prve nj shigjete me vija t ndrprera q tregon
lidhjen ndrmjet klass kryesore Test dhe Klass RacionalNumer gjendet dhe nj
tjetr shigjet e till me fillim dhe mbarim n klasn RacionalNumer, e cila tregon

Page 195 of 275

se kjo klas sht e varur nga vetvetja. Nj tjetr metod e prdorur n kt klas
sht isLike, e cila nuk bn gj tjetr por vetm sa krahason dy numrat racional
nse ata jan t barabart. N metodn e fundit t programit vini re se kemi
prdorur deklarimin private, i cili nuk lejon prdorimin e ksaj metode jasht
klass RacionalNumer, kjo klas prdoret vetm pr t ndimuar n llogaritje n
kt klas.
Programi 16. 1
//********************************************************************
// Test.java Autor: Gjergji Shaska
//
// Perdorimi i disa objekteve Racional.
//********************************************************************

public class Test
{
//-----------------------------------------------------------------
// Krijon disa numra racional.
//-----------------------------------------------------------------
public static void main (String[] args)
{
RacionalNumer r1 = new RacionalNumer (5, 7);
RacionalNumer r2 = new RacionalNumer (2, 3);
RacionalNumer r3, r4, r5, r6, r7;

System.out.println ("Numri i pare racional: " + r1);
System.out.println ("Numri i dyte racional: " + r2);

if (r1.baraz(r2))
System.out.println ("r1 dhe r2 jane te barabarte.");

Page 196 of 275

else
System.out.println ("r1 dhe r2 nuk jane te barabarte.");

r3 = r1.anasjellt();
System.out.println ("Anasjellti i r1 eshte: " + r3);

r4 = r1.add(r2);
r5 = r1.zbret(r2);
r6 = r1.shumezo(r2);
r7 = r1.pjeseto(r2);

System.out.println ("r1 + r2: " + r4);
System.out.println ("r1 - r2: " + r5);
System.out.println ("r1 * r2: " + r6);
System.out.println ("r1 / r2: " + r7);
}
}
Output----------------------------------------------------------------------------------------
Numri i pare racional: 5/7
Numri i dyte racional: 2/3
r1 dhe r2 nuk jane te barabarte.
Anasjellti i r1 eshte: 7/5
r1 + r2: 29/21
r1 - r2: 1/21
r1 * r2: 10/21
r1 / r2: 15/14
Programi 16. 2

Page 197 of 275

//********************************************************************
// RacionalNumer.java Autor: Gjergji Shaska
//
// Prezanton nje numer racional me numerusin dhe emerusin.
//********************************************************************

public class RacionalNumer
{
private int numerus, emerus;

//-----------------------------------------------------------------
// Constructor: Vendos nje numer racional duke u siguruar
// jo 0 ne emerus.
//-----------------------------------------------------------------
public RacionalNumer (int numer, int emer)
{
if (emer == 0)
emer = 1;

// Bene numerusin te ruaj shenjen.
if (emer < 0)
{
numer = numer * -1;
emer = emer * -1;
}

numerus = numer;

Page 198 of 275

emerus = emer;

reduce();
}

//-----------------------------------------------------------------
// Kthen numerusin e ketij numri racional.
//-----------------------------------------------------------------
public int getNumerus ()
{
return numerus;
}

//-----------------------------------------------------------------
// Kthen emerusin e ketij numri racional.
//-----------------------------------------------------------------
public int getEmerus ()
{
return emerus;
}

//-----------------------------------------------------------------
// Kthen anasjelltin e ketij numri raciona.
//-----------------------------------------------------------------
public RacionalNumer anasjellt ()
{
return new RacionalNumer (emerus, numerus);

Page 199 of 275

}

//-----------------------------------------------------------------
// Shton numrin racional.
//-----------------------------------------------------------------
public RacionalNumer add (RacionalNumer op2)
{
int emerusZakonisht = emerus * op2.getEmerus();
int numerus1 = numerus * op2.getEmerus();
int numerus2 = op2.getNumerus() * emerus;
int shum = numerus1 + numerus2;

return new RacionalNumer (shum, emerusZakonisht);
}

//-----------------------------------------------------------------
// Zbret numrin racional.
//-----------------------------------------------------------------
public RacionalNumer zbret (RacionalNumer op2)
{
int emerusZakonisht = emerus * op2.getEmerus();
int numerus1 = numerus * op2.getEmerus();
int numerus2 = op2.getNumerus() * emerus;
int diferenca = numerus1 - numerus2;

return new RacionalNumer (diferenca, emerusZakonisht);
}

Page 200 of 275


//-----------------------------------------------------------------
// Shumezon kete numer rational.
//-----------------------------------------------------------------
public RacionalNumer shumezo (RacionalNumer op2)
{
int numer = numerus * op2.getNumerus();
int emer = emerus * op2.getEmerus();

return new RacionalNumer (numer, emer);
}

//-----------------------------------------------------------------
// Pjeseto kete numer rational
//-----------------------------------------------------------------
public RacionalNumer pjeseto (RacionalNumer op2)
{
return shumezo (op2.anasjellt());
}

//-----------------------------------------------------------------
// Percakto nese ky numer racional eshte i barabarte ma ate
// te kaluar si parameter.
//-----------------------------------------------------------------
public boolean baraz (RacionalNumer op2)
{
return ( numerus == op2.getNumerus() &&

Page 201 of 275

emerus == op2.getEmerus() );
}

//-----------------------------------------------------------------
// Kthen kete numer si string.
//-----------------------------------------------------------------
public String toString ()
{
String result;

if (numerus == 0)
result = "0";
else
if (emerus == 1)
result = numerus + "";
else
result = numerus + "/" + emerus;

return result;
}

//-----------------------------------------------------------------
// Pjeseton te dy numerusat.
//-----------------------------------------------------------------
private void reduce ()
{
if (numerus != 0)

Page 202 of 275

{
int zakonisht = gcd (Math.abs(numerus), emerus);

numerus = numerus / zakonisht;
emerus = emerus / zakonisht;
}
}
//-----------------------------------------------------------------
// Algoritmi i Euclid.
//-----------------------------------------------------------------
private int gcd (int num1, int num2)
{
while (num1 != num2)
if (num1 > num2)
num1 = num1 - num2;
else
num2 = num2 - num1;
return num1;
}
}

16.2 Aggregation
Aggregation sht kur nj objekt sht ndrtuar nga objekte t tjera. Mendojeni
kt si nj shtpi e cila sht e ndrtuar nga tavolina, karriket, kolltukt etj. Secila
prej ktyre pjesve konsiderohet si nj objekt m vete. N kt rast kur nj pjes
sht e prbr nga objekte t tjera ne themi se shtpia sht nj aggregation. N
Java ne prcaktojm nj aggregation si nj objekt i cili ka referenc tek objekte t
tjera. Po ta shohim me kujdes aggregation sht nj tip i veant varsie.

Page 203 of 275

Le t shohim nj shembull. Programi 16. 3 krijon dy objekte Student ku secili
sht i prbr nga dy adresa; njra adresa e shtpis dhe tjetra adresa e shkolls.
Metoda kryesore i krijon kta objekte Student dhe i printon. Klasa Student n
Programi 16. 4 tregon nj student, i cili i merr vlerat nga klasa Adresa. Programi
16. 5 tregon klasn Adresa e cila prezanton adresn sipas rruga, qyteti, shteti dhe
numri postar. Vini re se asgj t veant n klasn Adresa nuk ka q t tregoj se
ajo sht pjes e objektit Student, klasa Adresa mund t prdoret n do situat ku
nevoitet informacioni i adress.
Vini re se nj mnyr e veant this prdoret n constructor e klass Adresa. Fjala
this sht nj fjal e rezervuar n Java e cila i lejon nj objekti ti referohet
vetvetes. Vini re se duke e krahasuar me constructor e klass Student e cila prdor
tet variabla, constructor e klass Adresa prdor vetm katr variabla. Kjo
sht nj mnyr shum e prdorshme n programimin n Java e cila na krijon ne
lehtsira n gjetjen e nj numri m t vogl variablash. Vini re se emri i deklaruar
dhe emri i prdorur n constructor sht i njjt the mnyra e deklarimit sht:
this.rruga = rruga;
Programi 16. 3
//********************************************************************
// Struktura.java Autor: Gjergji Shaska
//
// Perdorimi i klasave aggregate.
//********************************************************************

public class Struktura
{
//-----------------------------------------------------------------
// Krijon disa objekte Adresa dhe Student dhe i printon.
//-----------------------------------------------------------------
public static void main (String[] args)
{
Adresa shkoll = new Adresa ("Ll.Isa Boletini,", "Vlore",

Page 204 of 275

"Albania", 2134);

Adresa gjShtepi = new Adresa ("Ll. Isa Boletini", "Vlore",
"Albania", 3456);
Student gjergji = new Student ("Gjergji", "Shaska", gjShtepi, shkoll);


Adresa dShtepi = new Adresa ("Ll.Pallatet Gintash", "Tirane",
"Albania", 5678);
Student dritan = new Student ("Dritan", "Lena", dShtepi, shkoll);

System.out.println (gjergji);
System.out.println ();
System.out.println (dritan);
}
}
Output----------------------------------------------------------------------------------------
Gjergji Shaska
Adresa shtepis:
Ll. Isa Boletini
Vlore, Albania 3456
Adresa shkolles:
Ll.Isa Boletini,
Vlore, Albania 2134

Dritan Lena
Adresa shtepis:

Page 205 of 275

Ll.Pallatet Gintash
Tirane, Albania 5678
Adresa shkolles:
Ll.Isa Boletini,
Vlore, Albania 2134
Programi 16. 4
//********************************************************************
// Student.java Autor: Gjergji Shaska
//
// Prezanto nje student.
//********************************************************************

public class Student
{
private String emri, mbiemri;
private Adresa shtepiAdres, shkollAdres;

//-----------------------------------------------------------------
// Constructor: Vendos studentin me vlerat spcifike.
//-----------------------------------------------------------------
public Student (String firstName, String lastName, Adresa shtepi,
Adresa shkoll)
{
emri = firstName;
mbiemri = lastName;
shtepiAdres = shtepi;
shkollAdres = shkoll;

Page 206 of 275

}

//-----------------------------------------------------------------
// Kthen nje string te objektit Student.
//-----------------------------------------------------------------
public String toString()
{
String rezultat;

rezultat = emri + " " + mbiemri + "\n";
rezultat += "Adresa shtepis:\n" + shtepiAdres + "\n";
rezultat += "Adresa shkolles:\n" + shkollAdres;

return rezultat;
}
}

Programi 16. 5
//********************************************************************
// Adresa.java Autor: Gjergji Shaska
//
// Prezanton adresen e rruges.
//********************************************************************

public class Adresa
{
private String rruga, qytet, shteti;

Page 207 of 275

private long numri;

//-----------------------------------------------------------------
// Constructor: Vendos adresen me vlerat specifike.
//-----------------------------------------------------------------
public Adresa (String rruga, String qytet, String shteti, long numri)
{
this.rruga = rruga;
this.qytet = qytet;
this.shteti = shteti;
this.numri = numri;
}

//-----------------------------------------------------------------
// Kthen pershkrimin e objektit Adresa.
//-----------------------------------------------------------------
public String toString()
{
String resultat;

resultat = rruga + "\n";
resultat += qytet + ", " + shteti + " " + numri;

return resultat;
}
}

Page 208 of 275

Pr kt shembull n vazhdim po japim gjithashtu dhe diagramin UML ku tashm
ju keni njohurit e duhura pr ta kuptuar at.

Fig. 16. 1 Diagrama UML pr shembullin n Programi 16. 3.
















Page 209 of 275

USHTRIME DHE PROBLEMA

16.1 Krijo diagramn UML pr Programi 16. 1 dhe Programi 16. 2.
16.2 Ndryshoni Programi 16. 4 t klass Student n mnyr t till q pr
constructor t prdorim formn this.



Page 210 of 275




Kapitulli 17


INTERFACES DHE ENUMERATED

Ne prdorim termin interface pr tu referuar tek nj metod publike prej
s cils ne mund t bashkpunojm me nj objekt. Ky sht nj prkufizim i
prgjithshm pr interfaces, por ai qndron po kaq i vrtet dhe pr
prkufizimin e saj n programin Java. Ky kapitull do t vazhdoj me
shjegimin e tipeve enumerated duke i shpjeguar ato si nj tip special klase.


17.1 Interfaces
Nj interface sht nj grumbullim metodash abstrakte q nuk nuk mund t
deklarohen fillimisht. Nj metod abstrakte sht nj metod e cila nuk ka kod n
strukturn e saj. Q ta kuptoni kt shikoni klasn n Programi 17. 3 e cila tregon
nj interface q quhet Kompleks. Ajo prmban dy metoda abstrakte: setKompleks
dhe getKompleks. Nj metod abstrakte deklarohet si e till nga fjala e rezervuar
n Java abstract, por nuk sht e nevojshme pr t, t deklarohet si e till kur ajo
prdoret me interfaces. Klasa q implementon nj interface prdor fjaln e
rezervuar n Java implements e ndjekur nga emri interface. Shikoni se si kjo
prdoret n Programi 17. 2 dhe t dyja metodat setKompleks dhe getKompleks
implementohen. Vreni se klasa Test prdor dhe metoda t tjera, pra interface
garanton q klasa implementon disa metoda por ajo nuk e pengon at pr t pasur
metoda t tjera. Gjithashtu nj klas mund t implementoj m shum se nj
interface, duke i ndar ato me presje.



Page 211 of 275

Programi 17. 1
//********************************************************************
// Test.java Autor: Gjergji Shaska
//
// Perdorimi i klases qe implementon nje interface.
//********************************************************************

import java.util.Scanner;

public class Test
{
//-----------------------------------------------------------------
// Paraqet nje test te shkurter.
//-----------------------------------------------------------------
public static void main (String[] args)
{
Pyetje p1, p2, p3;
String mundesi;

Scanner scan = new Scanner (System.in);

p1 = new Pyetje ("Kush eshte qyteti me i bukur i botes?",
"Vlora");
p1.setKompleks (4);


Page 212 of 275

p2 = new Pyetje ("Kush eshte presidenti Shqiperis?",
"z.Bamir Topi");
p2.setKompleks (10);

p3 = new Pyetje ("Kush eshte kryetari i bashkise se qytetit te Vlores?",
"z.Shpetim Gjika");
p3.setKompleks (5);

System.out.print (p1.getPyetje());
System.out.println (" (Niveli: " + p1.getKompleks() + ")");
mundesi = scan.nextLine();
if (p1.pergjigjeSakt(mundesi))
System.out.println ("Korrekt");
else
System.out.println ("Jo, pergjigja eshte " + p1.getAnswer());

System.out.print (p2.getPyetje());
System.out.println (" (Niveli: " + p2.getKompleks() + ")");
mundesi = scan.nextLine();
if (p2.pergjigjeSakt(mundesi))
System.out.println ("Korrekt");
else
System.out.println ("Jo, pergjigja eshte " + p2.getAnswer());

System.out.print (p3.getPyetje());

Page 213 of 275

System.out.println (" (Niveli: " + p3.getKompleks() + ")");
mundesi = scan.nextLine();
if (p3.pergjigjeSakt(mundesi))
System.out.println ("Korrekt");
else
System.out.println ("Jo, pergjigja eshte " + p3.getAnswer());
}
}
Output----------------------------------------------------------------------------------------
Kush eshte qyteti me i bukur i botes? (Niveli: 4)
Vlora
Korrekt
Kush eshte presidenti Shqiperis? (Niveli: 10)
z.Bamir Topi
Korrekt
Kush eshte kryetari i bashkise se qytetit te Vlores? (Niveli: 5)
z.Shpetim Gjika
Korrekt
Programi 17. 2
//********************************************************************
// Pyetje.java Author: Gjergji Shaska
//
// Prezanton pyetjen dhe pergjigjen.
//********************************************************************

public class Pyetje implements Kompleks

Page 214 of 275

{
private String pyetje, pergjigje;
private int kompleksLevel;

//-----------------------------------------------------------------
// Constructor: Vendos pyetjen.
//-----------------------------------------------------------------
public Pyetje (String pyetje, String pergjigje)
{
this.pyetje = pyetje;
this.pergjigje = pergjigje;
kompleksLevel = 1;
}

//-----------------------------------------------------------------
// Vendos nivelin kompleks per kete pyetje.
//-----------------------------------------------------------------
public void setKompleks (int nivel)
{
kompleksLevel = nivel;
}

//-----------------------------------------------------------------
// Kthen nivelin kompleks per kete pyetje.
//-----------------------------------------------------------------
public int getKompleks()
{

Page 215 of 275

return kompleksLevel;
}

//-----------------------------------------------------------------
// Kthen pyetjen.
//-----------------------------------------------------------------
public String getPyetje()
{
return pyetje;
}

//-----------------------------------------------------------------
// Kthen pergjigjen per kete pyetje.
//-----------------------------------------------------------------
public String getAnswer()
{
return pergjigje;
}

//-----------------------------------------------------------------
// Nese pergjigja eshte e sakte ktheje te vertete.
//-----------------------------------------------------------------
public boolean pergjigjeSakt (String pergjiStudent)
{
return pergjigje.equals(pergjiStudent);
}


Page 216 of 275

//-----------------------------------------------------------------
// Kthen pergjigjen dhe pyetjen si string.
//-----------------------------------------------------------------
public String toString()
{
return pergjigje + "\n" + pyetje;
}
}
Programi 17. 3
//********************************************************************
// Kompleks.java Autor: Gjergji Shaska
//
// Prezanton interface per nje objekt.
//********************************************************************

public interface Kompleks
{
public void setKompleks (int kompleks);
public int getKompleks();
}
Libraria standarte n Java prmban compare interface q prcaktohet n
java.lang.package. Compare interface prmban vetm nj metod compareTo e
cila merr nj objekt si parametr dhe kthen nj integer. Shikoni kodin n vazhdim,
nse vlera e compareTo sht negative ather x sht m i vogl se y, nse vlera
e compareTo sht zero ather x sht i barabart me y dhe nse vlera e
compareTo sht pozitive ather x sht m i math se y.
if (x.compareTo(y) < 0)
System.out.println (x eshte me i vogel se y);

Page 217 of 275

17.2 Enumerated
Enumerated sht nj tip i veant klase ku vlerat e saj jan objekte. Shikoni
kodin n vazhdim se si nj klas enumerate deklarohet.
enum Ditet {hene, marte, merkur, enjte, premte, shtune, diele}
Nse gjat programit ne do t deklarojm nj variabl, le t themi psh variabln
dita ather ajo do t deklarohet n formn:
Ditet dita;
N kte rast variabla dita mund ti referohet vetm vlerave t ndodhura n Ditet,
pra ajo mund t marri vetm vlerat: hene, marte, merkur, enjte, premte, shtune
dhe diele.
Programi 17. 4 deklaron nj tip enumerate duke prdorur fjaln e rezervuar n
Java enum. Pra si e shpjeguam m lart variabla ditet mund t marri si vler
vetm nj nga ditet e javes nga e hna n t dieln. do vler n listn e vlerave
t enumerated prfshihet n constructor, e cila e kalon at n nj karakter string q
stored n variabln numer.

Programi 17. 4
//********************************************************************
// Ditet.java Autor: Gjergji Shaska
//
// Enumerate vlerat e Ditet.
//********************************************************************

public enum Ditet
{
hene ("E Hena eshte dita e pare e javes."),
marte ("E Marta eshte dita e dyte e javes."),
merkur ("E Merkura eshte dita e trete e javes."),
enjte ("E Enjtja eshte dita e katert e javes."),

Page 218 of 275

premte ("E Premtja eshte dita e peste e javes."),
shtune ("E Shtuna eshte dita e gjashte e javes."),
diele ("E Diela eshte dita e shtate e javes.");

private String numer;

//-----------------------------------------------------------------
// Constructor: Vendos secilen vlere ne nje string.
//-----------------------------------------------------------------
Ditet (String ditet)
{
numer = ditet;
}

//-----------------------------------------------------------------
// Kthe numer mesazhin per kete vlere.
//-----------------------------------------------------------------
public String getNumer()
{
return numer;
}
}
Programi 17. 5
//********************************************************************
// Java.java Autor: Gjergji Shaska
//
// Perdorimi i enumerated.

Page 219 of 275

//********************************************************************

public class Java
{
//-----------------------------------------------------------------
// Merre vlerat e enumerated Ditet.
//-----------------------------------------------------------------
public static void main (String[] args)
{
for (Ditet ditet : Ditet.values())
System.out.println (ditet + "\t" + ditet.getNumer());
}
}
Output----------------------------------------------------------------------------------------
hene E Hena eshte dita e pare e javes.
marte E Marta eshte dita e dyte e javes.
merkur E Merkura eshte dita e trete e javes.
enjte E Enjtja eshte dita e katert e javes.
premte E Premtja eshte dita e peste e javes.
shtune E Shtuna eshte dita e gjashte e javes.
diele E Diela eshte dita e shtate e javes.






Page 220 of 275

USHTRIME DHE PROBLEMA

17.1 Shkruaj kodin ku testi pr studentt do t ket pes pyetje.
1) Kush eshte kryeqyteti i Italis?
2) Kush eshte kryeqyteti i Francs?
3) Kush eshte kryeqyteti i Gjermanis?
4) Kush eshte kryeqyteti i Spanjs?
5) Kush eshte kryeqyteti i Anglis?
17.2 Modifiko kodin n Programi 17. 4 n mnyr t till q output t printoj
vetm emrat e stinve dhe t prdoret enumerate:
enum Stint { pranvera, vera, vjeshta, dimri}
17.3 Studioni lidhjet e klasave dhe metodave pr UML n vazhdim dhe formuloni
nj program ku t tregoni se far funksioni do t kryej programi. Shpjegoni
do klas, variabl dhe metod t diagrams UML.

Page 221 of 275




Kapitulli 18


PRDORIMI I ARRAYS

Gjat programimit ne shpesh duam ti organizojm objektet n mnyr t
till q t jet kollaj t ket akses dhe ti modifikosh ato. Kjo ide sht
shum e rndsishme kur ne duam t menaxhojm nj numr t math
vlerash, le t themi psh 1000 apo m shum t dhna. N kt kapitull ne do
t flasim pr arrays t cilat jan komponent baz jo vetm pr gjuhn Java
por pr shumicn e gjuhve t nivelit t lart.



18.1 Deklarimi dhe Prdorimi i Arrays
Nj array sht nj kontenier i cili mban nj numr t caktuar vlerash. Array jan
shum t prdorshme jo vetm n gjuhn Java por dhe n shumicn e gjuhve t
nivelit t lart, pasi ato na lejojn ne si programus t kemi akses dhe modifikojm
t dhnat. do vler e array quhet element dhe do numr q korespondon me
secilin element quhet index. Referohuni Fig. 18. 1 pr t kuptuar m mir iden
dhe prbrsit e array. N kt array emri i saj sht numer, elementt e array
jan 37, 23, ......79, dhe index pr array jan 0, 1, . . . 9. Vini re numrin pr
indexin e par i cili sht 0 dhe numrin pr indexin e fundit i cili sht 9, pra nj
m pak nga numri i elementve t arrays i cili sht 10. Pr ta prgjithsuar kt
ide themi se indexi pr do array fillon me 0 dhe mbaron me n-1, ku n sht
numri i elementeve t array. Vini re kodin e mposhtm se si shkruhet pr
elementin e dyt t array t quajtur numr.
numr [1] = 23;

Page 222 of 275

vlera
numr 37 23 56 36 54 13 21 89 65 79
0 1 2 3 4 5 6 7 8 9
index
Fig. 18. 1 Nj array e quajtur numr.
Arrays jan objekte t cilt duhen deklaruar. Si dhe deklarimet e variablave arrays
kan dy pjes: tipin dhe emrin. Vreni m posht se si array me emrin numri
deklarohet n mnyra t ndryshme.
int[] numri;
byte[] numri;
short[]numri;
long[]numri;
float[]numri;
double[]numri;
boolean[]numri;
char[]numri;
String[]numri;

T gjitha vlera e ruatura n nj array kan t njjtin tip, q do t thot psh se vlerat
e array duhet t jen t gjitha int ose byte por ato nuk mund t jen dhe int dhe
byte. Madhsia e array e cila tregohet me vlern brenda kllapave nuk sht pjes e
tipit t saj. Nse do i referoheshim shembujve q dham m sipr madhsia e
ktyre array nuk sht e prcaktuar. Nse do t donim nj array me madhsi t
caktuar, le t themi me 10 element, ather do t kishim deklarimin: int [10].
Gjithashtu nj tjetr mnyr pr t deklaruar array sht duke i vendosur kllapat
pas emrit t array si: int numri []. Kjo mnyr compilet pa gabime n programin
Java, por kjo mnyr nuk sht shum e prdorshme dhe ne do t mundohemi t
mos e prdorim.
Nj prej mnyrave pr t krijuar nj array, e cila sht dhe m e prdorshmja sht
duke prdorur fjaln e rezervuar n Java new. Fjalia e mposhtme tregon se si nj
array e tipit integer me 10 element krijohet.
int [] numri = new int [10];
Fjalit n vazhdim tregojn se si mund t vendosim vlera n elementt e nj array.
Pra n elementin e par sht vendosur 10, n t dytin 20, n t tretin 30 e kshtu
me radh.
numri[0] = 10; // elementi pare
numri [1] = 20; // elementi dyte
numri [2] = 30; // etj


Page 223 of 275

Nj tjetr mnyr pr t deklaruar nj array sht duke i deklaruar t gjitha vlerat
e saj si nj list. Ideja sht e njjt me deklarimin e nj variable, vetm se array
krkon disa vlera pr tu deklaruar. N kt rast numri i elementve t saj do t jet
numri i vlerave t vendosura n array, duke ju referuar shembullit t mposhtm
themi se kemi 4 element. Vini re llojin e kllapave t prdorura n kt rast.
int [] numri = { 35, 43, 30, 40};
Le t shohim nj shembull t thjesht n Programi 18. 1 ku klasa List krijon nj
erray me 10 element, vendos n secilin element nga nj vler dhe i printon kto
vlera.

Programi 18. 1
//********************************************************************
// List.java Autor: Gjergji Shaska
//
// Perdorimi i array duke vendosur cdo vlere.
//********************************************************************

class List {
public static void main(String[] args) {
int[] list; // deklaron nje array of integers

list = new int[10]; // Madhesia e array eshte 10 elements

list[0] = 10; // vendos vleren 10 per elementin e pare
list[1] = 20; // vendos vleren 20 per elementin e dyte
list[2] = 30; // etj
list[3] = 40;
list[4] = 50;
list[5] = 60;

Page 224 of 275

list[6] = 70;
list[7] = 80;
list[8] = 90;
list[9] = 100;

// Printon vlerat per secilin index
System.out.println("Elementi per index 0: " + list[0]);
System.out.println("Elementi per index 1: " + list[1]);
System.out.println("Elementi per index 2: " + list[2]);
System.out.println("Elementi per index 3: " + list[3]);
System.out.println("Elementi per index 4: " + list[4]);
System.out.println("Elementi per index 5: " + list[5]);
System.out.println("Elementi per index 6: " + list[6]);
System.out.println("Elementi per index 7: " + list[7]);
System.out.println("Elementi per index 8: " + list[8]);
System.out.println("Elementi per index 9: " + list[9]);
}
}
Output----------------------------------------------------------------------------------------
Elementi per index 0: 10
Elementi per index 1: 20
Elementi per index 2: 30
Elementi per index 3: 40
Elementi per index 4: 50
Elementi per index 5: 60
Elementi per index 6: 70

Page 225 of 275

Elementi per index 7: 80
Elementi per index 8: 90
Elementi per index 9: 100
Nj tjetr shembull prsri i thjesht jepet n Programi 18. 2, ku programi krijon
nj array t quajtur list q ka 15 element. do her q for loop ekzekutohet vlerat
rriten me 5, prve elementit t tet dhe t nnt ku vlerat e tyre ndryshohen n
kod (vini re kodin pr kt).
Programi 18. 2
//********************************************************************
// ForArray.java Autor: Gjergji Shaska
//
// Deklarimi dhe perdorimi i array.
//********************************************************************

public class ForArray
{
//-----------------------------------------------------------------
// Krijon nje array, vendos vlerat, modifikon dy vlera dhe i print.
//-----------------------------------------------------------------
public static void main (String[] args)
{
final int MAKSIMUM = 15, SHUMEZO = 5;

int[] list = new int[MAKSIMUM]; // deklaron array me emrin list

// Vlerat e array
for (int index = 0; index < MAKSIMUM; index++)
list[index] = index * SHUMEZO;

Page 226 of 275


list[7] = 77; // ndryshon vleren e elementit te shtate
list[8] = 88; // ndryshon vleren e elementit te shtate
// Printon vlerat e array
for (int vlera : list)
System.out.print (vlera + " ");
}
}
Output----------------------------------------------------------------------------------------
0 5 10 15 20 25 30 77 88 45 50 55 60 65 70
Programi Programi 18. 3 lexon 5 integers t hedhur n program nga prdoruesi
dhe i printon kta numra duke filluar nga fundi. Vini re prdorimin e dy for loop:
e para lexon duke filluar nga index 0, 1, 2, 3, 4 dhe tjetra lexon duke filluar nga
indexi m i madh 4, 3, 2, 1, 0.
Programi 18. 3
//********************************************************************
// Mbrampsht.java Autor: Gjergji Shaska
//
// Demostrimi i index array.
//********************************************************************

import java.util.Scanner;

public class Mbrampsht
{
//-----------------------------------------------------------------
// Lexon numrat e futur nga perdorusi, i ruan ne nje array,
// printon ata mbrapsht.

Page 227 of 275

//-----------------------------------------------------------------
public static void main (String[] args)
{
Scanner scan = new Scanner (System.in);

double[] numerat = new double[5];

System.out.println ("Madhesia e array eshte: " + numerat.length);

for (int index = 0; index < numerat.length; index++)
{
System.out.print ("Fusni numrin " + (index+1) + ": ");
numerat[index] = scan.nextDouble();
}

System.out.println ("Numrat mbrapsht jane:");

for (int index = numerat.length-1; index >= 0; index--)
System.out.print (numerat[index] + " ");
}
}
Output----------------------------------------------------------------------------------------
Madhesia e array eshte: 5
Fusni numrin 1: 32.47
Fusni numrin 2: 23
Fusni numrin 3: 54.3
Fusni numrin 4: 67

Page 228 of 275

Fusni numrin 5: 97.543
Numrat mbrapsht jane:
97.543 67.0 54.3 23.0 32.47

18.2 Objektet Arrays
Deri tani ne prdorm array pr t ruajtur data primitive si psh integers, por nj
array mund t ket objekte ku secili prej tyre mund t ket disa variabla dhe
metoda q i prdor kta objekte. Mbani mend se nj array n vetvete sht nj
objekt, pra kur ne ruajm nj objekt n nj array secili element sht nj objekt n
vetvete.
Shikoni Programi 18. 4 i cili krijon nj array me objekte Nota dhe i printon ato.
N kt klas kemi krijuar nj list array me emrin nota duke prdorur fjaln new.
T gjitha pjest n Programi 18. 5 tashm jan t njojtura pr ju, kshtu q ne nuk
po vazhdojm me shpjegimin e pjesve prbrse t tij. Ky program prezanton
notat e nxnsve t klass s par fillore dhe kthen variablat notat dhe min.
Programi 18. 4
//********************************************************************
// Mesatarja.java Autor: Gjergji Shaska
//
// Perdorimi i objektit array.
//********************************************************************

public class Mesatarja
{
//-----------------------------------------------------------------
// Krijon nje objekt Nota dhe e printon.
//-----------------------------------------------------------------
public static void main (String[] args)
{
Nota[] nota =

Page 229 of 275

{
new Nota("Te lumte dora e vogel", 95),
new Nota("Flamur", 90),
new Nota("Duhet te permirsohesh", 70),
new Nota("Dobet", 60),
new Nota("Ngeles", 50)
};

for (Nota shkronjaNota : nota)
System.out.println (shkronjaNota);
}
}
Output----------------------------------------------------------------------------------------
Te lumte dora e vogel 95
Flamur 90
Duhet te permirsohesh 70
Dobet 60
Ngeles 50

Programi 18. 5
//********************************************************************
// Nota.java Autor: Gjergji Shaska
//
// Notat e shkolles.
//********************************************************************

public class Nota

Page 230 of 275

{
private String notat;
private int min;

//-----------------------------------------------------------------
// Constructor: Vendos objektin Nota me noten specifike.
//-----------------------------------------------------------------
public Nota (String notat, int min)
{
this.notat = notat;
this.min = min;
}

//-----------------------------------------------------------------
// Kthen nje string te notave.
//-----------------------------------------------------------------
public String toString()
{
return notat + "\t" + min;
}

//-----------------------------------------------------------------
// Metoda vendos Notat.
//-----------------------------------------------------------------
public void setNotat (String emri)
{
notat = emri;

Page 231 of 275

}

//-----------------------------------------------------------------
// Metoda vendos.
//-----------------------------------------------------------------
public void setMinimum (int posht)
{
min = posht;
}

//-----------------------------------------------------------------
// Metoda merr.
//-----------------------------------------------------------------
public String getName()
{
return notat;
}

//-----------------------------------------------------------------
// Minimum akses.
//-----------------------------------------------------------------
public int getMinimum()
{
return min;
}
}

Page 232 of 275

Le ta mbyllim kt kapitull me nj tjetr shembull disi m t vshtir por q
prmbleth pothuajse t gjitha njohurit e msuara n kt kapitull pr array.
Programi 18. 6 tregon klasn Muzik e cila prmban metodn kryesore q krijon,
modifikon dhe ekzaminon nj CD. do CD q shtohet n kolleksion ka titullin,
emrin e artistit, mimin pr CD dhe numrin.
Programi 18. 7 tregon klasn CDMuzik e cila prmban nj array t objektit CD q
prezanton koleksionin, numron CD n koleksion dhe mban madhsin e
koleksionit array. Koleksioni array deklarohet n constructor CDMuzik. do her
q nj CD shtohet n koleksion duke prdorur metodn addCD, nj objekt i ri CD
krijohet dhe referenca e tij ruhet n koleksionin array.
Programi 18. 6
//********************************************************************
// Muzik.java Autor: Gjergji Shaska
//
// Perdorimi i objekteve ne array.
//********************************************************************

public class Muzik
{
//-----------------------------------------------------------------
// Krijon nje objekt CDMuzik dhe shton some CD dhe i printon.
//-----------------------------------------------------------------
public static void main (String[] args)
{
CDMuzik muzik = new CDMuzik ();

muzik.addCD ("Tiranse ", "Irma Libohova", 3.65, 12);
muzik.addCD ("Atdheut ", "Vace Zela", 4.99, 23);
muzik.addCD ("Shqiperia", "Sherif Merdani", 3.15, 27);
muzik.addCD ("Memedheut", "Parashqevi Simaku", 3.90, 13);

Page 233 of 275


System.out.println (muzik);

muzik.addCD ("Liberta ", "Albano Carisi", 9.99, 21);
muzik.addCD ("Insieme ", "Toto Cotugno", 10.95, 19);

System.out.println (muzik);
}
}
Output----------------------------------------------------------------------------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Koleksioni i CD

Numri CD: 4
Kostua Totale: $15.69
Kostua mesatare: $3.92

CD List:

$3.65 12 Tiranse Irma Libohova
$4.99 23 Atdheut Vace Zela
$3.15 27 Shqiperia Sherif Merdani
$3.90 13 Largesi Parashqevi Simaku

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Koleksioni i CD


Page 234 of 275

Numri CD: 6
Kostua Totale: $36.63
Kostua mesatare: $6.10

CD List:

$3.65 12 Tiranse Irma Libohova
$4.99 23 Atdheut Vace Zela
$3.15 27 Shqiperia Sherif Merdani
$3.90 13 Largesi Parashqevi Simaku
$9.99 21 Liberta Albano Carisi
$10.95 19 Insieme Toto Cotugno
Programi 18. 7
//********************************************************************
// CDMuzik.java Autor: Gjergji Shaska
//
// Prezanton disa kompakt disqe.
//********************************************************************

import java.text.NumberFormat;

public class CDMuzik
{
private CD[] koleksion;
private int numero;
private double totalKost;


Page 235 of 275

//-----------------------------------------------------------------
// Constructor: Krijon fillimishte nje koleksion boshe.
//-----------------------------------------------------------------
public CDMuzik ()
{
koleksion = new CD[100];
numero = 0;
totalKost = 0.0;
}

//-----------------------------------------------------------------
// Shton CD ne koleksion dhe rrit madhesin e
// koleksion nese eshte e nevojshme.
//-----------------------------------------------------------------
public void addCD (String tituli, String artist, double kosto,
int mban)
{
if (numero == koleksion.length)
rritMadhesin();

koleksion[numero] = new CD (tituli, artist, kosto, mban);
totalKost += kosto;
numero++;
}

//-----------------------------------------------------------------
// Kethen nje raportim ku pershkruan koleksion CD.

Page 236 of 275

//-----------------------------------------------------------------
public String toString()
{
NumberFormat fmt = NumberFormat.getCurrencyInstance();

String report = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
report += "Koleksioni i CD\n\n";

report += "Numri CD: " + numero + "\n";
report += "Kostua Totale: " + fmt.format(totalKost) + "\n";
report += "Kostua mesatare: " + fmt.format(totalKost/numero);

report += "\n\nCD List:\n\n";

for (int cd = 0; cd < numero; cd++)
report += koleksion[cd].toString() + "\n";

return report;
}

//-----------------------------------------------------------------
// Rrite kapacitetin e koleksionit duke krijuar nje array te
// madhe dhe kopiuar koleksionin ekzistus ne te.
//-----------------------------------------------------------------
private void rritMadhesin ()
{
CD[] madhesi = new CD[koleksion.length * 2];

Page 237 of 275


for (int cd = 0; cd < koleksion.length; cd++)
madhesi[cd] = koleksion[cd];

koleksion = madhesi;
}
}
Programi 18. 8
//********************************************************************
// CD.java Autor: Gjergji Shaska
//
// Prezanton nje CD.
//********************************************************************

import java.text.NumberFormat;

public class CD
{
private String titulli, artist;
private double kosto;
private int mban;

//-----------------------------------------------------------------
// Krijon nje CD te re me informacionin special.
//-----------------------------------------------------------------
public CD (String emri, String kengetari, double cmimi, int numMban)

Page 238 of 275

{
titulli = emri;
artist = kengetari;
kosto = cmimi;
mban = numMban;
}

//-----------------------------------------------------------------
// Kthen nje pershkrim string te kesaj CD.
//-----------------------------------------------------------------
public String toString()
{
NumberFormat fmt = NumberFormat.getCurrencyInstance();

String pershkrimi;

pershkrimi = fmt.format(kosto) + "\t" + mban + "\t";
pershkrimi += titulli + "\t" + artist;

return pershkrimi;
}
}




Page 239 of 275




N Fig. 18. 2 po japim diagramn UML pr kt program.

Fig. 18. 2 Diagrama UML per programin Muzik.










Page 240 of 275

USHTRIME DHE PROBLEMA

18.1 Ndryshoni kodin n Programi 18. 1 n mnyr t till q t kemi nj array
me 15 element dhe ata t printohen n t njjtin rresht.
18.2 Bazohuni n kodin n Programi 18. 2 pr t krijuar nj array me 20 element
ku secili t rritet me 2 nga elementi paraardhs.
18.3 Duke u bazuar n Programi 18. 3 shkruani nj program ku 15 element t
futur n program nga lexusi t printohen duke u lexuar nga fundi.
18.4 Ndryshoni kodin n Programi 18. 4 n mnyr t till q: Shkelqyshem - 95,
Shume mire - 90, 8 80, Duhet prmirsim 70, 5 60, Ngel 50.
18.4 Zgjidhni shtat prej kngtarve tuaj m t preferuar dhe ndyshoni kodin n
Programi 18. 6,Programi 18. 7 dhe Programi 18. 8 n mnyr q n output t
marrim t dhnat pr CD e tyre. N output duhet t printohet gjithashtu:
Koleksioni i CD t (emri juaj).

Page 241 of 275




Kapitulli 19

ARRAYS DY DIMENSIONENALE

N kapitullin 18 gjithka ne msuam pr arrays ishte pr arrays me nj
dimension, q do t thot se ato tregonin nj list vlerash. N kt kapitull
ne do t studiojm arrays me dy dimensione dhe do t japim vetm nj
prshkrim t shkurtr pr arrays me shum dimensione, pasi ato jan disi
m komplekse pr tu prfytyruar dhe nuk jan shum t prdorshme n
programet e zakonshme.


19.1 Arrays dy Dimensionale
Arrays dy dimensionale jan arrays t cilat kan vlera n dy dimensione t
prfytyruara si rreshta dhe kollona, ose e thn ndryshe si array t arrays. N Fig.
19. 1 tregohet nj array e quajtur Iliri me dimesione 6 rreshta dhe 8 kollona, e cila
n Java deklarohet si m posht dhe pr tju referuar nj elementi t veant
vendosim brenda kllaps s par numrin pr rreshtin dhe brenda kllaps s dyt
numrin pr kollonn:
int Iliri = [6][8] // deklarimi
int Iliri = [2][3] // referohet numrit 55
0 1 2 3 4 5 6 7
0
1
Iliri 2 55
3
5
Fig. 19. 1 Arrays dy dimensionale.

Page 242 of 275

Programi 19. 1 tregon nj prdorim t thjesht t nj array dy dimensionale t
puajtur emrat. Klasa DyArray nuk bn gj tjetr por deklaron nj array dhe
printon elementt e saj.
Programi 19. 1
//********************************************************************
// DyArray.java Autor: Gjergji Shaska
//
// Nje perdorim i thjeshte i dy array.
//********************************************************************

class DyArray {
public static void main(String[] args) {
String[][] emrat = {{"Gjergji ", "Ilir "},
{"Shaska", "Xhomaqi"}};
System.out.println(emrat[0][0] + emrat[1][0]); // Gjergji Shaska
System.out.println(emrat[0][1] + emrat[1][1]); // Ilir Xhomaqi
}
}
Output----------------------------------------------------------------------------------------
Gjergji Shaska
Ilir Xhomaqi
N Programi 19. 2 jepet nj shembull ku fillimisht nj array me dy dimensione
sht deklaruar si integer. Nested for lops prdoren n program pr t krijuar
tabeln dhe pr ta printuar at. Vini re se si for loop e brendshme mbush vlerat pr
kollonat dhe for loop e jashtme mbush vlerat pr rreshtat.
Programi 19. 2
//********************************************************************
// DyDimensione.java Autor: Gjergji Shaska

Page 243 of 275

// Perdorimi i nje array me dy dimensione.
//********************************************************************

public class DyDimensione
{
//-----------------------------------------------------------------
// Krijon nje array me dy dimensione, e mbush ate me
// vlera integers dhe i printon.
//-----------------------------------------------------------------
public static void main (String[] args)
{
int[][] tabela = new int[6][8];

// Vendo vlerat ne tabele
for (int rresht=0; rresht < tabela.length; rresht++)
for (int kollon=0; kollon < tabela[rresht].length; kollon++)
tabela[rresht][kollon] = rresht * 2 + kollon;

// Printon tabelen
for (int rresht=0; rresht < tabela.length; rresht++)
{
for (int kollon=0; kollon < tabela[rresht].length; kollon++)
System.out.print (tabela[rresht][kollon] + "\t");
System.out.println();
}
}
}

Page 244 of 275

Output----------------------------------------------------------------------------------------
0 1 2 3 4 5 6 7
2 3 4 5 6 7 8 9
4 5 6 7 8 9 10 11
6 7 8 9 10 11 12 13
8 9 10 11 12 13 14 15
10 11 12 13 14 15 16 17
Programi 19. 3 prdoret nga nj kompani e cila prodhon raki dhe krkon t testoj
kush nga prodhimet e saj plqehet m shum. Kompania ka hedhur n treg katr
lloj rakish t cilat paraqiten n array nga rreshtat, ndrsa personat e testuar
paraqiten nga kollonat. Vini re se kompania ka testuar 10 persona t cilt kryejn
vlersimin duke e vlersuar secilin lloj rakie me notat nga 1 n 5. Programi
llogarit dhe printon mesataren pr secilin lloj rakie dhe mesataren e pikve q ka
dhn secili person.
Programi 19. 3
//********************************************************************
// Provon.java Autor: Gjergji Shaska
//
// Perdorimi i nje array me dy dimensione.
//********************************************************************

import java.text.DecimalFormat;

public class Provon
{
//-----------------------------------------------------------------
// Pecakton dhe printon mesataren e secilit rresht (raki) dhe
// seciles kollone (personi qe e provon).

Page 245 of 275

//-----------------------------------------------------------------
public static void main (String[] args)
{
int[][] piket = { {3, 4, 5, 2, 1, 4, 3, 2, 4, 4},
{2, 4, 3, 4, 3, 3, 2, 1, 2, 2},
{3, 5, 4, 5, 5, 3, 2, 5, 5, 5},
{1, 1, 1, 3, 1, 2, 1, 3, 2, 4} };

final int RAKI = piket.length;
final int PERSON = piket[0].length;

int[] rakiShuma = new int[RAKI];
int[] personShuma = new int[PERSON];

for (int raki=0; raki < RAKI; raki++)
for (int personi=0; personi < PERSON; personi++)
{
rakiShuma[raki] += piket[raki][personi];
personShuma[personi] += piket[raki][personi];
}

DecimalFormat fmt = new DecimalFormat ("0.#");
System.out.println ("Mesatarja:\n");

for (int raki=0; raki < RAKI; raki++)

Page 246 of 275

System.out.println ("Raki #" + (raki+1) + ": " +
fmt.format ((float)rakiShuma[raki]/PERSON));

System.out.println ();
for (int personi =0; personi < PERSON; personi++)
System.out.println ("Personi #" + (personi+1) + ": " +
fmt.format ((float)personShuma[personi]/RAKI));
}
}
Output----------------------------------------------------------------------------------------
Mesatarja:

Raki #1: 3.2
Raki #2: 2.6
Raki #3: 4.2
Raki #4: 1.9

Personi #1: 2.2
Personi #2: 3.5
Personi #3: 3.2
Personi #4: 3.5
Personi #5: 2.5
Personi #6: 3
Personi #7: 2
Personi #8: 2.8

Page 247 of 275

Personi #9: 3.2
Personi #10: 3.8

19.2 Arrays Shumdimensionale
Nj array mund t ket nj, dy, tre apo shum dimensione. Pr t prfytyruar array
me dy dimensione sht kollaj, po ashtu dhe me tre dimensione prfytyrojeni n
formn e nj kubi, por me katr apo m shum dimensione sht disi e vshtir t
prfytyrohet. Por shpesh ato jan t nevojshme n programim si p.sh. nse duam
t krijojm nj program pr t gjith universitetet e Evrops, do t ishte nj ide e
mir prdorimi i nj array me katr dimensione. Dimensioni i par prezanton
shtetin, dimensioni i dyt prezanton universitetet n secilin shtet, dimensioni e
tret prezanton fakultetet n secilin universitet dhe dimensioni i katrt prezanton
departamentet n secilin fakultet. Programet t cilt prdorin array
shumdimensionale krkojn nj kujdes t veant nga programusi dhe shpesh
programust nse kan mundsi plqejn ta shmangin prdorimin e tyre. Nse do
i referoheshim prsri shembullit t msiprm ne mund t skiconim nj program
pa prdorur si e treguam m sipr nj array me katr dimensione. Secili shtet
mund t prezantohej me nj objekt, i cili mund t ket nj array pr t ruajtur
informacionin rreth secilit universitet dhe kshtu t vazhdoj dizenjimi n
vazhdim.
Nj objekt n nj list array sht i njjt me nj array, por ajo mund ta ndryshoj
madhsin sipas nevojs, q do t thot se ne mund t shtojm dhe t lvizim
element nga lista. Programi 19. 4 fillimisht krijon nj list array t quajtur anetar,
pastaj lviz nga lista qytetin Durresi dhe e printon rezultatin. Vini re se kur nj
element lviz nga lista elementi q sht pas tij, n rastin ton Vlora z pozicionin
e elementit q lviz nga lista. E njjta gj ndodhe dhe kur ne shtojm nj element
n fjalit e kodit n vazhdim. Ne shtojm n list qytetin Fieri dhe n t njjtn
mnyr elementi q n rastin ton sht Vlora lviz nj pozicion q t krijoj vend
pr qytetin Fieri.
Programi 19. 4
//********************************************************************
// Qytetet.java Autor: Gjergji Shaska
//
// Perdorimi i objektit ArrayLis.

Page 248 of 275

//********************************************************************

import java.util.ArrayList;

public class Qytetet
{
//-----------------------------------------------------------------
// Ruan dhe modifikon nje list te qyteteve.
//-----------------------------------------------------------------
public static void main (String[] args)
{
ArrayList anetar = new ArrayList();

anetar.add ("Tirana");
anetar.add ("Durresi");
anetar.add ("Elbasani");
anetar.add ("Vlora");

System.out.println (anetar);

int pozicion = anetar.indexOf ("Durresi");
anetar.remove (pozicion);

System.out.println (anetar);
System.out.println ("Per index 2: " + anetar.get(2));

Page 249 of 275


anetar.add (2, "Fieri");
System.out.println (anetar);
System.out.println ("Madhesia e anetarve: " + anetar.size());
}
}
Output----------------------------------------------------------------------------------------
[Tirana, Durresi, Elbasani, Vlora]
[Tirana, Elbasani, Vlora]
Per index 2: Vlora
[Tirana, Elbasani, Fieri, Vlora]
Madhesia e anetarve: 4














Page 250 of 275

USHTRIME DHE PROBLEMA

19.1 Bazuar n Programi 19. 1 printo emrat dhe mbiemrat e pes personave ku
printimi t filloj me emrin tuaj.
19.2 Krijoni nj matric ku kollonat t rriten me 2 dhe rreshtat t rriten me 2.
19.3 Kush sht personi q e ka vlersuar m shume rakin e par? Po rakin e
katrt? Personi i dhjet k raki ka vlersuar m shum?
19.4 Ndryshoni kodin n Programi 19. 4 n mnyr q t lvizni nga lista qytetin
Elbasani dhe t shtoni qytetin Shkodra.


















Page 251 of 275

PROJEKTI 2
*****************************************************************
Ju duhet t plotsoni kodin pr programin n vazhdim n mnyr q ai t
funksionoj n rregull. Pr t marr t plot iden se far ky program duhet t bj
ne po u japim dhe output n fund t kodit pr kt program. do student ka nj
numr t quajtur n program id dhe studentt duhet t renditen sipas notave duke
filluar me A. Nse dy student kan nota t njjta ather ata renditen sipas
numrit (id) m t madh. Pasi ta plotsoni kodin printojeni at dhe ktheheni pr tu
korigjuar.
Kodi projekt 2.1
//********************************************************************
// GradeBook.java Autor: Gjergji Shaska
//
//********************************************************************


import java.util.*;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class GradeBook
{

// beji studentet private per ti encapsulate me mire
private Student[] students;

GradeBook ()

Page 252 of 275

{

students = new Student[7];

students[0] = new Student ( 2345 , "A" );
students[1] = new Student ( 1113 , "C" );
students[2] = new Student ( 7504 , "B" );
students[3] = new Student ( 1140 , "C" );
students[4] = new Student ( 4001 , "B" );
students[5] = new Student ( 2002 , "D" );
students[6] = new Student ( 5000 , "A" );

}

public String toString ()
{
String result = "";
for ( int i = 0; i < students.length; i++ )
result += students[i] + "\n";
return result;
}


public String toHTML ()
{
String result = "<HTML>";
for ( int i = 0; i < students.length; i++ )

Page 253 of 275

result += students[i] + "<BR>";
result += "</HTML>";
return result;
}


//Sort Funksion
//Protects studentet
public void sort ()
{
GradeBook.selectionSort ( students );
}

public static void selectionSort ( Comparable[] list )
{
int min;
Comparable temp;

for ( int index = 0; index < list.length - 1; index++ )
{
min = index;
for ( int scan = index + 1; scan < list.length; scan++ )
if ( list[scan].compareTo ( list[min] ) < 0 )
min = scan;

// Nderron vlerat
temp = // vendos kodin tuaj ketu

Page 254 of 275

list[min] = // vendo kodin tuaj ketu
list[index] = // vendos kodin tuaj ketu
}
}

public static void main ( String[] args )
{

boolean bGraphical = false;
String answer = "";
boolean bAnswered = false;
Scanner scan = new Scanner ( System.in );

// Nje loop e cila pyt perdorusin nese do versioni grafik apo jo
// pranon vetem y , Y , N or n
do
{
System.out.println ( "Doni te perdorni versioni grafik. Y\\N" );
answer = scan.nextLine ();
if ( answer.equalsIgnoreCase ( "Y" ) )
bGraphical = true;
else if ( !answer.equalsIgnoreCase ( "N" ) )
System.out.println ( "Ju lutem shtyp Y or N" );
if ( answer.equalsIgnoreCase ( "y" ) || answer.equalsIgnoreCase ( "n" ) )
bAnswered = true;
} while ( !bAnswered );


Page 255 of 275


if ( bGraphical )
{
JFrame gradeBookFrame = new JFrame ( "Grade Book" );
gradeBookFrame.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE );

GradeBookPanel panel = new GradeBookPanel ();

// Shton Listener per ngjarjet.
gradeBookFrame.addWindowListener ( new GradeBook.ExitListener() );
gradeBookFrame.getContentPane ().add ( panel );
gradeBookFrame.pack ();
gradeBookFrame.setVisible ( true );

// Perdoret per ta sjelle ate perpara perfundimit te window.
gradeBookFrame.toFront ();
gradeBookFrame.requestFocus ();
} else
{
GradeBook gradebook = new GradeBook ();
System.out.println ( "Perpara renditjes" );
System.out.println ();
System.out.println ( gradebook );
gradebook.sort ();
System.out.println ( "Pas renditjes" );
System.out.println ();
System.out.println ( gradebook );

Page 256 of 275

System.out.println ( "Mirupafshim" );
}
}

// Listens per mbylljen e frames
private static class ExitListener extends WindowAdapter
{
public void windowClosing ( WindowEvent event )
{
// Vetem te printoje Mirupafshim ne mbyllje.
System.out.println ( "Mirupafshim" );
}
}
}
Kodi projekt 2.2
//********************************************************************
// GradeBookPanel.java Autor: Gjergji Shaska
//
//********************************************************************

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class GradeBookPanel extends JPanel
{
private JLabel lblGrades;

Page 257 of 275

private JButton btnSort;
private GradeBook gradeBook;
public GradeBookPanel ()
{
gradeBook = new // vondos kodin tuaj
lblGrades = new JLabel ( gradeBook.toHTML ());
btnSort = new JButton ( "Sort" );
ButtonListener listener = new // vondos kodin tuaj
btnSort.addActionListener ( listener );
setPreferredSize ( new Dimension(200,200));
add ( lblGrades);
add ( btnSort);

}

private class ButtonListener implements ActionListener
{
public void actionPerformed ( ActionEvent event )
{
gradeBook.sort ();
lblGrades.setText ( gradeBook.toHTML ());
repaint ();
}
}
}
Kodi projekt 2.3
//********************************************************************

Page 258 of 275

// Student.java Autor: Gjergji Shaska
//
//********************************************************************

public class Student implements Comparable
{

// Ndryshon variablat ne private per te siguruar encapsulation.
private int id;
private String grade;

Student ( int id , String grade )
{
this.id = id;
this.grade = grade;
}

// Krahaso kete per te kryer funksionin.
public int compareTo ( Object obj )
{
Student that = (Student)obj;
int rtnValue = grade.compareTo ( that.getGrade ( ));
if (rtnValue == 0)
{
if // vendos kodin tuaj ketu
rtnValue = -2;
else if // vendos kodin tuaj ketu

Page 259 of 275

rtnValue = 2;
}
return rtnValue;
}

// Funksion per encapsulate student.
public String getGrade()
{
return // vendos kodin tuaj ketu
}

// Funksion per encapsulate student.
public int getID()
{
return // vendos kodin tuaj ketu
}

public String toString () {

String result = id + " " + grade;
return result;
}
}
Output----------------------------------------------------------------------------------------
Doni te perdorni versioni grafik. Y\N
n
Perpara renditjes

Page 260 of 275


2345 A
1113 C
7504 B
1140 C
4001 B
2002 D
5000 A

Pas renditjes

2345 A
5000 A
4001 B
7504 B
1113 C
1140 C
2002 D

Mirupafshim



Page 261 of 275

Appendix I
Java Operator
Object-oriented Programming with Java (COP-2551)
Tabela e mposhtme tregon operatort n Java duke i reditur sipas ekzekutimit t tyre.

Operatort Prshkrimi

() Parentheses (grouping)
++ -- Unary postincrement/postdecrement
++ --
+ -
! ~
(type)
Unary preincrement/predecrement
Unary plus/minus
Unary logical negation/bitwise complement
Unary cast (change type)

* / % Multiplication/division/modulus
+ - Addition/subtraction
<< >> Bitwise shift left, Bitwise shift right
< <=
> >=
instanceof
Relational less than/less than or equal to
Relational greater than/greater than or equal to
Type comparison

== != Relational is equal to/is not equal to
& Bitwise AND
^ Bitwise exclusive OR
| Bitwise inclusive OR
&& Logical AND
|| Logical OR
?: Ternary conditional
=
+= -=
*= /=
%= &=
^= |=
<<= >>=
Assignment
Addition/subtraction assignment
Multiplication/division assignment
Modulus/bitwise AND assignment
Bitwise exclusive/inclusive OR assignment
Bitwise shift left/right assignment




Page 262 of 275

Appendix II
Java application with Eclipse
Ky kapitull do t shpjegoj shkurtimisht se si t krijojm nj aplikim duke prdorur
Eclipse. Qllimi i ktij kapitulli sht tju tregoj ju hapat e par t krijimit t nj aplikimi,
pasi ju do familjarizoheni me t gjat prdorimit t tij. Un fillova t prdor Eclipse pas
disa vjetsh q po prdorja BlueJ i cili sht gjithashtu nj program i kollajshm pr tu
prdorur. Por kur fillova t prdor Eclipse ishte vrtet nj ndryshim i madh pasi sht
shum i kollajshm pr tu prdorur si dhe t krijon mundsin e shum lehtsirave gjat
shkruajtjes s kodit. Eclipse funksionon pr Windows, Linux, Mac OSX, Solaris, AIX
and HP-UX



Krijimi i nj projekti n Eclipse

N kt tutorial un jam bazuar n Eclipse 3.0. versionet e
mvonshme t Eclipse mund t ndryshojn pak.

Krkohet
Download Eclipse 3.0 ose versionet e mvonshme nga adresa.
sht e krkuar Java 1.3 ose versionet e mvonshm. Nse ju nuk e keni at,
download nj nga adresa: http://java.sun.com.
Un po e quaj projektin tim javatools-demo por ju mund ta ndryshoni at n nj emr
tjetr q ju dshironi. Fillimisht hapni Eclipse dhe vendosni nj path n nj folder e cila
do t shrbej si workspace juaj. Kjo workspace sht nj folder e cila Eclipse prdor
prt ruajtur kodin tuaj.



Page 263 of 275



Kliko mbi kutin "Use this as the default...", e cila gjithmon do t filloj Eclipse n
workspace. Kur Eclipse starton ju do t shihni Welcome page






Page 264 of 275

Krijimi i nj projekti
Mbylleni Welcome page, kliko djathtas n Navigator dhe zgjidh New->Project:



Zgjidh "Java Project" dhe "Next". Fusni emrin e projektit tuaj.



Kliko "Finish".

Page 265 of 275

Perspectives
Eclipse ka nj numr perspectives t cilat ju mund ti shihni
duke zgjedhur Window->Open Perspective->Other...


Prdorimi i nj alternative JRE
N Package Explorer panel, kliko djathtas dhe zgjidh "Properties". Dialogu i hapur n
Java Build Path kontrollon classpath.



Page 266 of 275

Si e vini re nga figua e msiprme e vetmja adres sht JRE System Library q tregohet
n Libraries. N rastin tim nj Java 5.0 sht prdorur por ju mund t shihni nj JRE
tjetr pasi varet nga far versioni t Java ju keni instaluar
Sigurohuni q ju keni versionet e duhura t JDK ose JRE n kompjuterin tuaj, nse jo
download and intalloje nga http://java.sun.com.

Fillimisht kliko n "Add Library":



Kliko "Next" dhe "Installed JREs..."




Page 267 of 275

Kliko "Add".
Browse n JRE ose JDK k ju doni t prdorni dhe fusni nj emr.



Kliko "OK" dhe zgjidh JRE e re.


Kliko "OK" dhe "Finish". Prjojekti juaj tani do t compiled n JRE e re.

Page 268 of 275




Krijo source folders
Ndrysho "Source" tab t Properties dialog.


Page 269 of 275


Projektet n Eclipse mund t prmbajn nj ose m shum source folders t cilat
prmbajn Java source files. sht ide e mir q ne t ndajm tipet e ndryshme t kodit
pasi kjo do ta bnte projektin ton m t leht pr t punuar.

Kliko "Add Folder" dhe type "src"


Pastaj kliko "Yes"


Kliko "Add Folder..." dhe "Create New Folder...". Kt her quaje folder "test". Kliko
"OK" dyher. Vini re se ne tani kemi dy source folders.


Page 270 of 275


Klikoni "Order and Export" e cila tregon classpath. N rastin ton classpath do t prmbaj
dy source folders plus JRE.

.

Import third party JARs
Nse aplikimi juaj ka nj varsi n nj librari tjetr ju mund ta sillni at n projektin tuaj
si nj JAR file dhe ta shtoni at n kt projekt.
Krijoni nj folder t re n projektin tuaj si tregohet m posht:




Page 271 of 275




Quajeni folder "lib". Kliko djathtas n folder dhe zgjidh "Import..."













Page 272 of 275


Zgjidh "File System" dhe "Next". Browse n library dhe zgjidh JAR file.


Kliko "Finish" dhe ju duhet t shihni dika t ngjashme si:


Pr t add JAR n projektin classpath kliko djathtas n projekt dhe zgjidh "Properties".
Shko n "Libraries" tab n "Java Build Path":


Page 273 of 275



Kliko "Add JARs..." dhe shko n imported JAR. Kliko "OK"



Page 274 of 275

Importimi i source code
Importoni kodin duke klikuar djathtas n projekt dhe zgjidh "Import".



Nse kodi juaj sht ruajtur n nj JAR ose ZIP file, zgjidh "Zip file". Ndryshe zgjidh
"File System".
Krijimi i nj klase
Nse ju doni t krijoni nj kod t ri Java, kliko djathtas n src dhe zgjidh "New->Class"




Page 275 of 275


Ju duhet t shihni nj klas t re t ngjashme me figurn e mposhtme. Kini parasysh se
ju nuk duhet t ngatrroheni pasi prmbajtja do t jet e ndryshme pasi un kam krijuar
disa projekte dhe klasa q jam duke u treguar sht e komplikuar. Nse vini re n krahun
e majt gjenden emrat pr disa projekte t cilat un kam krijuar, n qendr t windows
gjendet kodi i klass i cili sht duke u shfaqur dhe n krahun e djatht gjenden metodat e
krijuara n kt klas.

Tani ju jeni gati t filloni dhe t shkruani kodin pr nj projekt. Hap pas hapi gjat ktij
libri ju do t msoni se si t testoni kodin e nj klase gjat dhe pasi ta keni prfunduar s
shkruari kodin pr nj apo disa klasa. Vini re se gjat shkrimit t kodit shpesh fjalt dalin
t nnvizuara q do t thot se dika sht gabim dhe ju duhet ta rregulloni pasi kodi nuk
do t compiled.

S-ar putea să vă placă și