Koncepte dhe Aplikime Baze ne JAVA

Më 23 Maj 1995, John Gage, drejtori i zyrës shkencore të Sun Microsystems bashkë me Marc Andreesen, bashkëkrijues dhe zëvendës president ekzekutiv i Netscape i deklaruan audiencës së SunWorld që teknologjia Java nuk ishte një mit por një realitet dhe se do të përfshihej në Netscape Navigator.

Qëllimi kryesor i krijuesve të Java-s ishte të krijonin një gjuhë që do të përfshinte pjesën më të madhe të funksionaliteteve të C++, gjuha më dominuese e asaj periudhe, por duke përjashtuar disa nga proçedurat e tejzgjatura. Përmirsimi revolucionar i hardware-it nga viti 1972 ne 1991 solli rritje eksponenciale të kërkesës për software më të mëdha dhe më komplekse. Gjuha C e zhvilluar në 1972 nga Dennis Ritchie, pas një dekade, u bë gjuha më popullore për programuesit, megjithatë struktura sintaksore e saj rezultoi e tejzgjatur. Në 1979, Bjarne Stroustrup zhvilloi gjuhën C++, një zgjerim i C-së që përfshinte filozofinë e re Object Oriented Programming.

Java është një gjuhë programimi e nivelit të lartë. Ajo ekzekutohet në platforma të ndryshme si Windows, Mac OS dhe versione të ndryshme të UNIX.

Që prej krijimit të saj Java ka pësuar shumë ndryshime. Fillimisht ishte e njohur si Java Development Kit ose JDK dhe e lidhur ngushtësisht me një platformë e cila përbëhej nga një set API (Application Programming Interfaces). Megjithëse shumë e ngadaltë dhe primitive në krahasim me standartet e ditëve të sotme, Java filloi një revolucion në zhvillimin e software-ve. Që prej versionit 1.2 në ’98, JDK dhe Java SE platform nuk janë sinonime të njëra tjetrës. Teknologjia Java mund të ndahet në komponentët e mëposhtëm:

 

Java është gjuha që përfshin sintaks mjaft strikte.

Java 2 Platform, Standard Edition (J2SE më vonë J2EE) i referohej platformës dhe ndër të tjera përfshinte klasat në paketat java.lang dhe java.io. Ka qenë blloku ndërtues mbi të cilin zhvilloheshin aplikimet Java.

Java Virtual Machine (JVM) është një software virtual machine që ekzekuton kodin Java të kompiluar. Meqënse kodi Java i kompiluar është përgjithësisht bytecode, JVM është përgjgjegjëse per kompilimin e këtij bytecode në kod makine përpara ekzekutimit. JVM merret zakonisht edhe me menaxhimin e memories në mënyrë që këtë mos ta bëjë kodi i aplikacionit.

Java Development Kit (JDK) ka qenë dhe mbetet pjesa software që zhvilluesit e Javës përdorin për krijimin e aplikacioneve. Ajo përmban një kompilator për gjuhën Java, një gjenerues dokumentacioni, dhe mjete për të punuar me kodin fillestar, zakonisht edhe Java source code në mënyrë që platforma të aktivizojë klasat për debugg.

Java Runtime Environment (JRE) ka qenë dhe mbetet pjesa software që përdoruesit përfundimtar shkarkojn për të ekzekutuar aplikimet Java të kompiluara. Përmban një JVM por asnjë nga mjetet e zhvillimit të JDK. JDK gjithsesi e përmban JRE

 

Disa koncepte dhe aplikime bazë në Java….

Objektet– Objektet kanë gjëndje dhe sjellje. Një objekt është instanca e një klase.

Klasa — Një klas mund të përkufizohet…si një template që përcakton gjendjet dhe sjelljet e një objekti…si një tip i të dhënave i vetëpërcaktuar, që mund të përdoret për të modeluar struktura të reja…si një grumbullim i metodave dhe variablave të tipeve të ndryshme.

Klasa objekt, në paketën java.lang, ndodhet në krye të pemës hierarkike. Çdo klasë është pasardhëse e kësaj klase. Çdo klasë e shkruar ose përdorur nga ju trashëgon instancat e metodave të klasës Object. Disa prej metodave më të përdorura janë equals(Object obj), hashCode(), toString() etj.

Metoda — Metoda mund të përkufizohet si sjellja e një objekti. Një klasë mund të përmbaj disa metoda. Në metoda shkruhet logjika, manipulohen të dhenat dhe ekzekutohen veprimet.

Një metodë konsiderohet edhe si “mesazh”, të cilin objekti ku thërritet kjo metodë ja dergon objektit që e deklaron këtë metodë.

Metodat rekursive — Rekursioni është një teknik programimi në të cilën një metod thërret vetveten. Kjo teknik mund të duket si një lup pambarim, gjë që mund të ndodh në disa raste, por ne mund të kontrollojm nëse ka një kondit e cila mund të ndërpres thërritjen e metodës. Rasti kur përfundojmë rekursionin quhet base case.

Shembulli i mëposhtëm është klasik në shpjegimin e rekursionit. Ai llogarit faktorialin e një numri n.

 

 //iterativ

import java.util.*;

public class faktoriali {

public static void main (String [] args){

System.out.println("Shkruani numrin per te cilin deshironi te llogaritet faktoriali: ");

Scanner input = new Scanner(System.in);

int f = input.nextInt();

int faktoriali = 1;

while (f>1){

faktoriali= faktoriali * f;

f=f -1;

}

System.out.println(" Faktoriali eshte " + faktorial);

}

}

 

 //rekursiv

import java.util.Scanner;

public class FaktorialRekrusiv {

public static int faktorial(int nr){

//base case

if (nr == 0)

return 1;

return nr *faktorial(nr-1);

}

public static void main (String [] args){

System.out.println("Per cilin numer deshironi te llogarisni faktorialin?");

Scanner input = new Scanner(System.in);

int nr = input.nextInt();

System.out.println(faktorial(nr));

}

}

 

Konstruktori — Konstruktori është një metodë e veçantë e klasës e cila nuk ka tip kthimi pasi tipi që ajo kthen është i përcaktuar që është objekt i tipit të klasës në të cilën është konstruktori. Ai thërritet duke përdorur fjalën new DHE KA GJITHMONË EMRIN E KLASËS. Nëse nuk përcaktojmë një konstruktor kompilatori ndërton një konstruktor bosh për klasën.

 

Variablat — Më poshtë variablat janë shpjeguar sipas kategorive

Variabla të instancës (jo-statike) — Çdo instanc e një klase (çdo objekt) ka setin e vet unik të variablave. Gjëndja e një objekti krijohet nga vlerat që i vendosen instancës së variablave.

Variablat e klasës (statike) — Çdo fush e deklaruar me fjalën kyçe static është variabël e klasës, që do të thotë se ekziston vetëm një kopje e kësaj variable pavarësisht sa instanca të klases ka. Për të treguar se vlera e një variable nuk do të ndryshoj asnjeherë shtohet fjala kyçe final.

Variabla Lokale — Ashtu si objektet ruajn gjendjen e tyre në fusha, metodat ruajn gjendjen e tyre temporale në variabla lokal. Nuk ka asnjë fjalë kyçe që të percaktoj këtë lloj variable. Përcaktimi bëhet nga vendi se ku variabla deklarohet, që është midis kllapave hapëse dhe mbyllëse të një metode. Kështu variablat lokal janë të aksesushme vetëm brenda metodës ku janë deklaruar dhe jo në pjesët e tjera të klasës.

Parametrat — shfaqen në përcaktimin e një metode si për shembull args në metodën public static void main(String [] args).

 

Java Modifiers — Ndahen ne dy kategori

Access Modifiers: default, public, protected, private

Non-access Modifiers: final, abstract, strictfp

 

Te dhënat primitive në Java mund të jenë të tipit: byte, short, int, long, float, double, char, String, Boolean. Por Java na jep mundësin që të konvertojmë numrat në String dhe String-et në numra. Nënklasa Number që përfshin të gjithë llojet primitiv të numrave ka metodën valueOf() që konverton një string në një objekt të tipit numër. Të gjitha klasat e Number kanë edhe metodën parseXXXX() që nuk kthen një objekt por vetë llojin primitiv. Ndërsa për të konvertuar një numër në String përdoret metoda toString().

Kur duam të kontrollojmë nëse një variabël (ose një objekt) është i një tipi të caktuar përdorim fjalën kyçe instanceof. Për shembull

if(child instanceof Parent) => true/false

if(s instanceof java.lang.String) => true/false

Shembulli i mëposhtëm afishon 21 kufizat e para të vargut fibonaçi duke kthyer vlerat integer në String.

public class fibonaci {

public static void main(String[]args){

String vargu = Integer.toString(0);

String hapsire= " ";

int kufizaParaArdhse = 0;

int kufiza = 1;

int temp;

 

for (int j = 0; j< 21; j++){

vargu = vargu + hapsire+ Integer.toString(kufiza);

temp= kufiza;

kufiza = kufiza + kufizaParaArdhse;

kufizaParaArdhse= temp;

}

System.out.println(vargu);

}

}

 

Java Arrays — Vektorët janë objekte që ruajnë disa variabla të të njëjtit tip. Çdo variabël quhet element dhe çdo element aksesohet nëpërmjet index-it të tij numerik (numërimi fillon nga 0). Vektorët Multidimensional janë vektorë, komponentët e të cilëve janë vektorë. Deklarimi i tyre mund të bëhet si më poshtë:

String [][] student = {{Emer, Mbiemer, Dega},

{A, B, Matematik},

{C, D, Fizike}

};

Për të parë se si mund të plotesojmë me vlera dhe të aksesojmë vlerat e vektorve do të shohim shembullin më poshtë:

 

 import java.util.Scanner;

public class trekendshiPaskalit {

public static void main (String [] args){

Scanner input = new Scanner(System.in);

System.out.println("sa rreshta te trekendshit te paskalit duhet te printohen?");

int rreshta = input.nextInt();

int [][] vektori = new int [rreshta][];

/*krijimi i trekendeshit*/

for (int i= 0; i<vektori.length; i++){

vektori [i] = new int[i+1];

}

/*plotesimi me vlera*/

vektori [0][0] = 1;

for (int i = 1; i<vektori.length;i++){

vektori[i][0] = 1;

for (int j =1;j<vektori[i].length -1;j++){

vektori [i][j] = vektori [i-1][j-1] + vektori [i-1][j];

}

vektori [i][vektori[i].length-1] = 1;

}

/*printimi*/

for (int i = 0; i< vektori.length;i++){

for(int j= 0;j<vektori[i].length;j++){

System.out.print(vektori[i][j]);

System.out.print(" ");

}

System.out.println();

}

}

}

Enums — Enums limitojnë një variabël që të marrë vlerë vetëm nga një grup i paracaktuar vlerash.

 

Operatoret — Operatorët e barazimit dhe relacional përcaktojn nëse një operand është më i madh se, më i vogel se, i njëjtë, ose jo i njëjtë me operandin tjeter.

= =    i njëjtë me

! =     jo i njëjtë me

>       më i madh se

> =    më i madh ose i barabartë me

<       më i vogël se

<=     më i vogël ose i barabartë me

Opertaorët Bitwise

Mund të përdoren me tipat long, int, short, char dhe byte. Në qoftë se a=50 dhe b=15

a= 0011 0010

b= 0000 1111

Operatori AND a&b= 0000 0010

Operatori OR a|b= 0011 1111

Operatori XOR a^b= 0011 1101

Komplementari ~a = 1100 1101

 

Operatorët logjik

A=true B=false

Operatori logjik AND (A&&B) => false

Operatori logjik OR (A||B) => true

Operatori logjik NOT (!A) => false

 

Operatorët e caktimit

+=     B+=A e njejt si B=B+A

*=    B*=A e njejt si B=B*A

/=     B/=A e njejt si B=B/A

-=     B-=A e njejt si B=B-A

&=   B&=3 e njejt si B=B&3

^=     B^=3 e njejt si B=B^3

|=     B|=3 e njejt si B=B | 3

Një tjetër operator kondicional është ?: që mund të konsiderohet si shkurtim i if-then-else. Përdorimi i tij është si më poshtë:

int vlera1 = 1;

int vlera2 = 2;

int rezultati;

boolean kondita = true;

rezultati = kondita ? vlera1 : vlera2;

“Në qoftë se kondita është true, vlera e vlera1 do ti kaloj rezultatit, përndryshe vlera e vlera2 do ti kaloj rezultatit”

 

–Return, Exception, break and continue

Ndryshimi i rrjedhës së ekzekutimit mund të bëhet në tre mënyra

  1. Nëpermjet return, i cili ndalon ekzekutimin dhe kthen si vlerë vlerën e dhënë psh: return 5; kthen 5, return; kthen void pra asgjë.
  2. Ndryshimi i rrjedhës së egzekutimit ka kuptim të ndodh gjithashtu kur ndodh një situatë përjashtimore: Exception.

Kur një error ndodh brenda një metode, metoda krijon një objekt dhe ja kalon sistemit runtime. Objekti i quajtur exeption object përmban informacion në lidhje me error-in, përfshin llojin dhe gjendjen e programit në kohën kur ndodh error-i. Krijimi i një exeption object dhe kalimi i tij në runtime quhet hedhje e një exeption. Mund të hedhim një exception me anë të instruksionit throw new Exception();

 

 public class Exceptions{

public static void main(String Args[]){

int[] array = new int[3];

try{

for(int i=0;i<4;++i){

array[i] = i;

}

}

catch(ArrayIndexOutOfBoundsException e){

System.out.println(e.getMessage());

System.out.println("Oops, we went to far, better go back to 0!");

}

finally{

for(int i=0;i<3;++i){

System.out.println(array[i]);

}

}

}

}
  1. Instruksionet break dhe continue.

Konstrukti switch. Për mos të përdorur if()else if() else përdorim:

switch(variable){

         case “a”:instruksione; break;

default: instruksionexx;

}

Nëse nuk vendoset break pas një rasti egzekutohet edhe case i poshtëm.

Instruksionet në default egzekutohen nëse variabli nuk është i barabartë me asnjë vlerë nga ato që janë në case.

Leave a Reply

Your email address will not be published. Required fields are marked *