Вы находитесь на странице: 1из 10

Universitatea Tehnic a Moldovei

Catedra Automatic i Tehnologii Informaionale

Raport
Lucrarea de laborator Nr.1

la disciplina:
Ingineria produselor program
Tema:
Implementarea abloanelor de proiectare creaionale

A afectuat: st.gr.Ti-141 M. Ghelas

A verificat lect. sup. S. Scrob

Chiinu 2017
Cuprins

ablonul Singletone....................................................................................................................... 3

Sablonul prototype ........................................................................................................................ 4

Factory method ............................................................................................................................. 6

Builder si Abstract factory ........................................................................................................... 8


Tema: Implementarea abloanelor creaionale Singletone, Factory method, Abstract factory,
Prototype, Builder.

ablonul Singletone

Intenia: proiectarea unei clase cu un singur obiect (o singura instan)

Motivaie: ntr-un sistem de operare: n exista un sistem de fiiere n exista un singur manager de
ferestre n.
Aplicabilitate: cnd trebuie s existe exact o instanta clientii clasei trebuie sa aiba acces la instanta
din orice punct bine definit abloane de proiectare

Structura:

Participant: Singleton
colaborari: clientii clasei
Consecine: acces controlat la instanta unica
reducerea spaiului de nume (eliminarea variab. globale)
permite rafinarea operaiilor si reprezentrii
permite un numar variabil de insante
mai flexibila dect operaiile la nivel de clas (statice)

Implementare:
public class Player
{
private static Player _player;
public int Score { get; set; } = 0;

private Player()
{

public static Player GetPlayer()


{
if(_player == null)
_player = new Player();

return _player;
}

}
Diagrama de clase poate fi analizata in figura 1.

Figura 1- Diagrama de clase a sablonului singleton

Sablonul prototip
Sablonul prototype este un sablon creational. Este utilizat cind tipul obiectelor pentru creare este
determinat de o instant prototip, care este clonat pentru a produce obiect nou. Sablonul este
utilizat pentru:

Evitarea costului de a crea obiecte noi in mod standard utilizind cuvintul cheie new atunci
cind resursele sunt costisitoare.
Pentru a implementa sablonul, se declara o clasa de baza abstracta care specifica metoda clone
care implementeaza clonarea obiectului.
public abstract class Employee
{
public string Name { get; set; }
public string Role { get; set; }
public double Experience { get; set; }
public string Prefered_language { get; set; }

public abstract Employee Clone();


public abstract void GetData();
public abstract void SetData(string name, double exp, string lng);
}
public class Developer : Employee
{
public override Employee Clone()
{
return (Employee)this.MemberwiseClone();
}

public override void GetData()


{
Console.WriteLine("Name: {0}", Name);
Console.WriteLine("Role: {0}", Role);
Console.WriteLine("Experience: {0}", Experience);
Console.WriteLine("Prefered Language: {0} \n", Prefered_language);
}

public override void SetData(string name, double exp, string lng)


{
Name = name;
Role = Roles.Developer.ToString();
Experience = exp;
Prefered_language = lng;
}
}
Diagrama de clase a acestui sablon este prezentata in figura 2.
Figura 2 - Diagrama de clase a sablonului prototip

Factory method
Definirea intefetei pentru crearea obiectului, dar subclasele decid care clasa de instantiate.
Factory Method permite subclaselor sa instantieze obiecte.

public class CharacterFactory


{

private bool _hero;


private bool _orc;
private bool _zombi;
private Dictionary<CharacterRoles, Character> _characters = new
Dictionary<CharacterRoles, Character>();

public CharacterFactory()
{
_hero = false;
_orc = false;
_zombi = false;
}

public Character CreateCharacter(CharacterRoles role)


{
Character character = null;

if (role == CharacterRoles.Hero)
{
if (!_hero)
{
character = new HeroCharacter();
_hero = !_hero;
_characters.Add(CharacterRoles.Hero, character);
}
else
{
var ch = _characters.Where(kvp => kvp.Key ==
CharacterRoles.Hero).Select(x => x.Value).Single();
character = ch.Clone();
}
}
else if (role == CharacterRoles.Orc)
{
if (!_orc)
{
character = new OrcCharacter();
_orc = !_orc;
_characters.Add(CharacterRoles.Orc, character);
}
else
{
var ch = _characters.Where(kvp => kvp.Key ==
CharacterRoles.Orc).Select(x => x.Value).Single();
character = ch.Clone();
}
}
else if (role == CharacterRoles.Zombi)
{
if (!_zombi)
{
character = new ZombiCharacter();
_zombi = !_zombi;
_characters.Add(CharacterRoles.Zombi, character);
}
else
{
var ch = _characters.Where(kvp => kvp.Key ==
CharacterRoles.Zombi).Select(x => x.Value).Single();
character = ch.Clone();
}
}

return character;
}

}
Diagrama de clase a sablonului este prezentata in figura 3.
Figura 3 - Diagrama de clase a sablonului factory method

Builder si Abstract factory


Abstract factory
Asigur o interfa pentru crearea familiilor de obiecte legate sau dependente far de a specifica
clasa lor concret.
Builder
Separa constructia obiectelor complexe de reprezentare pentru ca aceelasi process de constructie
sa creeze reprezentari diferite.
Diagrama sablonului abstract factory este prezentata in figura 4.

Figura 4 - Diagrama de clase a sablonului abstract factory


BUILDER
public class TeamRegister
{
public void CreateTeam(ITeamBuilder team)
{
team.SetGoalKeeper();
team.SetDefence();
team.SetMedfield();
team.SetAttack();

Team finalTeam = team.GetFinalTeam();


finalTeam.ShowTeam(finalTeam);
}
}

Diagrama de clase a acestui sablon este reprezentata in figura 5.

Figura 5 - Diagrama de clase a sablonului Builder


Concluzie
abloanele ne ajut pentru proiectarea corect a arhitecturii unei aplicaii. abloanele se
utilizeaz n dependen de problemele de proiectare care apar n procesul dezvoltrii unui proiect.
ablonul Singleton se utilizeaz pentru a rezolva problema de creare a unei singure
instane a unei clase. Abstract factory creaz o instan a mai multor familii de clase, reprezint un
factory la o alt mulime de factory, nivelul de abstractizare fiind reprezentat in 2 nivele. Builder
separ reprezentarea obiectului de construirea lui, n aa mod putem construi obiecte complexe
printr-o arhitectur mai simpl a codului. Factory method creaza instane a mai multor clase
derivate, acest fapt ne ofer posibilitatea de a construi obiecte separat de client. Prototype creaz
clone de obiecte pentru a utiliza resursele eficient.

Вам также может понравиться

  • Interogarea Bazei de Date
    Interogarea Bazei de Date
    Документ29 страниц
    Interogarea Bazei de Date
    DumitruGuba
    Оценок пока нет
  • Algoritmul de Criptografie DSA
    Algoritmul de Criptografie DSA
    Документ2 страницы
    Algoritmul de Criptografie DSA
    DumitruGuba
    Оценок пока нет
  • 5.2 Sabloane de Proiectare
    5.2 Sabloane de Proiectare
    Документ15 страниц
    5.2 Sabloane de Proiectare
    roxi1234ro
    Оценок пока нет
  • Lab1 TS
    Lab1 TS
    Документ7 страниц
    Lab1 TS
    DumitruGuba
    Оценок пока нет
  • Lucrare de Laborator Nr4
    Lucrare de Laborator Nr4
    Документ3 страницы
    Lucrare de Laborator Nr4
    DumitruGuba
    Оценок пока нет
  • Lab9 Amsi
    Lab9 Amsi
    Документ10 страниц
    Lab9 Amsi
    DumitruGuba
    Оценок пока нет
  • Lab3 Amsi
    Lab3 Amsi
    Документ6 страниц
    Lab3 Amsi
    DumitruGuba
    Оценок пока нет
  • Capitol 2 Baze de Date
    Capitol 2 Baze de Date
    Документ19 страниц
    Capitol 2 Baze de Date
    Luca Dorina
    Оценок пока нет
  • Temp Testing
    Temp Testing
    Документ12 страниц
    Temp Testing
    DumitruGuba
    Оценок пока нет
  • Indrumar
    Indrumar
    Документ26 страниц
    Indrumar
    Ion Damaschin
    Оценок пока нет
  • Securitatea Si Sanatatea in Munca Ciclu Preleg DS
    Securitatea Si Sanatatea in Munca Ciclu Preleg DS
    Документ181 страница
    Securitatea Si Sanatatea in Munca Ciclu Preleg DS
    Maxim Gherea
    67% (3)
  • Fișă de Post
    Fișă de Post
    Документ4 страницы
    Fișă de Post
    DumitruGuba
    Оценок пока нет
  • PAIIP Lab1
    PAIIP Lab1
    Документ9 страниц
    PAIIP Lab1
    DumitruGuba
    Оценок пока нет
  • Lab2 Amsi
    Lab2 Amsi
    Документ6 страниц
    Lab2 Amsi
    DumitruGuba
    Оценок пока нет
  • Teoria Jocurilor
    Teoria Jocurilor
    Документ2 страницы
    Teoria Jocurilor
    DumitruGuba
    Оценок пока нет
  • 5.8 UML Diagrame de Stari
    5.8 UML Diagrame de Stari
    Документ9 страниц
    5.8 UML Diagrame de Stari
    DumitruGuba
    Оценок пока нет
  • Capitol 1
    Capitol 1
    Документ9 страниц
    Capitol 1
    bbadarau3879
    Оценок пока нет
  • Memorize
    Memorize
    Документ7 страниц
    Memorize
    DumitruGuba
    Оценок пока нет
  • Baze de Date Relationale
    Baze de Date Relationale
    Документ136 страниц
    Baze de Date Relationale
    Vlad Sirbu
    Оценок пока нет
  • Fișă de Post
    Fișă de Post
    Документ4 страницы
    Fișă de Post
    DumitruGuba
    Оценок пока нет
  • Management 2006
    Management 2006
    Документ8 страниц
    Management 2006
    claunat
    100% (1)
  • All in One
    All in One
    Документ117 страниц
    All in One
    DumitruGuba
    Оценок пока нет
  • Mi-Testare 2
    Mi-Testare 2
    Документ11 страниц
    Mi-Testare 2
    DumitruGuba
    Оценок пока нет
  • 3.2 Modelarea Sistemelor Informatice
    3.2 Modelarea Sistemelor Informatice
    Документ28 страниц
    3.2 Modelarea Sistemelor Informatice
    Daniel Bota
    Оценок пока нет
  • Biletul 11
    Biletul 11
    Документ1 страница
    Biletul 11
    DumitruGuba
    Оценок пока нет
  • var/www/apps/conversion/tmp/scratch - 6/338333058.doc p.1
    var/www/apps/conversion/tmp/scratch - 6/338333058.doc p.1
    Документ18 страниц
    var/www/apps/conversion/tmp/scratch - 6/338333058.doc p.1
    DumitruGuba
    Оценок пока нет
  • 27.11.16 10:03 /var/www/apps/conversion/tmp/scratch - 7/338332949.doc P
    27.11.16 10:03 /var/www/apps/conversion/tmp/scratch - 7/338332949.doc P
    Документ35 страниц
    27.11.16 10:03 /var/www/apps/conversion/tmp/scratch - 7/338332949.doc P
    DumitruGuba
    Оценок пока нет
  • UML-Diagrame de Stare
    UML-Diagrame de Stare
    Документ17 страниц
    UML-Diagrame de Stare
    Valik1708
    Оценок пока нет
  • SOMIPP Bilete
    SOMIPP Bilete
    Документ25 страниц
    SOMIPP Bilete
    DumitruGuba
    Оценок пока нет