Software company albania
Header

Object Oriented Java

October 27th, 2014 | Posted by bora.demi in java | Object Oriented Programming

Objektet në një gjuhë programi ashtu si edhe në botën reale kanë gjendje dhe sjellje. Gjendja e një objekti ruhet në variabla, ndërsa sjellja e tyre shprehet nëpermjet metodave.

Një objekt mund të përbëhet nga disa objekte dhe mënyra se si këto objekte “komunikojnë” me njëri-tjetrin arrihet nëpërmjet metodave, të cilat mund të sillen në një mënyrë të caktuar pa treguar gjendjen/t e objektit (enkapsulimi). Përpara se të fillojm me zhvillimin e një software në fillim duhet krijuar një model i këtij software me funksionalitet e tij dhe atë se çfarë mund të bëjë. Dizenjimi në Object Oriented bazohet në parimet e abstraksionit, enkapsulimit, trashëgomisë dhe polimorfizmit. Pikat më të forta të OO janë:

  • abstragim më i mirë(dizenjimi i informacionit dhe sjelljes së bashku)
  • mirëmbajtje më e mirë(më i kuptueshëm, më pak delikat)
  • ripërdorimi(klasat janë komponent të enkapsuluar)

 

Trashëgimia dhe Method Overriding

Principi i përgjithësimit dhe specializimit ka të bëjë me vendosjen e karakteristikave të përgjithshme në pjesën e sipërme të hierarkisë dhe vendosjen e karakteristikave specifike në klasat e poshtme të hierarkisë.

Të gjitha karakteristikat e klasave të sipërme automatikisht janë edhe karakteristika të klasave poshtë tyre, kjo quhet trashëgimi.

Një klasë specifikon se karakteristikat e cilës klasë po trashëgon duke përdorur fjalën kyçe si mëposhtë, ndërsa klasa bazë në ndërtimin e saj nuk specifikon asgjë për të treguar që është klasë bazë sepse çdo klasë mund të jetë klasë bazë.

class Person{

private String emer, mbiemer;

private short mosha;

public String gjeneroIdPersonale(){........}

} 
class Student extends Person{

private String dega, niveliStudimeve;

public void regjistroLendene(String lenda){.......}

} 

Në këtë rast klasa Student trashëgon të gjitha atributet dhe metodat e klasës Person.

 

Konstruktorët — çdo nënklasë mund të ketë konstruktorin e saj për inicializime specifike por shpesh herë mund të përfshijë edhe sjelljen e klasës bazë. Kjo bëhet duke përdorur fjalën kyçe super. Kur thërritet kostruktori i klasës bazë me super, ky deklarim duhet te jetë i pari. Kur klasa bazë ka vetëm një konstruktor me parametra atherë nënklasa duhet të thërras patjetër konstruktorin e klasës bazë. Nëse klasa bazë ka konstruktor me dhe pa parametër dhe nënklasa nuk thërret super atherë do të thërritet automatikisht konstruktori paparametër i klasës bazë.

Klasat abstrakte — Disa klasa mund të mos jetë e nevojshme të inicializohen ndonjëherë. Këto klasa, të quajtura abstrakte, janë të pa kompletuara dhe shërbejnë vetëm për të grumbulluar karakteristikat e përbashkta të nënklasave të tyre. Pra inicializimi (krijimi i objektev) i klasave abstrakte nuk është i lejuar. Nëse ne duhet të përdorim një klasë abstrakte, duhet ta kompletojmë atë duke e trashëguar. Një klasë quhet e kompletuar nëse ajo nuk përmban metoda abstrakte dhe i implementon të gjitha metodat abstrakte të cilat i ka trashëguar nga klasa prind ose nga një ndërfaqe që ka implementuar. Klasat abstrakte mund të kenë dhe metoda konkrete.


abstract class Person{

private String emer, mbiemer;

private short mosha;

public String gjeneroIdPersonale();

} 

this – shënon instancën aktuale të klasës, përdoret për të aksesuar fieldet e klasës. Normalisht nuk është e nevojshme por nëse në një metodë një argument ose variabël lokale ka emer të njëjtë me një atribut të klasës përdorim this që të kapim vlerën e atributit të instancës pasi normalisht ajo mbishkruhet nga parametri ose variabli local i metodës.

 

Method overriding (mbishkrimi i metodave)

mbishkrimi i metoda mundëson specializimin apo ndryshimin e funksionimit të një metode nga klasa bazë në një klasë fëmijë.

1.në method overriding argument list duhet të jetë e njëjtë si metoda që mbishkruhet

2.tipi i vlerës që kthen metoda duhet të jetë i njëjtë ose i trashëguar nga ai i metodës kryesore (sub-type)

3.Niveli i aksesit nuk mund të jetë më kufizues se i medotës që mbishkruhet

4.Një metodë e deklaruar me fjalën kyçe final nuk mund të mbishkruhet

5.Një metodë e deklaruar si statike nuk mund të mbishkruhet po ri-deklarohet – pra nuk ka pse ti bindet rregullave të mbishkrimit mësipër

6.Nëse një metodë nuk trashegohet (deklaruar si private) mbishkrimi ska kuptim

7.Konstruktorët nuk mund të mbishkruhen

public class ExchangeStudent extends Student{

private String prefiks ="EX";

public String gjeneroIdPersonale(){

return prefiks + super.gjeneroIdPersonale;

}

} 

Enkapsulimi

Përfshirja e fieldeve( attribute dhe metoda) në një klasë dhe “fshehja” e funksionimit të brendshëm të objektit.

Në këtë mënyrë objekti funksionon si një “kuti e zezë” ku një programist tjetër që përdor objektin nuk ka pse të dijë mënyrën e brendshme të funksionimit të objektit.

 

Polimorfizmi

Vjen nga fjala në greqisht “shumë forma”. Ai përshkruan vetinë e disa gjuhëve të programimit të cilat kanë aftesinë të interpretojnë të njëjtën fjalë kyçe në mënyra të ndryshme në varësi të kontekstit. Java mundëson dy tipe të polimorfizmit:

-statike (compile time) , method overloading

Aftësia që të egzekutohet një metodë tjetër në vartësi të parametrave të kaluar asaj gjatë thirrjes. Ku return type dhe access level duhet të jenë të njëjtë ndërsa argumentat mund të jenë të ndryshëm.

-dinamike (run time)

Quhet runtime pasi vetëm gjatë egzekutimit përcaktohet se cila metodë egzekutohet në varësi të tipit të objektit.

 

Ndërfaqet – Interfaces

Një ndërfaqe është një koleksion metodash abstrakte. Një klasë që implementon një ndërfaqe duhet të implementoj të gjitha metodat që trashëgon. Ndërfaqja nuk është klasë sepse klasa specifikon atribute dhe metoda ndërsa ndërfaqja vetëm metodat të cilat klasa i implemeton. Klasa duhet të implementojë të gjitha metodat nga ndërfaqet që implementon përveçse në rastin kur kjo klasë përcaktohet si abstrakte. Në qoftë se një klasë implementon një ndërfaqe metodat e klasës duhet të specifikojnë të njëjtin tip të vlerës së kthyer, sikurse në ndërfaqe, dhe parametrat që merr secila metodë duhet të jenë të njejta me ato të ndërfaqes. Një klasë mund të implementojë më shumë se një ndërfaqe.

Ngjashmëri me klasat

  • Përmban metoda (vetëm kokën)
  • Shkruhet në file .java
  • kompilohet në bytecode në file .class
  • ato përfshihen në paketa

 

Ndryshimet nga klasat

  • Nuk mund të inicializojmë një interface
  • nuk përmban konstruktorë
  • të gjitha metodat në një ndërfaqe janë abstrakte
  • të gjitha field-et që specifikon janë static dhe final
  • ndërfaqa nuk trashëgohet por implementohet
  • një ndërfaqe mund të trashegojë shumë ndërfaqe të tjera.
public interface LlogaritNoten {

public int llogaritNoten(int piket);

public double llogaritNotenMesataren(int [] nota, int n);

}

public class Student implements LlogaritNoten {

@Override

public int llogaritNoten(int piket) {

if (piket < 41 && piket >= 0)

piket=4;

else if (piket <51)

piket=5;

else if (piket <61)

piket=6;

else if (piket<71)

piket=7;

else if (piket<81)

piket=8;

else if (piket<91)

piket=9;

else if(piket<=100)

piket=10;

return piket;

}

@Override

public double llogaritNotenMesataren(int[] nota, int n) {

double shuma = 0;

double mesatarja;

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

shuma= shuma + nota[i];

}

mesatarja = shuma/n;

return mesatarja;

}

} 

 

You can follow any responses to this entry through the RSS 2.0 You can skip to the end and leave a response. Pinging is currently not allowed.

Leave a Reply

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


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Current ye@r *