Si njė gjuhė qė ka tipare tė orientuara nė objekte, JAVA suporton konceptet themelore tė mėposhtme.
Polimorfizmi
Trashėgimnia
Enkapsulimi
Abstaksioni
Klasat
Objektet
Instancat
Metodat
Shkėmbimin e mesazheve
Nė kėtė kapitull, do tė shikojmė konceptet e Klasave dhe Objekteve.
Objektet Objektet kanė gjendje dhe sjellje. Pėr shembull njė mace ka si gjendje: ngjyrėn, emrin dhe racen dhe si sjellje ka: ngrėnien, mjaullitjen, tundjen e bishtit, ecjen etj. Njė objekt ėshtė njė instancė e klasės.
Klasat Njė klasė mund tė pėrcaktohet si njė template ose pėrshkrim i gjendjes ose sjelljes qė objekti i saj suporton.
Objektet nė JAVA
Tashmė do tė shikojmė mė thellė se ēfarė janė objektet. Nėse marrim nė konsideratė botėn reale, ne mund tė gjejmė shumė objekte rreth nesh, si makina, qen, njerėz etj. Tė gjitha kėto objekte kanė njė gjendje dhe njė sjellje.
Nėse marrim nė konsideratė njė qen, atėherė gjendja ėshtė: emri, rraca, ngjyra dhe sjellja ėshtė, lehja, lėvizja e bishtit dhe vrapimi.
Nėse krahasojmė objektet software me objektet e botės reale, ato kanė shumė karakteristika tė pėrbashkėta.
Objektet softwarike gjithashtu kanė gjendje dhe sjellje. Gjendja e njė objekti softwarik ruhet nė fusha dhe sjellja tregohet nga metodat.
Kėshtu nė zhvillimin softwarik, metodat operojnė nė gjendjet e brendshme tė objekteve dhe komunikimi mes objekteve bėhet nėpėrmjet metodave.
Klasat nė JAVA
Njė klasė ėshtė njė projekt nga i cili krijohen objektet individuale.
Mė poshtė jepet njė klasė e thjeshtė:
Shembull:
public class Qen {
String rraca;
int mosha;
String ngjyra;
void lehje() {
}
void uri() {
}
void fjetje() {
}
}
Njė klasė mund tė pėrmbajė njė nga tipat e mėposhtėm tė variablave:
Variablat Lokale Variablat e pėrcaktuara brenda metodave, konstruktorėve ose blloqeve quhen variabla lokale. Variabli do tė deklarohet dhe inicializohet nė metodė dhe variabli do tė shkatėrrohet kur metoda tė kompilohet.
Variablat e Instancės Variablat e instancės janė variabla tė njė klase por jashtė ēdo metode. Kėto variabla inicializohen kur klasa kompletohet. Variablat e Instancės mund tė aksesohen nga brenda ēdo metode, konstruktori dhe blloku klasė tė njė klase tė caktuar.
Variablat e Klasės Variablat e klasės janė variabla tė deklaruara brenda njė klase, jashtė ēdo metode me njė fjalė kyēe statike.
Njė klasė mund tė ketė numėr tė ēfarėdoshėm metodash pėr tė aksesuar vlerėn e metodave tė llojeve tė ndryshme. Nė shembullin e mėsipėrm, lehja(), uria() dhe fjetja() janė metoda.
Mė poshtė janė disa nga ēėshtjet mė tė rėndėsishme qė duhet tė diskutohen kur shikojme brenda klasave nė gjuhėn JAVA.
Konstruktorėt
Kur flasim pėr klasat, njė nga nėn ēėshtjet mė tė rėndėsishme janė konstruktorėt. Ēdo klasė ka njė konstruktor. Nėse nuk ndėrtojmė manualisht njė konstruktor pėr njė klasė, kompiluesi i JAVA ndėrton vetė njė konstruktor pėr atė klasė.
Ēdo herė qė njė objekt i ri krijohet, tė paktėn njė konstruktor duhet tė thirret. Rregulli kryesor i konstruktorit ėshtė qė ai duhet tė ketė tė njėjtin emėr si klasa. Njė klasė mund tė ketė mė shumė se njė konstruktor.
Japim shembullin e njė konstruktori:
Shembull:
public class Kelysh {
public Kelysh() {
}
public Kelysh(String emri) {
// Ky konstruktor ka njė parametėr, emri.
}
}
Java gjithashtu suporton Klasat Singleton ku ju keni mundėsinė tė krijoni vetėm njė instancė tė njė klase.
Shėnim: Ka dy tipe tė ndryshme tė konstruktorėve. Do tė diskutojmė konstruktorėt mė nė detaje nė kapitujt e ardhshėm.
Krijimi i njė objekti
Siē e pėrmendėm edhe mė lart, njė klasė siguron pėrshkrimin pėr objektet. Kėshtu bazikisht, njė objekt krijohet nga njė klasė. Nė JAVA, fjala kyēe new pėrdoret pėr tė krijuar objekte tė reja.
Ka 3 hapa pėr tė krijuar njė objekt nga njė klasė.
Deklarimi Deklarimi me njė emėr variabli dhe njė tip objekti.
Krijimi Fjala kyēe new pėrdoret pėr tė krijuar njė objekt tė ri.
Inicializimi Fjala kyēe new ndiqet nga thirrja e njė konstruktori. Kjo thirrje krijon objektin e ri.
Mė poshtė ėshtė shembulli i krijimit tė njė objekti.
Shembull:
public class Kelysh {
public Kelysh(String emri) {
// Ky konstruktor ka njė parametėr, emri.
System.out.println("Emri i kėlyshit ėshtė:" + emri );
}
public static void main(String []args) {
// Deklarimi i mėposhtėm do tė krijojė njė objekt me emin kelyshiIm
Kelysh kelyshiIm = new Kelysh( "tomi" );
}
}
Nėse kompilojmė dhe run-ojmė kodin e mėsipėrm, ai do tė prodhojė rezultatin e mėposhtėm.
Rezultati
Emri i kėlyshit ėshtė: tomi
Aksesimi i Variablave tė Instancės dhe metodave
Variablat e Instancės dhe metodat aksesohen nga objektet e krijuara. Pėr tė aksesuar njė Variabėl Instance, ndiqni kodin e plotė mė poshtė:
/* Fillimisht krijoni njė objekt */
ObjectReference = new Constructor();
/* Thėrrisni variablin si mė poshtė */
ObjectReference.variableName;
/*Tashmė mund tė thėrrisni njė metodė klase si mė poshtė */
ObjectReference.MethodName();
Ky shembull ju shpjegon si tė aksesoni variablat e instancės dhe metodat e njė klase.
public class Kelysh {
int moshaeKelyshit;
public Kelysh(String emri) {
// Ky konstruktor ka njė parametėr, emri.
System.out.println("Emri i zgjedhur ėshtė :" + emri );
}
public void setmosha( int mosha ) {
moshaeKelyshit = mosha;
}
public int getmosha( ) {
System.out.println("Mosha e kėyshit ėshtė :" + moshaeKelyshit );
return moshaeKelyshit;
}
public static void main(String []args) {
/* Krijimi i objektit */
Kelysh kelyshiIm = new Kelysh( "tomi" );
/* Thirrja e metodės sė klasės pėr tė dhėnė moshėn e kėlyshit */
kelyshiIm.setmosha( 2 );
/* Thirrja e njė metode tjetėr tė klasės pėr tė marrė moshėn e kėlyshit */
kelyshiIm.getmosha( ); ,/br>
/* Ju mund tė aksesoni njė variabėl instance si mė poshtė */
System.out.println("Vlera e variablit ėshtė :" + kelyshiIm.moshaeKelyshit );
}
}
Nėse ne kompilojmė dhe run-ojme kodin e mėsipėrm, do tė prodhohet rezultati i mėposhtėm.
Rezultati:
Emri i zgjedhur ėshtė:tomi
Mosha e kėlyshit ėshtė:2
Vlera e variablit ėshtė:2
Rregullat e deklarimit tė dosjeve tė burimit
Rregullat e deklarimit tė dosjeve tė burimit janė esenciale kur deklarojmė klasat, importojmė deklaratet dhe paketat e deklaratave nė dosjet e burimit.
Mund tė ketė vetėm njė klase publike pėr njė dosje burimi.
Njė dosje burimi mund tė ketė shumė klasa jopublike.
Emri i klasės publike duhet tė ketė tė njėjtin emėr me dosjen e burimit dhe duhet tė ketė prapashetesėn .java nė fund. Pėr shembull: emri i klasės ėshtė public class Punonjesi{} atėherė emri i dosjes sė burimit duhet tė jetė Punonjesi.java.
Nėse klasa pėrcaktohet brenda njė pakete, atėherė deklarata e kėsaj pakete do tė jetė deklarata e parė nė kodin e burimit.
Nėse ka deklarata tė importuara, ato duhet tė shkruhen mes deklaratės sė paketės dhe deklarimit tė klasės. Nėse nuk ka deklarata pakete, atėherė deklaratat e importuara duhet tė jenė nė linjėn e parė nė kodin e burimit.
Deklaratat e importuara dhe tė paketave do tė pėrfshihen nė tė gjitha klasat prezente nė kodin e burimit, nuk ėshtė e mundur tė deklarohet njė import ose deklarim pakete e ndryshme nė klasa tė ndryshme nė kodin e burimit.
Klasat kanė disa nivele aksesi dhe ka tipe tė ndryshme tė klasave; klasat abstrakte, klasat finale etj. Do ti shpjegojmė tė gjitha kėto nė kapitullin pėr modifikuesit e aksesit.
Pėrvec tipeve tė pėrmendura mė lart tė klasave, JAVA gjithashtu ka disa klasa speciale tė quajtura klasa tė brendshme ose klasa Anonymous ose anonime.
Paketa JAVA
Nė fjalė tė thjeshta, ka njė mėnyrė pėr tė karakterizuar klasat dhe ndėrfaqet. Kur zhvillojmė aplikacione nė JAVA, me mijėra klasa dhe ndėrfaqe do tė shkruhen, dhe mė pas karakterizimi i kėtyre klasave ėshtė shumė i kėshillueshėm pėr ta bėrė punėn tuaj sa mė tė lehtė.
Deklaratat e importuara
Nė JAVA nėse njė emėr i kualifikuar, qė pėrfshin emrin e paketės dhe tė klasės, ėshtė i dhėnė atėherė kompiluesi mund tė lokalizojė lehtėsisht kodin e burimit ose klasat. Deklaratat e importuara janė njė mėnyrė pėr tė dhėnė vendodhjen e duhur pėr kompiluesin qė ai tė gjejė njė klasė specifike.
Pėr shembull: Linja e mėposhtme do ta pyesė kompiluesin tė gjejė tė gjitha klasat qė gjenden nė drejtorinė java installation/java/io.
import java.io.*;
Njė rast i thjeshtė studimor
Nė rastin tone studimor do tė krijojmė 2 klasa. Ato do tė jenė Punonjesi dhe TestPunonjesi.
Fillimisht hapni edituesin Notepad, Eclipse etj, dhe shtoni kodin e mėposhtėm. Mbani mend qė kjo ėshtė klasa Punonjesi dhe klasa ėshtė njė klasė publike. Tashmė, ruani kėtė dosje burimi me emrin Punonjesi.java.
Klasa punonjėsi ka 4 variabla tė instancės: emrin, moshėn, emėrimin dhe pagėn. Klasa ka njė konstruktor tė pėrcaktuar qartė, qė merr njė parametėr.
Shembull:
import java.io.*;
public class Punonjesi {
String emri;
int mosha;
String emerimi;
double paga;
// Ky ėshtė kostruktori i klasės Punonjesi
public Punonjesi(String emri) {
this.emri = emri;
}
// Vendosni moshėn e Punonjėsit nė variablin mosha.
public void moshaePunonjesit(int moshaePunonjesit) {
mosha = moshaePunonjesit;
}
/* Vendosni emėrimin e punonjėsit nė variablin emerimi*/
public void emerimiiPunonjesit(String emerimiiPunonjesit) {
emerimi = emerimiiPunonjesit;
}
/* Vendosni pagėn nė variablin paga*/
public void pagaePunonjesit(double pagaePunojesit) {
paga = pagaePunonjesit;
}
/* Printoni detajet e punonjėsit */
public void printPunonjesi() {
System.out.println("Emri:"+ emri );
System.out.println("Mosha:" + mosha );
System.out.println("Emėrimi:" + emerimi );
System.out.println("Paga:" + paga);
}
}
Siē e pėrmendėm mė parė, procesimi fillon nė metodėn main. Mė pas ėshtė nė dorėn tonė nėse duam tė run-ojmė klasėn Punonjesi ku duhet tė jetė njė klasė kryesore dhe duhet tė krijohen objekte. Ne do tė krijojmė njė klase tė ndarė pėr kėto qėllime.
Pėr klasėn TestPunonjes, qė krijon 2 instanca tė klasės Punonjesi dhe i thėrret metodat pėr ēdo objekt pėr tė vendosur vlerat pėr ēdo variabėl.
Ruani kodin mė poshtė si TestPunonjesi.java.
import java.io.*;
public class TestPunonjesi {
public static void main(String args[]) {
/* Krijoni 2 objekte duke perdorur konstruktoret */
Punonjesi punNje = new Punonjesi("Jam Smith");
Punonjesi punDy = new Punonjesi("Emri Mbiemri");
// Thirrja e metodave per cdo object te krijuar
punNje.moshaePunonjesit(26);
punNje.emerimiiPunonjesit("Inxhinier");
punNje.pagaePunonjesit(1000);
punNje.printPunonjesi();
punDy.moshaePunonjesit(21);
punDy.emerimiiPunonjesit("Zhvillues Programesh");
punDy.pagaePunonjesit(500);
punDy.printPunonjesi();
}
}
Tashmė kompiloni tė dy klasat dhe mė pas run-oni TestPunonjesi pėr tė parė rezultatin si vijon:
Rezultati
C:\> javac Punonjesi.java
C:\> javac TestPunonjesi.java
C:\> java TestPunonjesi
Emri:Jam Smith
Mosha:26
Emėrimi: Inxhinier
Paga:1000.0
Emri: Emri Mbiemri
Mosha:21
Emėrimi: Zhvillues Programesh
Paga:500.0