Professional Documents
Culture Documents
Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim
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)
Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim
Prmbajtja
Shabllona disenji
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.
Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim
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)
Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim
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.
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
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)
Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim
Faktorizimi
Faktorizimi
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.
10
Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim
Faktorizimi
11
Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim
Faktorizimi
12
Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim
Faktorizimi
13
Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim
Faktorizimi
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
16
Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim
Faktorizimi
Futja e n superklase t prbashkt: class Common { void computeAll(...) { computeStep1(); computeStep2(); computeStep3(); } }
17
Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim
Faktorizimi
Faktorizimi me inheritim: class Computation1 extends Common { void method1(...) { //... computeAll(); //... } //... }
18
Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim
Faktorizimi
... class Computation2 extends Common { void method2(...) { //... computeAll(); //... } //... }
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(); } }
20
Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim
Faktorizimi
21
Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim
Faktorizimi
22
Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim
Faktorizimi
23
Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim
Faktorizimi
Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim
Faktorizimi
25
Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim
Faktorizimi
26
Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim
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.
27
Shabllona disenji Disenjimi i komponenteve gjenerike Studim rasti: Animimi i algoritmave t sortimit Prfundim
Prfundim
28