You are on page 1of 28

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Disenjimi sipas abstraksionit


Faton Berisha

Departamenti i matematiks Fakulteti i Shkencave Matematike-natyrore Universiteti i Prishtins

Disenjimi sipas abstraksionit

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Qllimet dhe objektivat

Disenjim komponenesh t rishfrytzueshme dhe eksibile duke prdorur klasa abstrakte, interfejsa dhe shabllona disenji. Prezantim i shabllonave t disenjit pr abstraksion:
Metoda shabllon (Template Method) Strategji (Strategy) Iterator Fabrik (Factory)

Disenjimi sipas abstraksionit

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Prmbajtja

Shabllona disenji

Disenjimi i komponenteve gjenerike Faktorizimi

Studim rasti: Animimi i algoritmave t sortimit

Disenjimi sipas abstraksionit

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Shabllona disenji

Koncepti i shabllonave t disenjit u prdor pr t parn her (Ch. Alexander, 1979) pr t prshkruar disenje arkitektonike. Nj shabllon disenji paraqet nj zgjidhje gjenerike (d.m.th., t rishfrytzueshme) pr nj problem q prsritet. Disenjimi i softuerit i prngjet disenjimit arkitektonik.

Disenjimi sipas abstraksionit

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Shabllona disenji. (Vazhdimi)

Punn e pionierit mbi shabllonet e disenjit t softuerit e kan br E. Gamma et al. (1995). Kompiluan 23 shabllone disenji m s shpeshti t prdorura me destinim t prgjithshm q jan t pavarura nga domeni i aplikacionit dhe i klasikuan n tri kategorit vijuese.
1 2 3

Shabllona krijimi (creational patterns) Shabllona strukture (structural patterns) Shabllona sjelljeje (behaviorial patterns)

Disenjimi sipas abstraksionit

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Shembull shablloni disenji: Klasa Singleton

Shablloni i disenjit Singleton Kategoria: Shabllon disenji krijimi Zbatueshmria: Shfrytzoni shabllonin Singleton kur duhet t ekzistoj saktsisht nj instanc e nj klase dhe duhet t jet me qasje pr klientt nga nj pik qasjeje publike Shembuj zbatimi: Dritarja e nivelit t par e nj aplikacioni, kohmatsi i tr nj sistemi.

Disenjimi sipas abstraksionit

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Shabllona disenji
public class Singleton { private static Singleton theInstance = null; public static Singleton getInstance() { if (theInstance = null) { theInstance = new Singleton(); } return theInstance; } protected Singleton() { //inicializimi i fushave t instancs } //metodat dhe fushat tjera }
Disenjimi sipas abstraksionit 7

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Faktorizimi

Disenjimi i komponenteve gjenerike

Komponent gjenerike (e rishfytzueshme): Komponent programi, zakonisht klas ose pako, q mund t adaptohet dhe shfrytzohet n shum kontekste t ndryshme pa modikuar kodin e saj burimor. Teknikat themelore pr disenjimin e komponentave gjenerike:
faktorizimi gjeneralizimi (prgjithsimi)

Mekanizmat pr ndrtimin e komponenteve gjenerike:


inheritimi delegimi

Disenjimi sipas abstraksionit

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Faktorizimi

Faktorizimi

Faktorizimi konsiston nga:


Identikimi i segmentesh kodi n program q implementojn t njjtn logjik, shpesh me saktsisht t njjtin kod, n shum vende t ndryshme Kapja e logjiks n nj komponent gjenerike e cila denohet njher Riorganizimi i programit ashtu q secila paraqitje e segmentit t kodit zvendsohet me prdorimin e komponents gjenerike.

Disenjimi sipas abstraksionit

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Faktorizimi

Faktorizimi

Udhzues disenji: Faktorizoni segmentet e prsritura t kodit Segmente t prsritura kodi t mbshtetura n t njjtn logjik krijojn rrezik pr mirmbajtje. Ato duhet t faktorizohen ashtu q segmenti i kodit t paraqitet vetm njher.

Disenjimi sipas abstraksionit

10

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Faktorizimi

Faktorizimi me an t invokimit t nj metode


Forma m e thjesht e faktorizimimit mund t bhet prmes invokimit t nj metode. Shembull kodi me segmente t prsritura: class Computation { void method1(...) { //... computeStep1(); computeStep2(); computeStep3(); //... }

Disenjimi sipas abstraksionit

11

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Faktorizimi

Faktorizimi me an t invokimit t nj metode. (Vazhdim)

... void method2(...) { //... computeStep1(); computeStep2(); computeStep3(); //... } //... }

Disenjimi sipas abstraksionit

12

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Faktorizimi

Faktorizimi me an t invokimit t nj metode. (Vazhdim)

Faktorizimi me an t nj metode: class FactorizedComputation { void computeAll(...) { computeStep1(); computeStep2(); computeStep3(); }

Disenjimi sipas abstraksionit

13

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Faktorizimi

Faktorizimi me an t invokimit t nj metode. (Vazhdim)


... void method1(...) { //... computeAll(); //... } void method2(...) { //... computeAll(); //... } //... }
Disenjimi sipas abstraksionit 14

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Faktorizimi

Faktorizimi me inheritim
Faktorizimi i segmentesh t prsritura kodi mund t bhet me inheritim. Shembull kodi me segmente t prsritura: class Computation1 { void method1(...) { //... computeStep1(); computeStep2(); computeStep3(); //... } //... }
Disenjimi sipas abstraksionit 15

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Faktorizimi

Faktorizimi me inheritim. (Vazhdim)


... class Computation2 { void method2(...) { //... computeStep1(); computeStep2(); computeStep3(); //... } //... }

Disenjimi sipas abstraksionit

16

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Faktorizimi

Faktorizimi me inheritim. (Vazhdim)

Futja e n superklase t prbashkt: class Common { void computeAll(...) { computeStep1(); computeStep2(); computeStep3(); } }

Disenjimi sipas abstraksionit

17

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Faktorizimi

Faktorizimi me inheritim. (Vazhdim)

Faktorizimi me inheritim: class Computation1 extends Common { void method1(...) { //... computeAll(); //... } //... }

Disenjimi sipas abstraksionit

18

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Faktorizimi

Faktorizimi me inheritim. (Vazhdim)

... class Computation2 extends Common { void method2(...) { //... computeAll(); //... } //... }

Disenjimi sipas abstraksionit

19

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Faktorizimi

Faktorizimi me delegim
Faktorizimi i segmentesh t prsritura kodi mund t bhet me delegim. Shembull paraprak i kodit me segmente t prsritura. Futja e n klase ndihmse: class Helper { void computeAll(...) { computeStep1(); computeStep2(); computeStep3(); } }

Disenjimi sipas abstraksionit

20

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Faktorizimi

Faktorizimi me delegim. (Vazhdim)


Faktorizimi me delegim: class Computation1 { Helper helper; //... void method1(...) { //... helper.computeAll(); //... } //... }

Disenjimi sipas abstraksionit

21

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Faktorizimi

Faktorizimi me delegim. (Vazhdim)


... class Computation2 { Helper helper; //... void method2(...) { //... helper.computeAll(); //... } //... }

Disenjimi sipas abstraksionit

22

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Faktorizimi

Aplet animimi gjenerik


import java.awt.*; import javax.swing.*; public class AnimationApplet extends JApplet implements Runnable { protected Thread animationThread; protected int delay = 100; public void start() { animationThread = new Thread(this); animationThread.start(); } public void stop() { animationThread = null; }

Disenjimi sipas abstraksionit

23

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Faktorizimi

Aplet animimi gjenerik. (Vazhdim)


public void run() { while (Thread.currentThread() == animationThread) { try { Thread.sleep(delay); } catch (InterruptedException e) { } repaint(); } } final public void setDelay(int delay) { this.delay = delay; } final public int getDelay() { return delay; } }
Disenjimi sipas abstraksionit 24

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Faktorizimi

Aplet animimi gjenerik. (Vazhdim)


import java.awt.*; import java.util.*; public class DigitalClock3 extends AnimationApplet { protected Dimension d; protected Font font = new Font("Monospaced", Font.BOLD, 48); protected Color color = Color.green; public DigitalClock3() { setDelay(1000); } public void init() { d = getSize(); }

Disenjimi sipas abstraksionit

25

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Faktorizimi

Aplet animimi gjenerik. (Vazhdim)


public void paint(Graphics g) { g.setColor(getBackground()); g.fillRect(0, 0, d.width, d.height); Calendar c = Calendar.getInstance(); int hour = c.get(Calendar.HOUR_OF_DAY); int minute = c.get(Calendar.MINUTE); int second = c.get(Calendar.SECOND); g.setFont(font); g.setColor(color); g.drawString(hour + ":" + minute / 10 + minute % 10 + ":" + second / 10 + second % 10, 10, 60); } }

Disenjimi sipas abstraksionit

26

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Udhzime pr lexim t mtejm

http://www.fberisha.org X. Jia, Object oriented software development using Java, kapitulli 4. D. Schmidt, Programming principles in Java: architectures and interfaces, kapitulli 11.

Disenjimi sipas abstraksionit

27

Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim

Prfundim

Disenjimi sipas abstraksionit

28

You might also like