projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · strukturni šabloni...
TRANSCRIPT
![Page 1: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti](https://reader035.vdocuments.site/reader035/viewer/2022071413/610c7e3f672650094727da53/html5/thumbnails/1.jpg)
Odsek za računarsku tehniku i računarske komunikacije
Projektovanje namenskihračunarskih struktura 1
Ključni dizajn šabloni koji se koriste u Androidu
![Page 2: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti](https://reader035.vdocuments.site/reader035/viewer/2022071413/610c7e3f672650094727da53/html5/thumbnails/2.jpg)
Tipični dizajn šabloni
Stvaralački šabloni
o Singleton
o Factory
o Prototip
Strukturni šabloni
o Dekorator
o Adapter
o Fasada
Šabloni ponašanja
o MVC/MVP
o Sinhrono/asinhrono
2020 2
![Page 3: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti](https://reader035.vdocuments.site/reader035/viewer/2022071413/610c7e3f672650094727da53/html5/thumbnails/3.jpg)
Fasada dizajn šablon
Strukturni dizajn šablon
Definicija
o Sakrivanje unutrašnje kompleksnosti
o Obezbeđivanje jednostavne spoljašnje sprege
o Donekle slična apstrakciji/interfejsu
Tipične primene
o Obezbeđivanje jednostavnije sprege ukoliko nije u pitanju nasleđivanje ili agregacija
Po pravilu sadrži i dodatnu logiku
Veoma bitno rukovanje greškama i upravljanje konzistentnošću sistema!
2020 3
![Page 4: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti](https://reader035.vdocuments.site/reader035/viewer/2022071413/610c7e3f672650094727da53/html5/thumbnails/4.jpg)
Fasada - Primer
2020 4
![Page 5: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti](https://reader035.vdocuments.site/reader035/viewer/2022071413/610c7e3f672650094727da53/html5/thumbnails/5.jpg)
Dekorator dizajn šablon
Definicija
o Dinamično dodavanje osobina postojećim objektima bez promene izvornog koda
o Može biti zamena za nasleđivanje – ali tokom izvršavanja, ne tokom prevođenja
Tipične primene
o Prikaz u zavisnosti od sadržaja, rukovanje većim brojem različitih kombinacija
Obratiti pažnju na dizajn i implementaciju: može da značajno skrati implementaciju, ali i da zakomplikuje ukoliko se ne koristi kako treba (engl. corner case, future proof)
2020 5
![Page 6: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti](https://reader035.vdocuments.site/reader035/viewer/2022071413/610c7e3f672650094727da53/html5/thumbnails/6.jpg)
Dekorator – Primer/pristup 1
2020 6
![Page 7: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti](https://reader035.vdocuments.site/reader035/viewer/2022071413/610c7e3f672650094727da53/html5/thumbnails/7.jpg)
Dekorator – Pristup/nasleđivanje
2020 7
![Page 8: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti](https://reader035.vdocuments.site/reader035/viewer/2022071413/610c7e3f672650094727da53/html5/thumbnails/8.jpg)
Dekorator – Pristup/nasleđivanje 2
Vegie with bacon?
2020 8
![Page 9: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti](https://reader035.vdocuments.site/reader035/viewer/2022071413/610c7e3f672650094727da53/html5/thumbnails/9.jpg)
Dekorator - Zapravo
Dekoratori i treba da su istog tipa kao i klase koje dopunjuju.
Može da se koristi više dekoratora na istom objektu – sukcesivno.
Polimorfizam omogućuje da se koristi dekorisani objekat umesto osnovnog
Dekorator svoje ponašanje može da primeni bilo pre ili posle osnovnog ponašanja dekorisanog objekta.
Dekorisanje se obavlja tokom izvršavanja programa.
2020 9
![Page 10: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti](https://reader035.vdocuments.site/reader035/viewer/2022071413/610c7e3f672650094727da53/html5/thumbnails/10.jpg)
Dekorator - Implementacija
2020 10
![Page 11: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti](https://reader035.vdocuments.site/reader035/viewer/2022071413/610c7e3f672650094727da53/html5/thumbnails/11.jpg)
Adapter dizajn šablon
Strukturni šablon
Definicija
o Prevazilaženje razlika između dve sprege/objekta
o Pretvara jednu spregu u drugu, bez puno logike
o Omogućuje saradnju dva objekta koji ne bi mogli inače da direktno sarađuju
Analogija sa adapterima za naponske priključke
Tipične primene
o Sprezanje sa socijalnim mrežama, korišćenje postojećeg programskog koda u novim okruženjima (setite se JNI)
o Npr biblioteke za reprodukciju multimedijalnog sadržaja
2020 11
![Page 12: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti](https://reader035.vdocuments.site/reader035/viewer/2022071413/610c7e3f672650094727da53/html5/thumbnails/12.jpg)
Adapter - Primer
public interface ISocialNetworks {
bool Login(string username, string password);
bool Share(string content);
}
public interface IGoogleSocialNetworks
{
bool Authenticate(string uname, string password);
bool Post(string content);
}
2020 12
![Page 13: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti](https://reader035.vdocuments.site/reader035/viewer/2022071413/610c7e3f672650094727da53/html5/thumbnails/13.jpg)
Rezime
Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti
Povećavaju ponovno korišćenje komponenti programa
Potencijalno predstavljaju pogodnija rešenja naspram ugrađenih mehanizama (npr. nasleđivanje)
Koriste se u kombinaciji sa drugim šablonima – dopunjuju ih
2020 13