Sunteți pe pagina 1din 5

MINISTERUL EDUCAŢIEI, CULTURII și CERCETĂRII al REPUBLICII MOLDOVA

UNIVERSITATEA TEHNICĂ a MOLDOVEI


FACULTATEA CALCULATOARE, INFORMATICĂ și MICROELECTRONICĂ
DEPARTAMENTUL INGINERIA SOFTWARE și AUTOMATICĂ

RAPORT la lucrarea de laborator Nr. 5


Disciplina: Tehnici si Mecanisme de Proiectare Software
TEMA: Sablonul de proiectare AsigAuto

Elaborat: st. gr. TI-181 Peretean Ilie


Verficat: conf. univ. Scrob Sergiu

Chișinău – 2021
Cerinte
IDENTIFICATI O PROBLEMĂ REALĂ DIN DOMENIUL DISTRIBUIT CARE VA FI
IMPLEMENTATĂ UTILIZÂND COMBINAREA DINTRE ȘABLOANELE DE PROIECTARE COMPOSITE SI
DECORATOR PENTRU A SOLUTIONA O SINGURA PROBLEMA.

Definitie

definește o relație unu-la-mulți între subiecți, astfel încât atunci când se schimbă o
stare a unui obiect, acesta notifică și actualizează automat toate componentele
dependente.

Structura

Participanti

Subject (Stock)
îi știe observatorii. Orice număr de obiecte Observer pot observa un subiect
oferă o interfață pentru atașarea și detașarea obiectelor Composite.

ConcreteSubject (IBM)
stochează starea de interes pentru Concrete Composit
trimite o notificare observatorilor săi atunci când starea sa se schimbă

AsigAuto (IInvestor)
definește o interfață de actualizare pentru obiectele care ar trebui notificate cu privire
la modificările unui subiect.
ConcreteAsigAuto (Investor)
păstrează o referință la un obiect ConcreteSubject
magazinele afirmă că ar trebui să rămână consecvent cu subiectul
implementează interfața de actualizare a Asigurarii pentru a-și păstra starea în
concordanță cu subiectul
Realizare

Avem orgranizatorul campionatului care primeste live datele despre petrecerea


campionatului current (acesta va fi obiectul nostru) si le afiseaza userilor aplicatiei
care urmaresc (acesta va fi un observator). Organizatorul va notifica si va afisa in
aplicatie datele curente.

In primul rand trebuie sa cream o interfata pentru lucrul cu observatorul. In interfata


vor fi 3 metode: adaugarea observatorului , stergerea si notificarea observatorului. De
asemenea vom face asa ca clasa organizatorului sa implementeze aceasta interfata.

interface Notifier{
public void addComposite(Composite obs);
public void removeAsigurare(Asigurare obs);
public void notifyAsiguare();
}

Aceasta interfata are 3 metode , primele doua primesc in calitate de parametru insasi
observatorul.
Acum trebuie sa implementam aceasta interfata in clasa noastra.

class Organizer implements Notifier{


private List Asigurare;
private int spentlist;
private int Girls;
private int Boys;

public Organizer(){
AsigAuto = new ArrayList();
}

public void addAsiguare(Asigurare obs) {


Asigurare.add(obs);
}

public void removeAsigurare(Asigurare obs) {


int i = Asigurare.indexOf(obs);
if (i >= 0){
Asigurare.remove(i);
}
}
public void notifyAsigurare() {
for (int i = 0; i < Asigurare.size(); i++){
Asigurare obs = (Asigurare)Asigurare.get(i);
obs.update(spentlist, Girls, Boys);
}
}

public void changeData(int spentList, int Girls, int Boys){


this.spentList = spentList;
this. Girls Girls;
this. Boys = Boys;
notifyAsigurare();
}

Acum trebuie sa cream interfata care o va realiza

interface Asigurare{
public void update(int spentList, int Girls, int Boys);
}

Iar in cele din urma cream ascultatorul:

class Dashboard implements Asigurare{


private Notifier notifier;
private int spentList;
private int Girls;
private int Boys;

public Dashboard(Notifier notifier){


this.notifier = notifier;
notifier.addAsigurare(this);
}

public void update(int spentList, int Girls, int Boys) {


this.spentList = spentList;
this. Girls = Girls;
this. Boys = Boys;
show();
}

public void show(){


System.out.println("Spent List = " + spentList + ", Girls = " + Girls +
", Boys = " + Boys);
}

Organizer cp = new Organizer();


Dashboard db = new Dashboard(cp);
cp.changeData(20, 10, 10);
cp.changeData(25, 10, 15);
cp.changeData(30, 13, 17);

Rezultat:

Spent List = 20, Girls = 10, Boys = 10


Spent List = 25, Girls = 10, Boys = 15
Spent List = 30, Girls = 13, Boys = 17

Concluzie

In concluzie vreau sa mentionez ca sablonul Composite este utilizat pe scară largă în


sistemele de interfață ale utilizatorului în care datele și reprezentările lor
(„vizualizări”) sunt separate unele de altele. La schimbarea datelor, toate
reprezentările acestor date trebuie schimbate (de exemplu, sub forma unui tabel,
grafic sau diagrama).

S-ar putea să vă placă și