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. 4


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

Elaborat: st. gr. TI-181 Peretean Ilie


Verficat: conf. univ. Scrob Sergiu

Chișinău – 2021
Definitie

Converteste interfața unei clase într-o altă interfață pe care o așteaptă clienții. Adapter
permite claselor să lucreze împreună, care altfel nu ar putea fi din cauza interfețelor
incompatibile.

Structura

Participanti

Target definește interfața specifică domeniului pe care o folosește Clientul.


Adapter adaptează interfața Adaptee la interfața țintă.
Adaptee definește o interfață existentă care trebuie adaptată.
Client colaborează cu obiecte prin intermediul interfetei țintă.

Realizare

Sa presupunem avem mai multe masini in rand la asigurare

interface Organizare{
public void masina1();
public void masina2();
public void masina2Coaches();
}

de asemenea avem clasa care realizeaza interfata data


class ChisinauOrganizare implements organizare{

@Override
public void masina1(){
System.out.println("participants inceput masina1");
}

@Override
public void masina2(){
System.out.println("participants inceput masina2");
}

@Override
public void masina2Coaches(){
System.out.println("coaches inceput masina2");
}
}

avem 3 tipuri de masini , participantii se lupta in tipul KUMITE, KATA si de


asemenea antrenorii se lupta in tipul KATA. Organizarea campionatului o ia
Organizatorul Campionatului.

class OrganizareOrganizer{
private organizare organizare;
public organizareOrganizer(Organizare organizare
this.organizare = organizare;
}

public void start(){


organizare.inceput();
organizare.inceput2();
organizare.inceput2Coaches();
}
}

public class Main{


public static void main(String[] args){
//сream obiectul organizare
Tournament localOrganizare = new ChisinauOrganizare();
//cream obiectul OrganizareOrganizer si ii transmitem obiectul localOrganizare
TournamentOrganizer OrganizareOrganizer = new
OrganizareOrganizer(localOrganizare);
//процессор управляет работой машины
OrganizareOrganizer.startOrganizare();
Output:
participants masina1
participants masina2
coaches masina2
Putem observa ca masinile nu sau pus in randul care erau– TEAM 2

class organizare1 implements organizare2 {

@Override
public void masina1(){
System.out.println("participants masina1");
}

@Override
public void masina2(){
System.out.println("participants masina2");
}

@Override
public void masina2 team(){
System.out.println("participants masina2 team");
}
}

dupa cum vedem organizarea se diferentiaza si avem 2 variante;

class OrganizareAdapter implements Organizare{


Organizare2 Organizare2;

public OrganizareAdapter(Organizare2 organizare2){


this.organizare2 = organizare2;
}

@Override
public void masina2(){
organizare2.maisna2();
}

@Override
public void masina2(){
organizare2.masina2();
}

@Override
public void fightKataCoaches(){
organizare2.masina2 team();
}
}

Clasa organizareAdapter realizeaza interfata Organizarii de baza. Obiectul adaptat (in


cazul nostru) il transmitem in constructorul clasei.

In final obtinem
public class Main{
public static void main(String[] args){
//сream obiectul Organizare
Organizare localOrganizare = new ChisinauOrganizare();
//cream obiectul OrganizareOrganizer si ii transmitem obiectul localOrganizare
OrganizareOrganizer OrganizareOrganizer = new
OrganizareOrganizer(localOrganizare);
//процессор управляет работой машины
OrganizareOrganizer.startOrganizare ();

//cream adapterul si ii transmitem


OrganizareAdapter 2organizare= new OrganizareAdapter(new 1organizare());
//cream organizatorul ii transmitem adapterul
//создаем процессор и передаем в него адаптер
OrganizareOrganizer OrganizareOrganizerKiev = new
OrganizareOrganizer(ukraineTournament);
//процессор управляет машиной
OrganizareOrganizerKiev.startOrganizare();
}
}

Output:
participants masina1
participants masina2
coaches masina2
participants masina1
participants masina2
participants msina2 team

Concluzie

In concluzie as vrea sa mentionez ca din punctul meu de vedere sablonul de proiectare


Adapter este unul dintre cele mai utile sabloane. El functiuneaza la fel ca un adapter
din viata reala si permita colaborarea a doua interfete incompatibile. Interfetele pot fi
incompatibile, dar functionalitatea interioara ar trebui sa se potriveasca nevoilor.
Schema de proiectare a adapterului permite ca clase incompatibile sa lucreze
impreuna transformand interfata unei clasa intr-o interfata asteptata de clienti.

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