Projektovanje namenskih računarskih struktura 1...o Zahteva disciplinu u dizajnu i razvoju 2020 4...

13
Odsek za računarsku tehniku i računarske komunikacije Projektovanje namenskih ra čunarskih struktura 1 Ključni dizajn šabloni koji se koriste u Androidu

Transcript of Projektovanje namenskih računarskih struktura 1...o Zahteva disciplinu u dizajnu i razvoju 2020 4...

Page 1: Projektovanje namenskih računarskih struktura 1...o Zahteva disciplinu u dizajnu i razvoju 2020 4 MVC –Primer modela 2020 5 MVC –Primer prikaza 2020 6 MVC –Primer kontrolera

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...o Zahteva disciplinu u dizajnu i razvoju 2020 4 MVC –Primer modela 2020 5 MVC –Primer prikaza 2020 6 MVC –Primer kontrolera

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...o Zahteva disciplinu u dizajnu i razvoju 2020 4 MVC –Primer modela 2020 5 MVC –Primer prikaza 2020 6 MVC –Primer kontrolera

Model-View-Controller

Koristi se u mnogim GUI aplikacijama

Razdvajanje odgovornosti pojedinih komponenti

o Model – čuva podatke sa kojima aplikacija barata.

o View – služi za prikaz podataka iz modela i prosleđuje korisničke aktivnosti kontroleru

o Controller – interpretira aktivnosti od View, utiče na Model, kontroliše tok podataka između Model i View, i po potrebi ažurira View.

2020 3

Page 4: Projektovanje namenskih računarskih struktura 1...o Zahteva disciplinu u dizajnu i razvoju 2020 4 MVC –Primer modela 2020 5 MVC –Primer prikaza 2020 6 MVC –Primer kontrolera

MVC – Prednosti i mane

Prednosti

o Smanjuje kompleksnost pojedinih komponenti

o Jasne zavisnosti i granice

o Čistija i lakše razumljiva implementacija

o Ponovno iskorišćenje komponenti bez modifikacije koda

o Lakše održavanje

o Implementacija vođena pravilima MVC – dileme „gde pripada“ se rešavaju principom MVC

Mane

o Možda malo više koda, ali je preglednije

o Zahteva disciplinu u dizajnu i razvoju

2020 4

Page 5: Projektovanje namenskih računarskih struktura 1...o Zahteva disciplinu u dizajnu i razvoju 2020 4 MVC –Primer modela 2020 5 MVC –Primer prikaza 2020 6 MVC –Primer kontrolera

MVC – Primer modela

2020 5

Page 6: Projektovanje namenskih računarskih struktura 1...o Zahteva disciplinu u dizajnu i razvoju 2020 4 MVC –Primer modela 2020 5 MVC –Primer prikaza 2020 6 MVC –Primer kontrolera

MVC – Primer prikaza

2020 6

Page 7: Projektovanje namenskih računarskih struktura 1...o Zahteva disciplinu u dizajnu i razvoju 2020 4 MVC –Primer modela 2020 5 MVC –Primer prikaza 2020 6 MVC –Primer kontrolera

MVC – Primer kontrolera

2020 7

Page 8: Projektovanje namenskih računarskih struktura 1...o Zahteva disciplinu u dizajnu i razvoju 2020 4 MVC –Primer modela 2020 5 MVC –Primer prikaza 2020 6 MVC –Primer kontrolera

MVC – Primer glavnog programa

2020 8

Page 9: Projektovanje namenskih računarskih struktura 1...o Zahteva disciplinu u dizajnu i razvoju 2020 4 MVC –Primer modela 2020 5 MVC –Primer prikaza 2020 6 MVC –Primer kontrolera

MVC – Diskusija

Gde se čuva stanje programa?

o Isključivo u modelu

Kako to olakšava razvoj i testiranje?

o Stanje softvera se lakše može snimati i ponoviti

o Prikupljanje testnih ulaza

o Lakše modelovanje stanja programa

Modularnost olakšava ponovnu iskoristivost pojedinih komponenti (npr. modela, ili prikaza ili kontrolne logike)

2020 9

Page 10: Projektovanje namenskih računarskih struktura 1...o Zahteva disciplinu u dizajnu i razvoju 2020 4 MVC –Primer modela 2020 5 MVC –Primer prikaza 2020 6 MVC –Primer kontrolera

Sinhrono-asinhrono

Sinhrono znači taktovano, pri čemu se čeka završetak prethodne operacije da bi se počelo sa narednom. Postoji zavisnost.

o Intel i7

o Jednonitni programi

o Muzika

Asinhrono znači da se može započeti naredna operacija i dok se prethodna na završi. Ne postoji zavisnost.

o Postoje i takvi eksperimentalni CPU – šta to znači?

o Ljudski mozak je definitivno asinhron

o Saobraćaj

2020 10

Page 11: Projektovanje namenskih računarskih struktura 1...o Zahteva disciplinu u dizajnu i razvoju 2020 4 MVC –Primer modela 2020 5 MVC –Primer prikaza 2020 6 MVC –Primer kontrolera

Sinhrono-asinhrono - Primeri

Naručivanje hrane

o Čekanje u redu vs naručivanje telefonom

Programiranje na zahtev šefa

o Ili čeka iza leđa vs radi nešto korisno dok programiramo

Učenje, nastava?

Sinhrono programiranje je lakše, ali potencijalno suboptimalno

o Zašto? Zbog neefikasno korišćenih resursa i vremena

Asinhrono programiranje je teže, ali efikasnije

o Zahteva dodatne mehanizme obaveštavanja

o Malo drugačije razmišljanje, bez pretpostavki

2020 11

Page 12: Projektovanje namenskih računarskih struktura 1...o Zahteva disciplinu u dizajnu i razvoju 2020 4 MVC –Primer modela 2020 5 MVC –Primer prikaza 2020 6 MVC –Primer kontrolera

Rezime

Šabloni ponašanja su prvenstveno funkcionalne prirode i nemaju nužno jedinstvenu implementacionu formu

Navedeni su samo najtipičniji primeri: MVP i sinhroni/asinhroni dizajn koji se često sreću u Androidu.

2020 12

Page 13: Projektovanje namenskih računarskih struktura 1...o Zahteva disciplinu u dizajnu i razvoju 2020 4 MVC –Primer modela 2020 5 MVC –Primer prikaza 2020 6 MVC –Primer kontrolera

Dodatne reference

Izvori

o https://conceptf1.blogspot.rs

o https://www.tutorialspoint.com/design_pattern

o Link

Dodatni materijal

o Stephen T. Albin , „The Art of Software Architecture: Design Methods and Techniques“

o Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides, „Design Patterns: Elements of Reusable Object-Oriented Software“

o By Eric Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra, „Head First Design Patterns: A Brain-Friendly Guide“

2020 13