Sunteți pe pagina 1din 6

Ministerul Educației, Culturii și Cercetării

Universitatea Tehnică a Moldovei


Facultatea Calculatoare, Informatică şi Microelectronică
Departamentul Ingineria Software și Automatică

Șabloane de Proiectare
Lucrare de laborator nr.5
Disciplina:Tehnici și mecanisme de proiectare software

Studentul gr. TI-183: Borta Sergiu


Conducător: Scrob Sergiu

Chișinău 2021
Sarcina:
Crearea unui programa utilizant sabloanelel de proiectare Composite si Decorator, care va gestiona necesitatile unei
sali de sport.

Descrierea domeniului

Sportul este o activitate care poate influenta stilul de viată,sănătatea sau personalitatea unui om.  Acesta este
singurul mod prin care poți fi cu adevărat sănătos, mai ales în combinație cu o alimentație și alte obiceiuri
sănătoase.Exită un șir de beneficii care prezintă necesitatea de a duce un mod sănătos de viață:

 modelează și menținere corpul, arde grăsimile, dezvoltă armonios aparatului locomotor,


îmbunătățește circulația sangvină, menține puterea mușchilor și oaselor;
 dezvoltarea abilității de concentrare;
 creșterea abilității de lucru în echipă;
 tratează stările negative ale psihicului, cum ar fi anxietatea și depresia;
 dezvoltarea spiritului de fair play;
 creșterea încrederii de sine;
 dezvoltarea abilităților sociale;
 dezvoltarea capacității de auto-disciplinare;
 formează motivația, ambiția și angajamentului pe termen lung;
 creșterea abilităților competitive;
 formarea abilității de a accepta victoria sau înfrângerea.

Astfel  importanța sportului în viața tinerilor și a celor în vârstă este incontestabilă. Din păcate, multe
persoane uită de acest lucru ,nu au posibilitate și nu beneficiază de toate avantajele pe care activitatea fizică
le poate adduce din cauza pandemiei.

Problema identificata
Fiin in regim de pandemiasala noastra a decis sa organizeze un program online de antrenament. Pentru a facilita
interactiunea dintre membrii , ne-am gandit ca fiecare antrenor sa aiba un grup de cateva persoane , iar cea mai buna
persoana din grupa respectiva sa poata antrena o grupa proprie . Totusi pentru a pastra sala intr-o stare buna , am
decis sa oferim atat antrenorilor cat si celor care se antreneaza posibilitatea de a obtine un job temporar si a ajuta in
masura posibilitatilor.

Deci pentru a putea implimenta aceasta posibilitatea in care un antrenor poate avea mai multi membrii in echipa , iar
cel mai bun sa poata avea propria echipa , iar ei ca antrenori sa decida pe cine sa adauge , pe cine sa scoata din
echipa , si sa obtina informatia despre echipa la nivele <<ierarhice mai jos>> fara a depinde daca este si el antrenat de
cineva am decis implimentarea sablonului de proiectare Composite , care ne ajuta sa creem structuri asemanatoare
arborilor , unde fiecare not poate actiona de sine statator cu ramificatiile care pleaca de la el. Iar pentru alocarea de
joburi noi (ceea ce reprezint aun functional nou atat pentru trainer cat si pentru simplii membrii) v-om utiliza
decorator.
Diagrame UML :
Diagramele pentru care demonstreaza implimentarea clasei ce reprezinta
1)Component - PersonEntity
2)Composite – Trainer , care mosteneste si de la interfata ITrainer pentru a putea adauga/scoate membrii din
echipa
3)Leaf - Member

Diagramele pentru care demonstreaza implimentarea clasei ce reprezinta


1)Component - PersonEntity
2)Concret Component - Trainer
3)Decorator - JobEntity
4)Concret Decorator - GetJob
Codul sursa :
PersonEntity.cs
public abstract class PersonEntity
{
protected string name;

public PersonEntity(string name)


{
this.name = name;

public abstract int GetTeamCount();


}

Trainer.cs
public class Trainer : PersonEntity, ITrainer
{
private List<PersonEntity> teamMembers;
public Trainer(string name) : base(name)
{
teamMembers = new List<PersonEntity>();
}

public void AddMember(PersonEntity entity)


{
teamMembers.Add(entity);
}

public void RemoveMember(PersonEntity entity)


{
teamMembers.Remove(entity);
}

public override int GetTeamCount()


{
int count = 1;
foreach (var obj in teamMembers)
{
count += obj.GetTeamCount();
}
return count;
}
}
JobEntity.cs
public abstract class JobEntity : PersonEntity
{
public PersonEntity entity;
public JobEntity(string name, PersonEntity entity) : base(name)
{
this.entity = entity;
}
}

GetJob
public class GetJob : JobEntity
{
protected List<string> JobsList = new List<string>();
protected string entityName;
public GetJob(string name, PersonEntity entity) : base(name, entity)
{
entityName = name;
}

public override int GetTeamCount()


{
return 1;
}

public void AddJob(string name)


{
JobsList.Add(name);
}
public void RemoveJob(string name)
{
if (JobsList.Contains(name))
{
JobsList.Remove(name);
}
}

public void ShowJobs()


{
Console.WriteLine("Trainer name : " + entityName);
Console.WriteLine("Job list for :");
foreach(var obj in JobsList)
{
Console.WriteLine(obj);
}
}
}
Program.cs

var trainer = new Trainer("Sergiu");


var newJob = new GetJob("Sergiu", trainer);
newJob.AddJob("Barmen");
newJob.ShowJobs();

Rezultatul execuției :

Concluzie :
In cadrul acestei lucrari de laborator m-am familiarizat cu un sablon de proiectare nou : Decorator si am
aplicat intr-o alta solutie sablonul Composite. Fiecare a fost conceput pentru a rezolva o anumita problema.
Composite este sablonul de proiectare care nu ajuta sa facem un management eficient atunci cand datele
noastre sunt organizate in forma unui arbore , iar fiecare nod are posibilitatea sa actioneze de sine statator ,
iar sablonul Decorator ne permite sa adaugam functional nou claseloc deja existente..

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

  • Laborator-4 TMPS Borta
    Laborator-4 TMPS Borta
    Document9 pagini
    Laborator-4 TMPS Borta
    Сергей Борта
    Încă nu există evaluări
  • Laborator-2 TS
    Laborator-2 TS
    Document13 pagini
    Laborator-2 TS
    Сергей Борта
    Încă nu există evaluări
  • Laborator-2 TMPS Borta
    Laborator-2 TMPS Borta
    Document11 pagini
    Laborator-2 TMPS Borta
    Сергей Борта
    Încă nu există evaluări
  • TI183 BortaSergiu Lab3
    TI183 BortaSergiu Lab3
    Document5 pagini
    TI183 BortaSergiu Lab3
    Сергей Борта
    Încă nu există evaluări
  • LAB2 Matlab
    LAB2 Matlab
    Document9 pagini
    LAB2 Matlab
    Сергей Борта
    Încă nu există evaluări
  • Laborator-1 TMPS Borta
    Laborator-1 TMPS Borta
    Document10 pagini
    Laborator-1 TMPS Borta
    Сергей Борта
    Încă nu există evaluări
  • PR Lab2
    PR Lab2
    Document5 pagini
    PR Lab2
    Сергей Борта
    Încă nu există evaluări
  • Lab 4 CDE
    Lab 4 CDE
    Document10 pagini
    Lab 4 CDE
    Сергей Борта
    Încă nu există evaluări
  • Lab 1
    Lab 1
    Document3 pagini
    Lab 1
    Сергей Борта
    Încă nu există evaluări
  • Marketing - Borta Sergiu
    Marketing - Borta Sergiu
    Document16 pagini
    Marketing - Borta Sergiu
    Сергей Борта
    Încă nu există evaluări
  • Lab 3 CDE
    Lab 3 CDE
    Document8 pagini
    Lab 3 CDE
    Сергей Борта
    Încă nu există evaluări
  • Sarcina Pentru Studenţi (Tema Intreprindere) - 2
    Sarcina Pentru Studenţi (Tema Intreprindere) - 2
    Document9 pagini
    Sarcina Pentru Studenţi (Tema Intreprindere) - 2
    Сергей Борта
    Încă nu există evaluări
  • Lab 1 CDE
    Lab 1 CDE
    Document5 pagini
    Lab 1 CDE
    Сергей Борта
    Încă nu există evaluări
  • Lab 5 CDE
    Lab 5 CDE
    Document13 pagini
    Lab 5 CDE
    Сергей Борта
    Încă nu există evaluări
  • APAlab 4
    APAlab 4
    Document15 pagini
    APAlab 4
    Сергей Борта
    Încă nu există evaluări