Hyrje në Programimin e Orientuar në Objekte PDF
Document Details
Prof. Dr. Isak Shabani
Tags
Summary
Ky dokument paraqet një hyrje në programimin e orientuar në objekte (POO) dhe përshkruan konceptet bazë të saj. Ai gjithashtu krahason POO-në me modelin e programimit të strukturuar.
Full Transcript
“Programimi i Orientuar në Objekte” Prof. Dr. Isak Shabani 1 HYRJE NË PROGRAMIMIN E ORIENTUAR NË OBJEKTE Programimi i Orientuar në Objekt (POO) u referohet gjuhëve që përdorin objekte në programim. Qëllimi kryesor i POO-së është të lidhë të dhënat dh...
“Programimi i Orientuar në Objekte” Prof. Dr. Isak Shabani 1 HYRJE NË PROGRAMIMIN E ORIENTUAR NË OBJEKTE Programimi i Orientuar në Objekt (POO) u referohet gjuhëve që përdorin objekte në programim. Qëllimi kryesor i POO-së është të lidhë të dhënat dhe funksionet që veprojnë mbi to, në mënyrë që asnjë pjesë tjetër e kodit të mos mund t'i qaset këtyre të dhënave përveç atij funksioni. Për zgjidhjen e detyrave është përdorur gjuha programuese Java dhe korniza JavaFX. Ka disa përfitime të zbatimit të koncepteve të POO-së përmes Java. Disa nga avantazhet kryesore janë: ripërdorimi i softuerit, mirëmbajtja e kodit, teprica e të dhënave, siguria, zgjidhja e lehtë e problemeve, fleksibiliteti dhe përfitimet e dizajnit. Konceptet e POO-së në Java janë një nga qasjet kryesore të zhvillimit që pranohet gjerësisht. POO synon të zbatojë entitetet e botës reale si trashëgimia, polimorfizmi, enkalpsulimi (fshehja) dhe abstraksioni në programim. POO është një model programimi kompjuterik që organizon dizajnin e softuerit rreth të dhënave, ose objekteve, në vend të funksioneve dhe logjikës. Një objekt mund të përkufizohet si një fushë e të dhënave që ka atribute dhe sjellje unike. POO fokusohet në objektet që zhvilluesit duan të manipulojnë dhe jo në logjikën e nevojshme për t'i manipuluar ato. Kjo qasje ndaj programimit është e përshtatshme për programet që janë të mëdha, komplekse dhe të përditësuara ose të mirëmbajtura në mënyrë aktive. Kjo përfshin programe për prodhim dhe dizajn, aplikacione celulare, Ueb, të distribuuar, etj. Për shembull, POO mund të përdoret për prodhimin e softuerit simulues të sistemit. Organizimi i një programi të orientuar nga objekti e bën metodën gjithashtu të dobishme për zhvillimin bashkëpunues, ku projektet ndahen në grupe. Përfitimet shtesë të POO përfshijnë ripërdorimin e kodit, shkallëzuesmërinë dhe efikasitetin. 1.1 Programimi i strukturuar Zhvillimi i hershëm softuerik në vitet 60-ta të shekullit të kaluar ishte kompleks dhe i kushtueshëm për biznese, çmimi tejkalonte buxhetin dhe produktet finale ishin të pasigurta. Kërkimet shkencore dërguan në programimin strukturor si qasje e disiplinuar në programim me programe të pastra dhe lehtë të modifikueshme, ku disa gjuhë programuese kanë rezultuar nga këto kërkime si gjuha programuese Pascal, C dhe Ada. Gjuha programuese Pascal u projektua për mësim te programimit strukturor, i kanë munguar veçoritë për përdorim komercial. Gjuha programuese C kishte veçori që Pascal nuk i kishte, adaptohej shpejt prej programuesve. Gjuha programuese Ada e zhvilluar prej Departamentit të Mbrojtjes të SH.B.A, e bazuar në Pascal, përkrahte shumë detyra njëkohësisht dhe si rezultat shumë aktivitete ndodhin paralelisht. Programimi i strukturuar mbështetet në strukturat e kontrollit me nivel të lartë, në vend të kërcimeve të nivelit të ulët (eng. low level jumping). Programimi i strukturuar është i lidhur edhe me programimin lartë-poshtë (eng. top-down) dhe zhvillimin e programit me ndarje në faza (ang. stepwise refinement). Programimi i strukturuar nga lartë-poshtë me faza fillon duke shkruar programin kryesorë, përdor strukturë të kontrollit selektiv dhe përsëritës, kërko dhe thirr procedurat P1, P2,... , Pn, implemento Faqe 1 nga 21 “Programimi i Orientuar në Objekte” Prof. Dr. Isak Shabani procedurat P1, P2,...,Pn. Përfundimisht, procedurat bëhen aq të thjeshta sa që ato mund të implementohen pa pasur nevojë për procedura të tjera shtesë. 1.2 Vrojtimi rreth programimit të strukturuar Programimi i strukturuar ishte një mënyrë e mirë e rekomanduar për të programuar. Pavarësisht nga kjo, ne kemi identifikuar një mori të aspekteve problematike që na motivojnë për programimin e orientuar në objekte, programimi i strukturuar është shumë pak i orientuar për zgjidhjen e problemeve komplekse. Do të ishte mirë që mundësitë e programimit të orientoheshin më gjerë. Programimi i strukturuar realizohet përmes dekompozimit gradual të funksionalitetit, strukturat e formuara nga funksionaliteti, aksionet dhe kontrolli nuk janë pjesa më e qëndrueshme e programit. Fokusimi në strukturën e të dhënave në vend të strukturës së kontrollit është proces alternativ, sistemet reale nuk kanë vetëm një lartësi, por mund të kenë lartësi të shumëfishta. Prandaj do të ishte më natyrale të konsideroheshin alternativa ndaj procesit lartë-poshtë. 1.3 Nga programimi i strukturuar në POO Boshllëku në mes të problemit dhe nivelit të makinës, përdorimi i të dhënat si blloqe ndërtimi dhe lidhja në mes të dhënave, janë më të qëndrueshme sesa aksionet në të dhëna që lidhin të dhënat me operacionet e tyre natyrale. Drejtimi në programimin e orientuar në objekte na shtynë drejt ndërtimit të ideve të tipeve të të dhënave abstrakte, duke fuqizuar konstruktin e programimit që i enkapsulon (mbështjellë) të dhënat me koncentrim në konceptet dhe fenomene të cilat duhet të menaxhohen nga programi, me qëllim të shfrytëzimit të teorive ekzistuese të fenomeneve dhe koncepteve për të formuar koncepte të reja nga konceptet ekzistuese. Tipi i të dhënave (ang. data type) është bashkësi vlerash me veti të përbashkëta. Tipi i të dhënave është klasifikim i të dhënave që reflektojnë qëllimin e përdorimit të të dhënave në program. Tipi i të dhënave abstrakte është tip i të dhënave me bashkësi operacionesh në vlerat e tipit. Operacionet fshehin dhe mbrojnë përfaqësimin aktual të të dhënave. 1.4 Trendi kryesor i softuerëve të orientuar në objekte Teknologjia e orientuar në objekteve përbëhet nga paketat për krijim të njësive softuerike. Njësitë janë objekte ku çfarëdo emri mund të paraqitet si një objekt: objekti datë, objekti kohë, etj, të cilat kanë veçori si madhësia, ngjyra, pesha, kryejnë veprime si: lëvizja, fjetja, vizatimi, që përcaktohen në klasa si format i përgjithshëm me atribute dhe sjellje specifike. Programimi i orientuar në objekte është i bazuar në emra që reflektojnë mënyrën e perceptimit të botës reale, me përparësitë në krahasim me programimin strukturor si proces më natyral, rezulton në produktivitet më të lartë, klasat mundësojnë ripërdorim të softueri, më lehtë për t’u mirëmbajtur, programe më të kuptueshme, fokusohen ne sjellje dhe ndër-veprime dhe vëmendje më e vogël në detaje. Faqe 2 nga 21 “Programimi i Orientuar në Objekte” Prof. Dr. Isak Shabani 1.5 Klientët, serverët dhe mesazhet Klienti (p.sh Agroni) porositë një picë përmes emalit te FIEK-Pica. Nëpërmjet ndërveprimit të shërbyesve të ndryshëm pica dërgohet tek Agroni. Figura 1: Klienti, serverët dhe mesazhet Klienti kërkon shërbim tek ndonjë ofrues shërbimesh (server). Kjo do të nxisë ofruesin e shërbimeve të kërkoj nën-shërbime nga shërbyes të tjerë. Klientët dhe serverët komunikojnë me mesazhe të cilat kthejnë rezultate. Objektet që veprojnë si serverë kanë pjesën kryesore të përgjegjësisë, përgjegjësia e objektit siç është e reflektuar nga ndërfaqja që ofron tek objektet e tjera të operacionit si parakusht për aktivizimin dhe propozimi rreth pre-rekuizitave për thirrje. Veprimet në objekte implementohen përmes thirrjes procedurale, shpesh, por jo gjithmonë me parametra, veprimet në objekte aktivizohen përmes mesazheve (porosive). Mesazhi gjithmonë ka objektin marrës dhe është i ngjashëm me thirrjen procedurale me së paku një parametër. Mesazhi aktivizon një operacion (një metodë), objekti marrës lokalizon operacionin e përshtatshëm si përgjegjës (eng. method lookup). Parakushtet për rezultatet ose efektet përgjegjësive të definuar ofrojnë objekte koherente të qëndrueshme. Duhet të kujdesemi për përgjegjësitë e objekteve dhe të operacioneve. Shpërndarja e përgjegjësive të objekteve është temë kryesore në POO. 1.6 Ripërdorimi i softuerit Programimi i Orientuar në Objekte ofron më shumë ripërdorim të softuerit dhe më pak softuer për të menaxhuar. Sfidat e ripërdorimit të softuerit janë: Gjeje (Ku është komponenti dhe si mund ta marr?), Kupto (Çka ofron komponenti dhe si përshtatet me programin tim?), Modifiko (A duhet ta modifikoj komponentin në mënyrë që ta ripërdorim?) dhe Integro (Si e organizoj dhe shfrytëzoj komponentin së bashku me komponentët ekzistues?). Faqe 3 nga 21 “Programimi i Orientuar në Objekte” Prof. Dr. Isak Shabani 1.7 Fenomeni dhe konceptet Fenomeni është një gjë që ka të përcaktuar ekzistencën individuale në realitet ose në mendje, diçka e vërtetë në vetvete. Koncepti është ide e gjeneralizuar e grumbullit të fenomeneve, e bazuar në njohuri të vetive të njohura të instancave në koleksion. Aspektet karakteristike të koncepteve janë: Emri i konceptit, tregon entitetin. Skema - grumbulli i vetive që e karakterizojnë fenomenin në instancë të konceptit dhe Instanca - grumbull i fenomeneve që mbulohet nga koncepti. 1.8 Klasifikimi dhe ilustrimi Klasifikim është formimi i konceptit që përmban grumbull fenomenesh të përbashkëta. Ilustrimi është fokusimi në fenomen në zgjerim dhe instancim të konceptit. Koncepti Instancimi Klasifikimi Fenomeni Figura 2: Klasifikimi dhe ilustrimi i koncepteve dhe fenomeneve 1.9 Agregimi dhe dekompozimi Aagregimi mundëson të formosh një koncept nga një grumbull i konceptesh që mbulon një numër të pjesëve. Dekompozu mundëson ndarjen e një koncepti në disa pjesë. Koncepti Koncepti Agregimi Dekompozimi Koncepti Koncepti Koncepti Koncepti Koncepti Koncepti Figura 3: Agregimi dhe dekompozimi i koncepteve Faqe 4 nga 21 “Programimi i Orientuar në Objekte” Prof. Dr. Isak Shabani 1.10 Gjeneralisimi dhe specializimi Gjeneralisimi paraqet zgjerimin e konceptit nga ai i ngushtë në gjerë. Specializimi formon koncept të ngushtë nga koncepti i gjerë. Figura 4: Gjeneralisimi dhe specializimi i koncepteve 1.11 Zbatimi i gjuhës programuese Java në aplikacione të ndryshme Java është gjuhë programuese që ka përparësi nga gjuhët tjera programuese në programimin e orientuar në objekte, për këto arsye: Java ka një platformë të pa varur, Java është e orientuar në objekte dhe Java është shumë e thjeshtë të mësohet. Në Java kur të krijohet një objekt, JVM (Java Virtual Machine) në mënyrë automatike rezervon memorien për atë objekt. Zhvillimi i shpejtë i teknikave programuese dhe internetit ka lindur idenë tek programuesit e aplikacioneve softuerike për një mjedis të ri të gjuhëve programuese siç është Java (lexohet: gjava). Java është gjuhë programuese modern që mundëson programet e krijuara në kompjuter personal të zbatohen në: Kompjuterët personal (WinApp.), Internet dhe WWW (WebApp.) dhe Pajiset e dorës (MobApp.) Faqe 5 nga 21 “Programimi i Orientuar në Objekte” Prof. Dr. Isak Shabani 1.11 Hyrje në Java 1.11.1 Historia e Java Java për herë të parë është zbuluar në vitin 1991 nga James Gosling, inxhinier i kompanisë “Sun Microsystems”. James shprehi pakënaqësi ndaj gjuhës programuese C++ dhe vendosi të shkruan një gjuhë programuese më inteligjente të emëruar në fillim “Oak” (Shqip: lis), sipas pemës që ishte pranë dritares së tij, fillimisht për “Sun Microsystems” në projektin “set-top box”, e pastaj si gjuhë e evoluar më vonë për t'u bërë Java. Në fillim qëllimi i kësaj gjuhe programuese ishte që të përdoret për programe televizive, por meqë nuk pati sukses në këtë drejtim Java u orientua në Interent. Në vitin 1994 dy inxhinier të kompanisë “Sun Microsystems” botuan versionin e parë të Java të quajtur “WebRunner”. Në Maj të vitit 1995, u shkrua kompajleri i Java në gjuhën programuese “C” dhe ky vit merret si vit lindjes së gjuhës Java e pranuar prej standardeve ndërkombëtare me emrin ”Sun World”. HotJava për herë të pare ka mundësuar aplikacionet e ndërtuar në Java të ekzekutohen në Ueb shfletues (Web browser). 1.11.2 Karakteristikat e Java Gjuha programuese Java ka këto karakteristika që dallojnë dhe fuqizojnë nga gjuhët tjera programuese: e thjeshtë dhe lehtë për përdorim, e orientuar në objekte, e shpërndarë dhe interpretuese, e fuqishme dhe e sigurt, arkitekturë neutrale dhe porative, performancë të lartë, mundëson “multithreaded” dhe dinamike. 1.11.3 Platforma dhe instalimi i Java JDK (Java Development Kit), është mjedis për zhvillimin aplikacioneve softuerike në Java dhe përfshin: Java Runtime Environment (JRE), Interpreter/Loader (java), Kompalimin (javac), Arkivimin (jar) , Gjeneratorin e dokumentacionit (javadoc) dhe Vegla të tjera të nevojshme për zhvillimin e programeve në Java Edicionet e JDK janë: Java Standard Edition (J2SE), përdoret për të zhvilluar aplikacione “Client-Side” të pavarura, Faqe 6 nga 21 “Programimi i Orientuar në Objekte” Prof. Dr. Isak Shabani Java Enterprise Edition (J2EE), përdoret për të zhvilluar aplikacione “Server-Side”, siç janë Java servlets dhe Java Server Pages (JSP). Java Micro Edition (J2ME), përdoret për të zhvilluar aplikacione në platformat mobile siç janë telefonat celular. Në këtë tekst mësimor do të përdorim J2SE. 1.11.4 Instalimi i Eclipse Për shkuarjen dhe ekzekutimin e programeve në këtë tekst mësimor kemi përdorur veglën Eclipse. Në vijim kemi ilustruar rrugën se si do ta zbritni veglën Eclipse nga faqja zyrtare e kompanisë Oracle dhe instaloni në makinë tuaj: Hapi 1: Instalojmë JDK-në nga linku: https://www.oracle.com/technetwork/java/javase/downloads/index.html Figura 5: Instalimi i JDK Faqe 7 nga 21 “Programimi i Orientuar në Objekte” Prof. Dr. Isak Shabani Hapi 2: Instalojmë Java IDE nga linku: https://www.eclipse.org/downloads/packages/ Figura 5: Instalimi i IDE-së Hapi 3: Familjarizohemi me Java IDE. Figura 6: Familjarizohemi me Java IDE Faqe 8 nga 21 “Programimi i Orientuar në Objekte” Prof. Dr. Isak Shabani Eclipse.exe Figura 7: Krijimi i projektit në Java Eclipse.exe Figura 9: Krijimi i klasë në Java Faqe 9 nga 21 “Programimi i Orientuar në Objekte” Prof. Dr. Isak Shabani Hapi 4: Fillimi programimit Figura 10: Ambienti për programim në Java 1.11.5 Programi i parë në Java Me poshtë kemi paraqitur programin e pare ne gjuhen programuese Java. Ne rreshtin 1. është definuar emri i klasës Main. Brenda klasës Main tek rreshti 2. është e definuar metoda statike main(String[] args)*, e cila është pjesa e kodit ku behet ekzekutimi i programit ne Java. 0. package kapitulli1; 1. public class Fillimi { 2. public static void main(String[] args) { 3. System.out.println("Mirë se vini në Java!"); 4. } 5. } Programi 1: Programi i parë në Java. Pas ekzekutimit te kodit (programit 1), ne ekran do te shtypet mesazhi: “Mirë se vini në Java!”, siç është definuar ne rreshtin 3. Kllapa e madhe { në rreshtin 1. Tregon fillimin e trupit të programit me klasës Fillimi, kllapa } në reshtin 5 tregon përfundimin e programit për klasën Main. Kllapa { në rreshtin 2. Tregon fillimin e ekzekutimit të metodës main, ndërsa kllapa } në rreshtin 4. tregon përfundimin e metodës main. Faqe 10 nga 21 “Programimi i Orientuar në Objekte” Prof. Dr. Isak Shabani 1.11.6 Anatomia e Programit Java Si në çdo gjuhë programuese edhe në Java anatomia e programit përbëhet nga: Komentet (Comments), Paketa (Package), Fjalët e rezervuara (Reserved weords), Ndryshuesit (Modifiers), Deklarimet (Statements), Blloqet (Blocks), Klasat (Classes) dhe Metodat (Methods). Komentet në Java mund të jenë: në një rresht, ku komenteve ju paraprinë dy slesha (//). Në shumë rreshta, të mbyllur në mes të (). Kur kompajleri e sheh //, injoron tekstin në këtë rreshtë. Kur kompajleri e sheh dhe injoron testin në mes të. Paketat në Java janë shumë të rëndësishme. Një paketë në Java përdoret për të grupuar klasa të lidhura mes veti. Mendoni për atë si një folder që përmban dokumente të ndryshme. Ne Java paketat përdoren për të shmangur konfliktet e emrave dhe për të shkruar një kod që mirëmbahet më lehtë. Rreshti zero në programin (package kapitulli1;) specifikon emrin e paketës kapitulli1, për klasën Fillimi. Fjalët e rezervuar ose fjalët kyçe janë fjalë që kanë një kuptim të veçantë tek kompajleri dhe nuk mund të përdoren për qëllime tjera në program. Për shembull, kur kompajleri e sheh shkrehjen "class", e kupton se fjala pas class është emri për klasën. Fjalë të tjera të rezervuara nga shembulli 1. janë public, static dhe void. Modifikuesit. Java përdor disa fjalë të rezervuara që quhen modifikues (modifiers) që specifikojnë vetitë e të dhënave dhe metodave. Modifikuesit që përdoren në Java janë: public, static, private, final, abstract, dhe protected. Karakteristikë e modifikuesit public për metodat dhe klasat është se lejon qasjen nga programet tjera. Karakteristikë e modifikuesit private për metodat dhe klasat është se nuk lejon qasjen nga programet tjera. Në detaje për ndryshuesit (modifikuesit) do të flasim në kapitujt ku janë trajtuar Klasat dhe Objektet. Deklarimet (ang. Statements). Një deklarim paraqet një veprim ose një sekuencë veprimesh. Deklarimi System.out.println(“Miresevini ne Java!") në programin 1. është një deklarim Faqe 11 nga 21 “Programimi i Orientuar në Objekte” Prof. Dr. Isak Shabani (statement) për të paraqitur shprehjen në dalje të programit "Miresevini ne Java!". Çdo deklarim në Java përfundon me pikëpresje (;). Blloqet paraqesin kodet brenda kllapave të mëdha dhe paraqesin grupet e komponentëve të një programi. Një bllok në Java është një grup kodesh i mbyllur brenda kllapave { } brenda çdo klase, metode ose konstruktori. Fillon me një kllapën hapëse ( { ) dhe përfundon me një kllapën mbyllëse ( } ). Midis kllapave hapëse dhe mbyllëse, ne mund të shkruajmë kode të cilat mund të jenë një grup prej një ose më shumë deklaratash. Klasa është konstrukti thelbësor në Java. Një klasë është një mostër ose planë për objektet. Për të programuar në Java, duhet të kuptoni klasat dhe të jeni në gjendje për të krijuar dhe përdorur klasat. Misteri i klasës do të vazhdoj të zbulohet dhe kuptohet në kapitujt në vijim të këtij teksti mësimorë. Për fillim, le të kuptohet se një program në Java krijohet duke përdorur një ose më shumë klasa. Metoda është një bllok i kodit ose një koleksion deklaratash ose një grup kodesh të grupuara së bashku për të kryer një detyrë ose operacion të caktuar. Përdoret për të arritur ripërdorimin e kodit. Ne shkruajmë një metodë një herë dhe e përdorim atë shumë herë, referohet me emrin dhe mund të thirret në çdo pikë në një program duke shfrytëzuar emrin e metodës. 1.11.7 Identifikatorët, variablat dhe tipet e të dhënave në Java Identifikatorët janë emrat e variablave, metodave, klasave, paketave dhe ndërfaqjet. Një identifikatorë është një sekuecë e karaktereve konsiston në: shkronja, numra, underscores (_) dhe shanja e dollarit($). Një identifikatorë mund të filloj me shkronjë, underscore (_), ose shenjë të dollarit ($). Një indentifikatorë nuk mund të filloj me numër. Një indentifikatorë nuk mund të jetë fjalë e rezervuar. Një indentifikatorë nuk mund të jetëjetë: true, false, ose null. Një indentifikatorë nuk mund të jetë me gjatësi të pa kufizuar. Variabla në Java është një kontejner të dhënave që ruan vlerat e të dhënave gjatë ekzekutimit të programit. Çdo variabël i caktohet një tip i të dhënave që përcakton llojin dhe sasinë e vlerës që mund të mbajë. Variabla është një emër i vendndodhjes së memories së të dhënave. Një variabël është një emër që i jepet një lokacioni memorie. Në Figurën 9. Është paraqitur mënyra se si rezervohet memoria për ruajtjen e variablave: int nota = 10; Tipi i të dhënave Emri i variabës Vlera 10 Rezervimi i meories për variablën RAM Figura 8: Rezervimi i memories për variablat Faqe 12 nga 21 “Programimi i Orientuar në Objekte” Prof. Dr. Isak Shabani Gjuha programuese Java ka tre lloje të variablave: Variablat e instancës, deklarohen brenda një klase dhe jashtë çdo metodë, konstruktori ose blloku si në vijim: 1. class Studenti { 2. String emri; //emri dhe mosha janë variabla të instances në klasën Studenti 3. int mosha; 4. } Programi 2: Deklarimi i variablave të instancës Variablat satike, deklarohen me fjalën kyçe statik dhe inicializohen vetëm një here 1. class Studenti { 2. String emri; 3. int mosha; 4. static int kodiFakultetit=15; 5. } //kodi Fakultetit ëshë variabël satike në klasën Studenti Programi 3: Deklarimi i variablave statike Variablat lokale, deklarohen brenda metodës, konstruktorit ose blloku si në vijim: 1. float jepZbritje (int cmimi) { 2. float zbritje; //zbritje është variabël lokale 3. zbritje=cmimi*(20/100); 4. return zbritje; 5. } Programi 4: Deklarimi i variablave lokale Tipet e të dhënave specifikojnë madhësinë tipin e vlerave që mund të ruhen në një identifikues. Në Java, tipet e të dhënave klasifikohen në dy kategori: Tipet e të dhënave primitive, pasi që një tipi i të dhënave primitive është deklaruar, tipin e saj kurrë nuk mund të ndryshojmë, edhe pse në shumicën e rasteve vlera e tij mund të ndryshojë Tipet e të dhënave jo-primitive - paraqesin tipin e të dhënave referencë që përdoren për t'iu referuar një objekti. 1.11.8 Shprehjet dhe operatorët në Java Shprehjet kryejnë veprime specifike, bazuar në një operator, me një ose dy operandë. Një operand mund të jetë një konstante, një variabël ose një rezultat funksioni. Operatorët janë aritmetikë, logjikë dhe relacionalë. Ashtu si me C++ që i keni mësuar në lëndë Bazat e programimi, edhe në Java disa operatorë ndryshojnë në funksionalitet sipas llojit të të dhënave të operandëve të specifikuar në shprehje. Shprehjet janë blloqe themelore të ndërtimit të çdo programi Java, Faqe 13 nga 21 “Programimi i Orientuar në Objekte” Prof. Dr. Isak Shabani zakonisht të krijuara për të prodhuar një vlerë të re, megjithëse ndonjëherë një shprehje i cakton një vlerë një variable. Operatorët në Java klasifikohen në pesë lloje: Operatorët aritmetikë, Operatorët e shoqërimit, Operatorët relacionalë. Operatorët logjikë, Operatorët unarë dhe Operatorët binarë. Operatorët aritmetikë. Operatorët aritmetikë përdoren për të kryer veprime aritmetike mbi variabla dhe të dhëna. Për shembull: x + y; Këtu, operatori ( + ) përdoret për të mbledhur dy variabla x dhe y. Në mënyrë të ngjashme përdoren edhe operatorë e tjerë aritmetikë në Java. Operatori Operimi + Mbledhja - Zbritja * Shumzimi / Pjestimi % Operacioni i modulit (mbetja pas pjestimit) 1. class OperatoriAritemetik { 2. public static void main(String[] args) { 3. // deklarimi i variablave 4. int x = 15, y = 3; 5. // operatori i mbledhjes 6. System.out.println("x + y = " + (x + y)); 7. // operatori i zbritjes 8. System.out.println("x - y = " + (x - y)); 9. // operatori i shumëzimit 10. System.out.println("a * b = " + (a * b)); 11. // operator i pjestimit 12. System.out.println("x / y = " + (x / y)); 13. // operatori i modulit 14. System.out.println("x % y = " + (x % y)); 15. } 16. } Programi 5: Operatorët aritmetikë Faqe 14 nga 21 “Programimi i Orientuar në Objekte” Prof. Dr. Isak Shabani Rezultati në dalje x + y = 18 x - y = 12 x* y = 45 x/y=5 x%y=0 Operatorët e shoqërimit përdoren në Java për t'i caktuar vlerat variablave. Për shembull: int nota; nota = 8; Këtu, = është operatori i shoqërimit që i cakton vlerën në të djathtë variablit në të majtë. Kjo do të thotë, 8 i caktohet notës së variablës. Le të shohim disa operatorë të tjerë të shoqërimit të disponueshëm në Java. Operatori Shebmull Ekuivalent me = a = b; a = b; += a += b; a = a + b; -= a -= b; a = a - b; *= a *= b; a = a * b; /= a /= b; a = a / b; %= a %= b; a = a % b; 1. class OperatoriShoqerimit { 2. public static void main(String[] args) { 3. // Deklarimi i variablës 4. int a = 4; 5. int var; 6. // shoqërimi i vlerës duke përdorur = 7. var = a; 8. System.out.println("duke përdorur var =: " + var); 9. // shoqërimi i vlerës duke përdorur =+ 10. var += a; 11. System.out.println("duke përdorur var +=: " + var); 12. // shoqërimi i vlerës duke përdorur =* 13. var *= a; 14. System.out.println("duke përdorur var *=: " + var); 15. } 16. } Faqe 15 nga 21 “Programimi i Orientuar në Objekte” Prof. Dr. Isak Shabani Programi 6: Operatorët e shoqërimit Rezultati i programit në dalje: duke përdorur var =: 4 duke përdorur var +=: 8 duke përdorur var *=: 32 Operatorët relacionalë përdoren për të kontrolluar marrëdhënien dhe relacioni midis dy operandëve. Për shembull: // kontrolloni nëse a është më e vogël se b a < b; Këtu, operatori < është operatori relacional. Kontrollon nëse a është më e vogël se b apo jo. Ajo kthehet ose e vërtetë (True) ose e pa vërtet (False). Operatori Përshkrimi Shembulli == Është e barabartë me 6 == 9 kthehet false != Nuk e barabartë me 6 != 9 kthehet true > Më emadhe 6 > 9 kthehet false < Më e vogël 6 < 9 kthehet true >= Më e madhe se ose e barabartë me 6 >= 9 kthehet false b); // false 13. // < operator 14. System.out.println(a < b); // true 15. // >= operatori 16. System.out.println(a >= b); // false 17. // 5)); // true 5. System.out.println((5 > 3) && (8 < 5)); // false 6. // || operatori 7. System.out.println((5 < 3) || (8 > 5)); // true 8. System.out.println((5 > 3) || (8 < 5)); // true 9. System.out.println((5 < 3) || (8 < 5)); // false 10. // ! operatori 11. System.out.println(!(5 == 3)); // true 12. System.out.println(!(5 > 3)); // false 13. } 14. } Programi 8: Operatorët logjik Rezultati i programit në dalje: (5 > 3) && (8 > 5) kthehet e vërtetë sepse të dyja (5 > 3) dhe (8 > 5) janë true. (5 > 3) && (8 < 5) kthen false sepse shprehja (8 < 5) është false. (5 < 3) || (8 > 5) kthehet e vërtetë sepse shprehja (8 > 5) është true. (5 > 3) && (8 > 5) kthehet e vërtetë sepse shprehja (5 > 3) është true. (5 > 3) && (8 > 5) kthehet false sepse të dyja (5 < 3) dhe (8 < 5) janë false. !(5 == 3) kthehet e vërtetë sepse 5 == 3 is false. !(5 > 3) kthehet e pa vërtetë sepse 5 > 3 is true. Faqe 17 nga 21 “Programimi i Orientuar në Objekte” Prof. Dr. Isak Shabani Operatorët unarë përdoren vetëm me një operand. Për shembull, ++ është një operator unar që rrit vlerën e një ndryshoreje me 1. Kjo do të thotë, ++5 do të kthejë 6. Ekzistojnë tipe të e ndryshme të operatorëve unarë: Operatori Kuptimi + nuk është e nevojshme të përdoret pasi numrat janë pozitivë - përmbys shenjën e një shprehja ++ Operatori i rritjes: rrit vlerën me 1 -- Operatori i zvogëlimit: zvogëlon vlerën me 1 ! Operatori logjik i komplementit: përmbys vlerën e një boolean 1. class OperatoriUnar { 2. public static void main(String[] args) { 3. // deklarimi i variablave 4. int a = 12, b = 12; 5. int rezultati1, resultati2; 6. // vlerat origjinale 7. System.out.println("Vlera e a: " + a); 8. // operatori i rritjes 9. resultati1 = ++a; 10. System.out.println("Pas rritjes: " + resultati1); 11. System.out.println("Vlera e b: " + b) 12. // operatori i zvoglimit 13. resultati2 = --b; 14. System.out.println("Pas zvoglimit: " + resultati2); 15. } 16. } Programi 9: Operatorët e rritjes dhe zvogëlimit Ekzekutimi i programit në dalje: Vlera e a: 12 Pas rritjes: 13 Vlera e b: 12 Pas zvoglimit: 11 Në programin e mësipërm, ne kemi përdorur operatorin ++ dhe -- si parashtesa (++a, --b). Këta operatorë mund t'i përdorim edhe si postfiks (a++, b++). There is a slight difference when these operators are used as prefix versus when they are used as a postfix. Operatorët binarë në Java përdoren për të kryer operacione në bit individualë. Për shembull, funksionimi i plotë i bitave prej 35 Faqe 18 nga 21 “Programimi i Orientuar në Objekte” Prof. Dr. Isak Shabani 35 = 00100011 (në binar) ~ 00100011 ________ 11011100 = 220 (në descimal) Këtu, ~ është një operator binar që përmbys vlerën e çdo biti (0 në 1 dhe 1 në 0). Operatorët e ndryshëm binar të pranishëm në Java janë: Operator Përshkrimi ~ Biti komplement > Zhvendosje djathtas >>> Zhvendosje e pa nëshkruar djathtas & bit AND ^ bit ekskluzi OR 1. class OperatoriBinari { 2. public static void main(String[] args) { 3. String str = "Programimi"; 4. boolean resultati; 5. // kontrollo nëse str është instanc e 6. // klasës String 7. resultati = str instanceof String; 8. System.out.println("A është str objekt String? " + resultati); 9. } } Programi 10: Operatori binar Ekzekutimi i programit në dalje: A është str objekt String? true Këtu, str është një shembull i klasës String. Prandaj, operatorit kthehet true. 1.11.9 Degëzimet në Java Ashtu siç janë përdorur degëzimet në lëndën Bazat e programimit në C++, përdoren të njëjtat edhe në Java si në vijim: urdhëri "if" urdhëri "if...else" urdhëri "if...else...if" dhe urdhëri "switch". 1.11.10 Unazat në Java Ashtu siç janë përdorur unazat në lëndën Bazat e programimit në C++, përdoren të njëjtat edhe në Java si në vijim: urdhëri "while", urdhëri "do while" dhe urdhëri "for". Faqe 19 nga 21 “Programimi i Orientuar në Objekte” Prof. Dr. Isak Shabani 1.12 Biblioteka e klasave në Java Zhvillimi i softuerit bazuar në programimin e orientuar në objekte bëhet më i lehtë duke përdorur bibliotekat e shumta të klasave që ofrohen në gjuhën programuese Java. Biblioteka e klasave është bashkësia e klasave që përkrahin zhvillimin e programit. Në Javë ekziston biblioteka standarde e klasave që mund të përdoret kur është nevoja. Klasat që ndodhen në këto biblioteka janë shumë të rëndësishme për programuesit, sepse përmbajnë funksione speciale. Programuesit shpeshherë krijojnë varshmëri nga këto biblioteka dhe ju duken si urdhra të gjuhës programuese. Në aspektin teknik, këto biblioteka nuk janë pjesë e gjuhës, por paraqesin zgjerimin dinamik të funksionalitetit të vetë gjuhës. Në këtë tekst mësimor gjatë shkuarjes së programeve do të përdoren biblioteka të ndryshme që ofron Java si në vijim: Integer (java.lang. Integer), Double (java.lang. Double). dhe klasat që përdoren më shpesh në Javë: String (java.lang. String), Math (java.lang. Math), dhe Calendar (java.util.Calendar). Biblioteka e klasave përbëhet nga më shumë pjesë. Secila pjesë paraqet të lidhura ndërmjet vete që së bashku përbëjnë Java API (ang. Application Programming Interface). Nganjëherë biblioteka komplete standarde e klasave quhet Java API. Klasat në kuadër të bibliotekës së klasave standarde janë grumbulluar në paketa (ang. package). Secila klasë është pjesë e një pakete. Klasa String është, për shembull, pjesë e paketës java.long. Kësaj pakete i takojnë edhe klasat Integer dhe Double. Klasat që ndodhen në paketën java.lang mund të përdoren në mënyrë automatike gjatë shënimit të programit. Këto klasa janë bazike dhe mund të konsiderohen si pjesë e gjuhës. Krahas paketës java.lang në bibliotekën e klasave standarde të Javës ekzistojnë edhe paketa të tjera. Nëse dëshirohet të përdoret ndonjë nga këto paketa, ato duhet të kyçen paraprakisht në program nëpërmjet deklarimit import. Disa nga paketat më të rëndësishme në bibliotekën e klasave standarde të Javës janë paraqitur në vijim: java.lang, përmban klasat kryesore në Java, numerike, string dhe objekt. Kjo paketë importohet në mënyrë implicite për çdo program në Java. Kjo paketë është në mënyrë automatike e importuar në të gjithë programet. java.io, Përmban klasat për hyrje (input) dhe daljec (output), stream-at dhe fajllat. Përmban klasat që kryejnë funksione të ndryshme të lidhura me hyrje dhe dalje. java.util, përmban shumë shërbimeve, të tilla si data. java.math, ërdoret për llogaritje matematike. java.net, përmban klasat për përkrahjen e komunikimeve në rrejta. java.awt, përmban klasat për grafika. Përdoret për punë me grafikë dhe ndërfaqe grafik të përdoruesit Faqe 20 nga 21 “Programimi i Orientuar në Objekte” Prof. Dr. Isak Shabani java.applet, përdoret për zhvillimin e apletëve. java.beans, përdoret për punë me komponentë të softuerëve. java.rmi, përmban klasat për shënimin e programit që mund të shpërndahen në më shumë kompjuterë. java.security, përmban klasat që korrespondojnë me sigurinë java.sql, përmban klasat për punë me baza të të dhënave. java.text, përmban klasat për formatimin e tekstit. javax.swing, përmban klasat për krijim e ndërfaeve grafik të përdoruesit. java.javafx, JavaFX është një platformë me burim të hapur, e gjeneratës së ardhshme për desktop, mobile, Ueb dhe sisteme të integruara të ndërtuara në Java, me synimin për të prodhuar një paketë veglash moderne, efikase për zhvillimin e aplikacioneve të pasura të klientëve. 1.12.1 Klasa Scanner Klasa “Scanner” përdoret për të marrë hyrjen e përdoruesit dhe gjendet në paketën java.util. Për të përdorur klasën Scanner, krijoni një objekt të klasës dhe përdorni ndonjë nga metodat e disponueshme që gjenden në dokumentacionin e klasës Scanner. Në shembullin në vijim tregohet si bëhet importimi i klasës Scanner, krijimi i objektit të tipit Scanner dhe thirrja e metodave të klasës Scanner. Programi 11: Përdroimi i klasës Scanner në Java Faqe 21 nga 21