SHKENCA KOMPJUTERIKE 1 (SHK1) Fatos Maxhuni (
[email protected])
Fakulteti i Shkencës Kompjuterike dhe Inxhinierisë
Hyrje në SHK1
• Cili është qëllimi i kësaj lënde ?
- Do të jetë fillimi i një edukimi tuaj tuaj si Programer Programer (Inxhinier të softuerit) softuerit) • Cila është rëndësia e kësaj lënde ?
- Nga kjo lëndë do të fitoni dijeninë si të përdorni gjuhën gjuhën programuese programuese Java për të ndërtuar softuer
Llojet softuerëve (Programeve) • Kompjuterët janë pajisje të fuqishme harduerike që nuk mund të bëjnë asgjë
pa pjesën softuerike • Në përgjithësi ekzistojnë tri lloje të softuerëve softuerëve::
- Sisteme Sistemett operat operative ive - Progra Programet met aplikat aplikative ive - Vegl Veglat at për për zhvillim zhvillim të softuerit softuerit (SDK) • Si zhvillues të softuerit mund të ndodhë të shkruani njërën apo që të tri llojet
e softuerëve të lartpërmendur
Programet e Sistemeve Operative (O/S) kontrolloj në harduerin dhe i mundësojnë programeve programeve • O/S programet e kontrollojnë
aplikative të ekzekutoh ekzekutohen en • O/S kryesisht janë të ndërtuara që të ekzekutohen në platforma të veçanta
harduerike, hardu erike, p.sh. në x86 apo MAC • Kryesisht këto janë janë programet më komplekse komplekse dhe më të vështira për t’u
ndërtuar dhe testuar • P.sh. M/S Dos, Windows, Unix, Linux, etj
Programet Aplikative • Këto programe kryejnë punë të rëndësishme për shfrytëzuesit
ndërtuara që të ekzekutohen ekzekutohen në sisteme • Aplikacionet kryesisht janë të ndërtuara operative të veçanta dhe platforma të veçanta veçanta harduerike • Shfrytëzuesit kryesisht duhet të ofrojnë informata të hollësishme për
funksionalitetin që programi duhet ta ketë, në mënyrë që programerët të ndërtojnë aplikacionin specifik që përmbushë kërkesat e shfrytëzuesit • P.sh. Word, PowerPoint, Netscape, N etscape, etj
Veglat për zhvillim të softuerëve softuerëve (ang. Software Development Development Kit - SDK) janë • Veglat për zhvillim të softuerëve (ang.
programe specifike që i mundësojnë zhvilluesve të programeve të shkruajnë programe kompjuterike kompjuterike dhe t’i testojnë ato
• Zhvilluesit me përvojë përvojë kryesisht përdorin përdorin “Integrated Development Environment – IDE” IDE”,, por mund mund të përdoren edhe editorë të thjeshtë për të
kompajluar/ekzekutuar (interpretuar) programin • P.sh.
- IDE: Dr Java IDE, Netbeans Netbeans IDE, Eclipse, Eclipse, etj - Editorë: PFE, Notepad++, Notepad++, etj etj
User er In Inte terf rface ace” -ëve Llojet e “ “Us ” -ëve interface ace” -ëve: -ëve: • Janë dy lloje dominuese dominuese të “user interf
- Co Comm mman andd Lin Linee In Inte terf rfac acee (C (CLI LI)) - Gr Grap aphi hica call Us User er In Inte terf rfac acee (G (GUI) UI) • Si zhvillues të softuerit ju duhet të jeni në gjendje të shkruani programe për dy llojet e “user inte interfa rface ce” -ëve -ëve
User er In Inte terf rface ace” -ëve Llojet e “ “Us ” -ëve
• Com Comman mand d Lin Line e In Inter terfa face ce (C (CLI LI))
- Në monitor paraqitet paraqitet kërkesa që shfrytëzuesi shfrytëzuesi të fut ndonjë të dhënë.
- Shfryt Shfrytëzuesi ëzuesi i fut të dhënat e kërkuara, kërkuara, ndërsa programi programi e proceson inputinn e shfrytëzue inputi shfrytëzuesit. sit. - Ky është një lloj i vjetër i “user inte interfa rface ce” -ëve -ëve ende i përdorur në disa aplikacione dhe sisteme operative - Nuk është është i përshtatshëm përshtatshëm për për shfrytëzim shfrytëzim (ang. (ang. not User Friend Friendly) ly)
- P.sh. Në DOS C:\> type type test.txt (shfaq përmbajt përmbajtjen jen e dokumentit) dokumentit)
Userr Int Interf erface ace” -ëve Llojet e “ “Use ” -ëve
• Gra Graphi phical cal Use Userr Int Inter erfac face e (GU (GUI) I)
- Në monitor monitor paraqitet paraqitet dritarja dritarja me tekst dhe komponen komponente te grafi grafike ke duke i ofruar shfrytëzuesit opsione të ndryshme - Shfrytëzuesi përdor “mouse” -in -in dhe tastierën, të bënë zgjidhje nga opsionet opsion et e ofruar ofruaraa si dhe dhe për të shkruar shkruar tekst - Tani përdoret përdoret më shumë shumë për shkak se komponen komponentët tët për procesim procesim kompjuterik kompj uterik kushtojnë kushtojnë tani më lirë - Është më i përshta përshtatshëm tshëm për për shfrytëzim shfrytëzim (ang. (ang. User Frien Friendly) dly) - P.sh. Microsoft Windows, Microsoft Office, Office, etj.
Veglat për zhvillim zhvillim të softuerëve softuerëve • Përdorimi i editorit të thjesht dhe Sun JDK (Java Development Kit)
Përdorimi Përd orimi i editori editoritt të thje thjeshtë shtë dhe Sun JDK
editor. File-i ruhet me të njëjtin emër si emri i • Shkruhet Java kodi në ndonjë editor. klasës dhe me extension extension . java P.sh nëse e kemi klasën HelloWorld HelloWorld atëherë java . P.sh
ruhet në file-in me emër HelloWorld.java • Në DOS:
- C:\> C:\>jav javac ac HelloWorld. HelloWorld.jav javaa (krij (krijohe ohett një file-i i ri me pra prapash pashtesë tesë .class, në këtë rast HelloWorld.class ) - C:\>java HelloWo HelloWorld rld (interpret (interpretohet ohet programi) programi) dhe dhe dërgohet output-i output-i në konsolë - C:\>exit (del prej prej DOS-it) DOS-it)
Veglat për zhvillim të softuerëve softuerëve Development Environment) • Përdorimi i IDE (Integrated Development
Hapat e zhvillimit të softuerit • Modeli klasik klasik “Waterf “Waterfall” all”
Edito dhe ruaj kodin burimor
Eroret
Ndërto kodin e programit
Eroret
Ekzekuto programin dhe shih rezultatin
Eroret • Gjatë ndërtimit të një programi mund të paraqiten 3 lloje të eroreve:
- Comp Compile-ti ile-time me error – që paraqet gabim në sintaksën e programit dhe që vërehet gjatë kohës së kompilimit dhe nuk nuk krijohet file-i me extension .class
- Run Run-ti -time me error error – që paraqitet gjatë ekzekutimit/interpretimit të programit, p.sh. Pjesëtimi me zero e detyron programin të ndërpritet në mënyrë jonormale - Lo Logi gica call er erro rorr – që do të thotë që programi ekzekutohet normalisht mirëpo rezultati nuk është ai i prituri
Gjuha programuese Java dhe zhvillimi i softuerit • Gjuhët programuese • Struktura e programit në Java • Zgjidhja e problemeve • Programimi i orientuar/bazuar në objekte
Gjuhët programuese • Gjuhët programuese përdoren nga programerët për të shkruar programe
kompjuterike • Ndonjë gjuhë programuese është më e mirë për ndonjë lloj të programit dhe për ndonjë lloj të “user interface” -it, -it, se tjetra • Me siguri se keni dëgjuar për gjuhë të ndryshme programues si: Cobol,
Basic, C, C++, Java, C#, etj
Gjuhët programuese • Një gjuhë programuese programuese specifikon fjalët dhe simbolet si mbolet që mund të përdoren
për të shkruar programe kompjuterike • Një gjuhë programuese programuese përdorë rregulla të veçanta që diktojnë se si fjalët
dhe simbolet mund të kombinohen që të formohen shprehje të vlefshme programuese • Një gjuhë programuese posedon edhe sintaksën edhe semantikën e vet
Sintaksa dhe semantika • Rregullat sintaksore tregojnë tregojnë si mund të kombinohen fjalët e rezervuara,
simbolet dhe identifikuesit që të krijohet një program i vlefshëm. • Semantika tregon kuptimin kuptimin e një shprehjeje të vlefshme (çka është qëllimi
dhe roli i asaj shprehjeje në atë program) • Një program program që është korrekt sa i përket sintaksës nuk do të thotë se
është korrekt edhe për nga semantika • Një program gjithmonë bënë atë që i themi të bënë, e jo çka mendojmë t’i
themi të bënë
Nivelet e gjuhëve programuese Ekzistojnë jnë disa nivel nivelee të gjuh gjuhëve ëve programuese: programuese: • Ekzisto
- Mach chin inee Lan angu guaage - Ass ssem embl blyy La Lanngu guag agee - Fou ourt rthh-ge gene nera rati tion on la lang ngua uage ge - Hi High gh-l -lev evel el La Lang ngua uage ge (Central Processing Unit) e ka gjuhën e vet specifike të • Çdo lloj i CPU (Central makinës (ang. Machine makinës Machine Langua Language). ge). Përbënë Përbënë instruksio instruksionet net dhe të dhënat të cilat ekzekutohen direkt nga CPU. • Gjuhët e tjera kanë rrjedhë nga nevoja që programerët më lehtë të
shkruajnë dhe lexojnë programet kompjuterike.
Gjuhët programuese • Çdo lloj i CPU ekzekuton vetëm programet në një gjuhë të caktuar të
makinës (ang. Machine Language) • Një program duhet të përkthehet në gjuhë të makinës para se të mund të
ekzekutohet Compileri) është një softuer i veçantë i cili mundëson • Kompajleri (ang. Compileri) këtë përkthim të kodit • Kryesisht ky përkthim është nga një gjuhë e nivelit më të lartë në një
gjuhë specifike të makinës (ang. Machine Language) Language) për një lloj llo j të veçantë të CPU • Qasja e Java-së është pak më ndryshe
Kompajlimi i kodit në Java J ava kodit në një reprezentim r eprezentim • Kompajleri i Java-së bënë përkthimin e Java specifik të njohur si Java Java bytecode të ruajtur në një file me prapashtesën prapashtesën .class • Java bytecode nuk është gjuhë e makinës për asnjë CPU specifike
softuer tjetër tjetër i njohur njohur si interpret interpreter-i er-i (në rastin rastin tonë tonë JVM - Java Virtua Virtuall • Një softuer Machine) e interpreton bytecode-in • Java njihet si gjuhë neutrale sa i përket arkitekturës së kompjuterëve • Java nuk lidhet me ndonjë makinë specifike • JVM mund të implementohet në çdo lloj të makinës
Struktura e programit në Java • Në gjuhën programuese Java:
-
Programi Progra mi ndër ndërtoh tohet et nga nga një një ose më shumë shumë klas klasëë Njëë klasë Nj klasë ka ka një një apo më shu shumë më atri atribu bute te Njëë klasë Nj klasë ka një një apo apo më më shum shumëë meto metoda da Metodaa përmban Metod përmban shpreh shprehje je të progr programit amit (ang. progr program am statemen statements) ts)
• Këto terme do të hulumtohen dhe do të shpjegohen më në detal gjatë
ligjëratave të ardhshme • Çdo klasë e veçantë ruhet në një file me emrin e njëjtë si emri i klasës por me prapashtesën .java
mund të ketë më tepër se një klasë në te, por vetëm njëra • Një Java file mund mund të ketë qasje publike dhe emërtimi i file-it bazohet në emrin e kësaj klase • Një Java aplikacion fillon nga klasa e cila ka metodën main(…) (shih shembullin MyProgram.java )
Struktura e programit në Java //komentet për klasën publi pu blic c cl clas ass s My MyPr Prog ogra ram m{
//komentet për atributet atributet private String emri = “Fatos”; …… ……
//komentet për metodat metodat public pub lic stat static ic void main main(St (String ring [] argv argv){ ){ //nj //njihet ihet edhe si “the signature” …… ……
} }
Komentet • Kom Komentet entet brenda brenda kodit njihen njihen si “ inline docu documen mentatio tationn” • Ato futen në kod për të dhënë dhënë shpjegime rreth kodit kodit atyre që e lexojnë lexojnë
kodin • Nuk e afektojnë si punon programi, pasi që ato injorohen nga kompajleri • Ekzistojnë 3 lloje të komenteve komenteve::
// Ky koment vlen vetëm për këtë rresht rresht /* Ky koment vlen për krejt bllokun dhe vlen deri sa të gjendet simboli simboli terminues dhe mund të shkoj shkoj në disa rreshta rreshta */ /** Ky është është javadoc koment*/
Identifikuesit (ang. Identifiers) • Identifikuesit janë fjalët/simbolet që i përdor programeri programeri në një program. program. • Një identifikues mund të ndërtohet nga shkronjat, numrat, shenja (_)
(ang. underscore) underscore) si dhe nga shenja e dollarit $ • Identifikuesi nuk nuk mund të filloj me numër • Jav Java a është është “casesensitive” që d.m.th – fjalët Total, total dhe TOTAL
trajtohen trajtoh en si identifikues të ndryshëm • Ligj i pashkruar por i përvetësuar nga programerët që shkruajnë programe
në Java, përdorin këtë formë të shkrimit së kodit: • Për emra të klasave kl asave përdoret Titlecase: p.sh HelloWorld HelloWorld • Emrat e atributeve dhe metodave fillojnë me shkronja të vogla: p.sh.
printName • Emrat e konstanteve me të madhe: p.sh. MAXIMUM
Identifikuesit • Ndonjëher Ndonjëherëë ne i zgjedhim z gjedhim identifikuesit tanë, si në shembullin më lart MyProgram • Ndonjëher Ndonjëherëë i përdorim identifikuesit të cilët i kanë zgjedh programerët programerët e tjerë, p.sh. println • Shpesh përdorim përdorim identifikues të cilët njihen si të rezervuar dhe që kanë kuptim të veçantë në Java, p.sh. int • Një identifikues i rezervuar nuk mund të përdoret për asgjë tjetër pos për
çka është i definuar
Fjalët e rezervuara abstract
assert
catch char double do final finally implements import native new public return switch synchronized true t ry
boolean
break
byte
case
class else float instanceof null short this his void
const* enum for int package static throw volatile
continue extends goto* interface private strictfp thro hrows while
default false if long protected super tra transient
Në ueb faqe faqenn më poshtë mund të gjeni shpje shpjegim gim për secili secilinn ident identifiku ifikues es të rezervuara rezer vuara në Jav Java: a: http://en.wikibooks.org/wiki/Java_Programming/Keywords
Hapësirat Hapë sirat (ang. white white spaces spaces)) zbrazët,TAB AB njihen si “wh whit itee sp space ace” • Hapësirat, reshtat e zbrazët,T • Këto hapësira përdoren për t’i ndarë fjalët dhe simbolet në program si dhe
për ta strukturuar programin që të jetë je të më i lexueshëm kompajlerit këto hapësira hapësira injorohen • Sa i përket kompajlerit • Sa i përket lexueshmërisë së kodit, ekzistojnë disa mënyra se si të
formatohet programi në Java • Programet formatohen formatohen duke përdorë hapësira hapësira dhe “ indentation”
Zgjidhja e problemeve • Qëllimi i një programi kompjuterik është zgjidhja e ndonjë problemi të
veçantë • Zgjidhja e një problemi të veçantë konsiston nga një numër i aktiviteteve:
-
Duhett të kupt Duhe kuptoh ohet et mirë mirë pr prob oblem lemii Kons Ko nside idero rohe henn mirë mirë të gjith gjithaa alterna alternativ tivat at Të di diza zajn jnoh ohet et zgj zgjid idhj hjaa Të im impl plem emen ento tohe hett zgji zgjidh dhja ja Tes esto tohe hett zg zgjijidh dhje jenn
li neare por ato mbulohen nga njëra tjetra dhe • Këto aktivitet nuk janë lineare
bashkëveprojnë
Zgjidhja e problemeve • Çelësi i zgjidhjes së problemit është zbërthimi zbërthimi i problemit në pjesë më të
menaxhueshme nënkupton zbërthimin dhe dizajnimin e pjesëve të • Ndërtimi i një softueri nënkupton veçanta programming) ing) është • Programimi i bazuar në objekte (ang. Object-oriented programm shumë i përshtatshëm për këtë lloj të zbërthimit • Ne gjithmonë do ta zbërthejmë zgjidhjen tonë në pjesë, të njohura si klasë dhe objekte
Programimi i bazuar në objekte (ang. (a ng. Obje Object ct Ori Orien ente ted d Pro Program grammin ming) g) • Java është gjuhë programuese e bazuar në objekte • Siç nënkuptohet nga ky term objekti është entiteti bazë i një Java
programi • Java objektet mund të përdoren në mënyrë efektive që të reprezentojnë
objektet në botën reale mund të reprezentoj një llogari bankare • P.sh. Një objekt i Java-së mund • Çdo llogari bankare menaxhon me të dhënat që kanë të bëjnë me atë
llogari bankare si dhe me pjesën për procesimin e këtyre të dhënave
Objektet • Një objekt ka: • Gjendjen e tij (ang. state ) – karakteristikat përshkruese • Sjelljet e tij (ang. behaviour ) – çka mund të bëjë apo lejon t’i bëhet
Bi lancin, etj • Gjendja e llogarisë bankare përfshinë p.sh. Emrin, Bilancin, ll ogarinë bankare janë, shfletimi i gjendjes, • Sjelljet që kanë të bëjnë me llogarinë depozitimi i mjeteve si dhe tërheqja e mjeteve • Siç shihet nga lart disa sjellje të këtij objekti ndryshojnë gjendjen e tij,
p.sh. deponimi deponimi apo tërheqj tërheqjaa e mjeteve ndryshojnë ndryshojnë bilancin e llogarisë bankare
Klasat • Një objekt definohet nga një klasë që reprezento reprezentonn një koncept të veçantë • Klasa definon modelin e çdo instance të objektit • Shumë objekte mund të krijohen nga një klasë • Klasa ka atributet/ atributet/fushat fushat që definojnë gjendjen e një objekti • Klasa ka metodat që definojnë sjelljen e një objekti • Klasa që ka metodën main() paraqet pikën fillestare të një programi në
Java • Java programet kryesisht përbëhen nga më shumë klasë se vetëm klasa që ka metodën main()
Objektet dhe klasat Klasa (koncepti) LlogariaBankare - bilanci: bilanci: double + shfletoBilancin(): double +depono(doubl +depono(doublee shuma): boolean +terhjek(do +terhjek(double uble shuma): boolean
Objekte të shumta të së klasës LlogariaBankare
Tri objekte të klasës Llogari bankare e Agimit Bilanci: 1500 € Llogari bankare e Artës Bilanci: 1755.65 € Llogari bankare e Rrapit Bilanci: 25785.05 €
Trashëgimia (ang. Inheritance) • Klasat mund të organizohen në hierarki • Një klasë mund të derivohet/trashëgohet nga një tjetër duke përdor “inheritance ” LlogariaBankare
LlogariaKursimit
LlogariaRrjedhese