Curs 10

Documente similare
Laborator 9: Fire de execuţie Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 20 noiembrie 2011

Ingineria Sistemelor de Programare

Proiectarea Sistemelor Software Complexe

Declararea variabilelor

Testare manuala: situatia in care o persoana initiaza fiecare test, interactioneaza cu el si interpreteaza, analizeaza si raporteaza rezultatele. Test

Tema laborator TS.NET 2019 Vom simula (partial, in scop didactic) activitatea unui service auto. Pentru aceasta vom considera urmatoarele tipuri: Clie

Corporate 2 Template

Lucrarea 10

Laborator 4: Continuare Programare Orientată pe Obiecte Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 29 octombrie 2011

Utilizarea Internetului in Afaceri FSEGA, UBB Lect.univ.dr. Daniel Mican LABORATOR 3. Achizitionarea domeniilor web si a

Gestionarea I/E


Laborator Activities În sistemul Android activitățile reprezintă echivalentul ferestrelor din Windows, fiind clase care extind clasa Activity. Spre de

Guardian2012_RO3

9. Design patterns - Singleton, Factory, Observer Scopul acestui curs este familiarizarea cu folosirea unor pattern-uri des întâlnite în design-ul atâ

ROMÂNIA MINISTERUL EDUCAŢIEI NAȚIONALE Domeniul fundamental: Matematică și știinţe ale naturii Domeniul de licenţă: Informatică Ciclu de studii: 1 Pro

PHP (II)

PROGRAMARE ORIENTATA PE OBIECTE

Laborator 10 - Paradigme de Programare Corutine - suport nativ pentru paralelism în Kotlin Înainte de a trece la realizarea unei aplicații utilizând c

Top

Microsoft Word - lab-fr_3

Microsoft Word - Politică de cookie-uri OK_v1.docx

Microsoft PowerPoint - Curs_TPI_22_v01.ppt

Laborator - Configurarea de bază DHCPv4 pe un router Topologie Tabela de Adresare Echipame nt Interfață Adresă IP Masca de subreţea Default Gateway Ob

PPSD

A TANTÁRGY ADATLAPJA

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

1 Lucrarea nr. 8 - Structuri de date de tip liste sortate O listă sortată reprezintă un aranjament al înregistrărilor din cadrul listei în funcţie de

e-learning Agronomie Platforma de e-learning Versiunea: Ghid de utilizare Beneficiar: UNIVERSITATEA DE STIINTE AGRONOMICE SI MEDICINA VETERINARA

Lucrarea nr. 2 Aplicaţii de tip client Mihai IVANOVICI 6 martie 2006 Scopul acestei lucrări este de a vă familiariza cu modulul Python socket şi cu mo

Microsoft PowerPoint - SD7-RO.ppt

Lucrarea 11. IoT Internet of Things - Accesul prin Internet la obiecte sau dispozitive simple 1. Obiectivul lucrarii Lucrarea isi propune sa studieze

Emoji Planet Video Slot™

OPERATII DE PRELUCRAREA IMAGINILOR 1

Laborator 3

Manual de utilizare Room Booking System

Raportarea serviciilor de dializă la nivel CNAS

Paradigme de Programare

SUBPROGRAME

Proiect didactic

Programarea şi utilizarea calculatoarelor

ALGORITMICĂ. Seminar 3: Analiza eficienţei algoritmilor - estimarea timpului de execuţie şi notaţii asimptotice. Problema 1 (L) Să se determine număru

Comanda si supravegherea centralelor termice de putere

PowerPoint Presentation

Introducere în limbajul JavaScript

Microsoft Word - L63 FPGA.doc

Slide 1

Procedura,

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ Universitatea Babeş-Bolyai Cluj-Napoca superior 1.2 Facultatea Facultatea de Mate

Interfețe și Protocoale de Comunicații Arduino-Port Paralel Arduino. Laborator 1- Portul Paralel 1 Caracteristici generale Arduino UNO este o placă de

Microsoft Word _POO_Lab_1_Modificari_v01.htm

PLAN DE ÎNVĂŢĂMÂNT

FISA DISCIPLINEI 1. Date despre program 1.1 Institutia de invatamint superior Universitatea Tehnica din Cluj-Napoca 1.2 Facultatea Electronică, Teleco

Diapositive 1

Sisteme de calcul în timp real

Ministerul Educaţiei al Republicii Moldova Universitatea de Stat Alecu Russo din Bălţi Facultatea de Știinţe Reale, Economice și ale Mediului Catedra

Biomedical Wi-Fi data transmissons

Transmisia datelor multimedia in retele de calculatoare <Titlu Lucrare>

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ Universitatea Babeş-Bolyai din Cluj-Napoca superior 1.2 Facultatea Facultatea de

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

Proceduri stocate Syntax: CREATE PROCEDURE <Name> type1,...] AS -- secventa de comenzi SQL GO O procedura stocata se ruleaza cu EXEC: EXEC <N

A

1. Operatii cu matrici 1 Cerinte: Sa se realizeze functii pentru operatii cu matrici patratice (de dimensiune maxima 10x10). Operatiile cerute sunt: A

Programe derulate în ediția a treia Junior IT Fun Factory *În cadrul Junior IT Fun Factory fiecare înscriere se face pentru un program individual în f

PowerPoint Presentation

Microsoft Word _SwRTc_Proiect_Faza1_v01.htm

Microsoft Word - c6.doc

talaba.doc

Curs 6 Fragments Un fragment reprezintă o porțiune dintr-un Activity. Într-un activity se pot combina mai multe fragmente ți un fragment se poate reut

Microsoft PowerPoint - TDS5-RO.ppt

Metode API - integrare FGO v.2.5 Cuprins ISTORIC VERSIUNI... 2 INTRODUCERE... 2 APELARE... 4 NOMENCLATOARE... 4 FACTURA... 5 EMITERE... 5 PRINT... 6 S

Microsoft Word - Tematica examen AII.doc

Microsoft Word - barcan.doc

AdVision este un software de narrowcasting, destinat tuturor celor care administrează conţinut pe o reţea de monitoare. Fie că este vo

HONEYWELL AWARD

CABINET MINISTRU

ALGORITHMICS

Ingineria Sistemelor de Programare

Atributii:

Ghid pre-inregistrare a Agentilor Economici si a Unitatilor in sistemul de trasabilitate pentru produsele din tutun. Se acceseaza platforma web:

A.E.F. - suport laborator nr.3 sem.ii Aplicațe privind utilizarea rețelelor 1D În acest laborator sunt atinse următoarele aspecte: realizarea schițelo

ANEXA nr

Facultatea de Științe Politice, Administrative și ale Comunicării Str. Traian Moșoiu nr. 71 Cluj-Napoca, RO Tel.: Fax:

Tablouri unidimensionale Problema 1 Să se determine mulţimea cifrelor unui număr natural n > 0, dat. Exemplu: n= Cifre = {1,2,3,7} Se cere să s

..MINISTERUL EDUCAŢIEI NAȚIONALE ŞI CERCETARII STIINTIFICE UNIVERSITATEA DE VEST DIN TIMIȘOARA.I CENTRUL DE DEZVOLTARE ACADEMICĂ. FIȘA DISCIPLINEI 1.

Laborator Fragments Un fragment reprezintă o porțiune dintr-un Activity. Într-un activity se pot combina mai multe fragmente ți un fragment se poate r

CURS

BOLLYWOOD STORY TOUCH Tipul de joc: Touch Game Câștigul jucătorului: 96.1% Bollywood Story Touch este un slot video plin de culoare cu 5 role, 3 rându

Microsoft Visual C++ (abreviat MSVC) is a commercial integrated development environment (IDE) product engineered by Microsoft for the C, C++, and C++/

Baze de date Anul 2 Teorie Examen 1. Diagrama entitate/relatie si diagrama conceptuala (curs 2-5) 2. Arbore algebric si expresie algebrica (curs 6-10)

Sisteme de operare

Politica N21 privind modulele Cookie mobile Network TwentyOne se angajează să vă protejeze pe dumneavoastră și orice date (anonime sau de altă natură)

Manual BVB Trading Mobil

Agenţia de Dezvoltare Regională (ADR) Nord-Vest vă invită la lansările regionale a trei domenii majore de intervenţie aferente Programului Operaţional

Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011

Manual de utilizare Aplicatie Proiector I. Pornire/Oprire proiectie Pentru a porni/opri proiectia aveti 3 posibilitati: 1) Pentru pornirea proiectiei

A.E.F. - suport laborator nr.5 sem.ii Analiza suprafețelor prin utilizarea elementelor 2D În acest laborator sunt atinse următoarele aspecte: realizar

Laborator - Proiectarea și Implementarea Adresării cu VLSM Topologie Obiective Partea 1: Examinați Cerințele Rețelei Partea 2: Proiectați Schema Adres

Modul Modbus ASCII SISTEME DE COMUNICATIE CURS 5 - Constantinescu Catalin Atunci cand se foloseste modul MODBUS ASCII fiecare octet din mesaj

Transcriere:

Ingineria Programării Design Patterns Modele de proiectare Curs Ovidiu Gheorghieş, ogh@infoiasi.ro Adriana Gheorghieş, adrianaa@infoiasi.ro

Model View Controller Cel mai popular model de proiectare Dezvoltat de Trygve Reenskaug pentru Smalltalk in 1979. A jucat un rol important in proiectarea majoritatii sistemelor ce ofera o interfata utilizator (Smalltalk, MFC, Swing, JSF etc.) Este luat ca referinta cand se discuta despre proiectarea unei aplicatii cu interfata utilizator.

MVC - motivatie [exemplu cod o prima implementare]

MVC Trei roluri Model : obiect care reprezinta o anumita informatie despre domeniul problemei View: reprezinta o modalitate de afisare a obiectului in cadrul unei interfete utilizator Controller: gestioneaza modificarile efectuate asupra informatiei. Doua idei principale Separarea prezentarii de model Separarea controlerului de prezentare

Arhitectura Exista multiple variante de a implementa arhitectura MVC. Un exemplu:

Separarea prezentarii de model Prezentarea si modelul se refera la aspecte diferite ale sistemului Prezentare: cum sa proiectez o interfata buna (intuitiva, placuta, productiva) Model: cum sa proiectez functionalitatea programului (eficienta, corectitudine). Prezentarea modelului in mai multe feluri Observator (?) Obiectele non-vizuale sunt mai usor de testat

Separarea prezentarii de controler Mai putin importanta pentru aplicatii locale In mod tipic un element de prezentare are un singur controler A aparut ca o necesitate odata cu dezvoltarea aplicatiilor Web.

MVC - implementare [implementarea unui exemplu MVC]

Provocari Cine este responsabil pentru validarea modificarilor facute de prezentare? Cine realizeaza eventualele conversii necesare? Modul de actualizare a prezentarilor Modelul este Observabil Un Observabil este infasurat peste model Cine este Observatorul? Prezentarea sau Controlerul? Modele avansate de observatori

MVC aplicatii web Model 1 Model 2 http://www.javaworld.com/javaworld/jw-12-1999/jw-12-ssj-jspmvc.html

Worker Thread Ex: Un algoritm genetic ruleaza mult timp. In acest timp interfata grafica trebuie sa raspunda la comenzi Ex: Un fractal dureaza pana este desenat Utilizatorul ar putea sa vrea sa opreasca desenarea, apoi sa continue Ex: Save, Close

Worker thread public class WorkerThread { private Vector tasks = new Vector(); private boolean waitingtask; private boolean shouldshutdown; // public void put(runnabletask r) { /* */ public RunnableTask take() { /* */

Worker thread public class WorkerThread { public WorkerThread() { tasks = new Vector(); waitingtask = false; new Thread(new Worker()). private class Worker implements Runnable{ public void run(){ while (!shouldshutdown){ RunnableTask r = take(); r.execute();

Worker thread public void put(runnabletask r){ tasks.add(r); if (waitingtask){ synchronized (this){ notifyall(); public RunnableTask take() { if (tasks.isempty()){ synchronized (this){ waitingtask = true; try { wait(); catch (InterruptedException ie) { waitingtask = false; return (RunnableTask)tasks.remove(0);

Tranzactie Scop: gruparea unei colectii de metode astfel incat ori toate sunt executate cu succes, ori nici una nu modifica starea obiectelor. Exemplu: transferarul de bani dintr-un cont in altul Fiecare participant la tranzactie incearca sa isi indeplineasca rolul. Daca unul esueaza, informeaza gestionarul tranzactiei, care cere participantilor sa revina la starea initiala.

Tranzactie

Tranzactie Pasii unei tranzactii Se creaza identificatorul tranzactiei Se apeleaza join pentru toti participantii Daca pentru un participant metoda join esueaza, tranzactia este oprita (a esuat) Se apeleaza metodele tranzactiei Imediat ce una dintre ele esueaza, tranzactia este oprita Cand toate metodele tranzactiei sunt efectuate cu success, se apeleaza commit pentru toti participantii.

Sesiune Scop: ofera unui server posibilitatea de a distinge intre mai multi clienti, permitand asocierea unei stari cu comunicarea clientserver. In mod tipic, mai multi clienti vor face mai multe cereri simultan, iar serverul trebuie sa stie ce cereri vin de la care clienti. Abordarea uzuala consta in folosirea unui sessionid

Sesiune Acest model este potrivit pentru o aplicatie client-server in care exista urmatoarele cerinte Identitatea clientului: trebuie sa existe o modalitate de a distinge intre utilizatorii unui sistem. Continuitatea operatiilor: operatiile pot fi organizate sub forma de tranzactii sau workflow. Persistenta datelor: se doreste asocierea unor date cu un client pe perioada in care clientul interactioneaza cu serverul

Sesiune: variante de implementare Gestionarea identitatii sesiunii Identificarea pe baza autentificarii: sessionid oferit pe baza de login Identificarea implicita: o conexiune persistenta intre client si server consta in sesiune Identificarea arbitrara: orice client nou primeste automat un sessionid Gestionarea starii sesiunii Pe partea de client (reduce incarcarea serverului) Pe partea de server (securitate sporita, eficienta)

Vă mulńumim!... pentru atenńie răbdare