• Përshëndetje Vizitor!

    Nëse ju shfaqet ky mesazh do të thotë se ju nuk jeni regjistruar akoma. Edhe pse nuk jeni regjistruar ju arrini të shihni pjesën me të madhe të seksioneve dhe diskutimeve të forumit, por akoma nuk gëzoni të drejten për të marrë pjesë në to dhe në avantazhet e të qënurit anëtar i këtij komuniteti. Ju lutem : REGJISTROHUNI që të dërgoni postime dhe mesazhe në Forum-Al.

    Regjistrohu !

Programim i orientuar në objekte dhe model projektimi

Forum-Al

Aty ku shqiptarët mblidhen
Anëtar
Jan 5, 2010
Postime
561
Pikët
28
Vendndodhja
Forum
Kërkoj falje që në disa vënde përdor terme angleze por thjesht për mua është e pamundur ti përkthej (përshtat) ato në shqip!

Metodikat qe do ti trajtojmë ne ketë mësim janë:

  • Çka është OOP (Object Orientated Programming)?
  • Çka është model projektimi (design pattern)?
  • Çka është një objekt interface?
  • Çka dhe si te përdorim një model përshtatës (Adapter)?
Çka është OOP?

Programim i orientuar në objekte të mundëson kodimin në një mëny më të lehtë dhe praktike, gjithashtu të lehtëson mirëmbajte kodit.

Kjo teknik programimi na mundëson ndarjen e kodimit në pjesë të ndryshme të funksioneve, që na lehtëson lexushëmërin dhe kuptueshmërinë, njëherit na mundëson re-përdorimin në programe tjera dhe hap mundësin për përdorje te projektimit të modeleve (design patterns)!

Shumë ngatërrojnë definimin mbes një objekti dhe klasës (class)! Një klasë është një recetë qe përshkruan se çka një objekt është, ka dhe bën. Kurse objekti është vetë instanca e asaj klase.

Shembull:

Një klasë (class) ka 3 metoda të ndryshme dukurie:

Public (Publike): Metodat publike te një klase mund te lexohet (përdorën) nga kudo, si nga vetë klasa gjithashtu dhe nga vetë objekti.

Private: Kjo metodë mund te lexohet (përdorët) vetëm brenda vet klasës, e jo përmes objektit e as nga implementimet apo zgjerimet (extends), para se te përdoresh këtë metodë shiko metodën e mbrojtur ndoshta te përshtatët me mire ne rastin tuaj.

Protected (Mbrojtur): Është gati njësoj sikur metoda private por ka dallim pasi qe kjo metodë mundëson ta përdorësh dhe nga implementimet dhe zgjerimet (extends) te klasave tjera. Por jo direket nga vetë instanca/objekti.

Shembull:

Besoj që shembulli ishte i lehtë që të kuptohet prandaj skam nevojë ta shpjegoj dallimet për çdo rresht! Gjithsesi nqs keni pyetje mos hezitoni por shkruajeni tek komentet!

Model projektimi (design patterns)?

Është një zgjedhje e përgjithshme për një problem te zakonshëm qe ndodh ne projektimin e programeve. Një model nuk është i përkryer por thjesht është një përshkrim i problemit dhe si te zgjedhësh atë, e kur sesi një zgjedhje e gatshme qe ta kopjoni direkt ne kodin tuaj!

Çka është objekt interface?

Objekt interface të lejon të vendosësh rregullat për implementimin e një objekti dhe cilat metoda një objekt duhet ti zbatoj dhe t’u përmbahet! Të gjitha metodat e deklaruara në një interface duhen të jenë publike dhe objekti që implementon një interface duhet te implementoj të njëjtat metoda përndryshe një gabim fatal do të shfaqet!

Një shembull në praktik është të krijojmë një interface për libra dhe çdo libër qe e implementon atë interface duhet të zbatoj ato metoda që ne i vendosim në interface, shembulli:

Në shembullin më lart shohim në interface që kemi katër metoda/funksione (getAuthor, getTitle, setAuthor, setTitle) dhe atë interface e implementojm në modelin tonë te quajtur “Feniksi_Book”, siç shihet modeli i ka te njëjtat metoda/funksione sikur interface por me logjiken e duhur.

Pse te përdorim objekt interface?

Thjesht sepse ti udhëzon të tjerët që të implementojn metodat e duhura në modelin e tyre!

Çka është modeli përshtatës (Adapter pattern)?

Modeli përshtatës është një interface e një apo më shumë përshtatësve të ndryshëm! Çka është një përshtatës në ketë rast? Të marrim një shembull, të gjithë e dimë që karikuesit të pajisjeve elektronike janë të ndryshme në kontinente të ndryshme, dmth. ne Amerikë përdorin sistem tjetër kurse në Evropë përdorët sistem tjetër, përshtatësi (adapteri) në këtë rastë është një karikues universal për karikues të tjerë.

Për të krijuar një model përshtatës se pari krijojmë një interface, siç thamë me herët ketë e bëjmë për ti udhëzuar përshtatësit tjerë te përdorin funksionet e njëjta por me logjike te ndryshme. Në shembullin që do ta marrim me poshtë do te krijojmë një përshtatës databaze me një përshtatës specifik për MySQL duke përdorur PDO_MYSQL extension.

Kjo është interface me disa funksione minimale qe çdo përshtatës duhet ti implementoj. Pastaj vazhdojmë me një klasë abstrakte, këtë e bëjmë për ta ndarë ndonjë logjikë programuese te përbashkët mbes adapterave. Dhe patjetër implementojm interface ne te!

Një nder funksionet e përbashkët ne këtë rast është setOptions()! Funksionet tjera janë të implementuara nga interface dhe nuk kanë asnjë logjik programuese ende! Këtë e bëjmë tash ne përshtatësin specifik për MySQL.

Klasa më lart është përshtatësi i cili është specifik për MySQL, duke e zgjeruar (extends) klasën abstrakte na mundëson ndarjen e kodit në të, gjithashtu implementon funksionet e duhura prej interfaces. Siç e shihni në këtë përshtatës kemi një funksion __construct(); që ndërton një objekt dhe ai pranon një “array” me opsionet e duhura, dhe e vetmja gjë që bën në rastin më lart është të jetë bartës i opsioneve që nga ndërtimi i objektit dhe te thërras funksionin connect(); në këtë funksion kemi logjiken për lidhje me databazen sipas PDO_MYSQL extension!

Dhe për fund na nevojitet një klasë për mbajtjen e përshtatësit, që do te funksionoj si interface (hyrje) për përshtatësin tone, dmth. përmes kësaj klase në përdorim funksionet dhe logjiken e përshtatësit.

Siç e shihni është një klasë shumë e thjesht me një ndërtues (constructer) dhe funksioni tjetër është vet thirrja/marrja e përshtatësit (adapter-it).

Këtu më poshtë e shikoni se si mund ta përdorni këtë përshtatës:

Pra ta shpjegoj pak, së pari krijojmë objektin Feniksi_Db me përshtatësin e duhur që në këtë rast është Feniksi_Db_Adapter_Pdo_Mysql me opsionet e duhura, pastaj krijojmë një variable $dbAdapter dhe marrim instancën e sapo krijuar te përshtatësit dhe pastaj përmes asaj instance përdorim funksionet që i kemi krijuar ma lart, në shembull shihet funksioni insert(), në të cilin ende nuk kemi vendosur ndonjë logjik por këtë do ta bëjmë ne mësimin e radhës.

Shpresoj që sa do pak te keni mësuar diçka te re, nqs nuk keni diçka te qartë ju lutem shkruani ne komente dhe me gjithë dëshirë do mundohem të ju a shpjegoj me thellësisht!

Programim i orientuar në objekte dhe model projektimi është një postim nga: Feniksi.Com - Thesari i Njohurive



Forum-Al.com
Aty ku shqiptarët mblidhen!
 
Top