You are on page 1of 33

Tehnici de proiectare software – Anul III Sem.

1 – USH

A Adevarat / Fals
B Multiple choice – Grila 10
C Multiple choice – Grila 60 – Last Year
I – VII Cele 7 teme
naerpo xnet ro
Care e principala diferenţă dintre agregare şi compunere?

R: Agregarea presupune ca un anumit obiect posedă sau este responsabil faţă de un alt obiect. În
general spunem despre un obiect că are sau este parte dintr-un alt obiect. Agregarea implică faptul că un
obiect agregat şi proprietarul lui au durata de viaţă comună.
Asocierea, numită şi relaţie de utilizare (de tip "using"), presupune că un obiect pur şi simplu ştie de
existenţa altui obiect. Cele două obiecte asociate pot cere operaţii unul altuia dar nu sunt responsabili unul
III 4 faţă de altul. Asocierea este o relaţie mai slabă decât agregarea şi sugerează o cuplare mai slabă între
obiecte.
Agregările apar în număr mai mic, dar au un caracter mai stabil în timp. Asocierile se fac şi se refac
mai frecvent, uneori stabilindu-se doar pe durata unei operaţii. Asocierile au un caracter mai dinamic, ceea
ce le face greu de depistat în codul sursă.

— La compunere atributele compun clasa, la agregare o clasa are dar partajeaza obiectele din cealalta
clasa
Care este cel mai rapid (din punct de vedere al duratei) proces software?
Care e principalul lui dezavantaj?

II 2 R1: Modelul RAD


R2: –nu toate aplicatiile sunt potrivite pentru RAD.Daca un sistem nu poate fi modularizat construirea
componentelor necesare pentru RAD devine problematica
–resurse umane importante pentru a creea numarul corect de echipe RAD
Câte stări finale pot exista într-o diagramă de stare?
VII 3
R: 0 sau mai multe
Ce este o interfaţă?

II 1 R: Interfata unui obiect cuprinde mesajele publice a obiectului, o


colecţie de operaţii pe care trebuie să le furnizeze o clasă sau o
componentă
Ce este un pachet? Cum se reprezintă în UML un pachet?

R: În UML, un pachet defineşte un mecanism de organizare a elementelor în grupuri legate semantic.


VII 4
Rezultă că un element de modelare nu poate fi prins în mai multe pachete, dar un pachet poate importa
elemente de modelare din alte pachete, iar după import le consideră ca şi când ar fi proprietatea lui.
Un dreptunghi cu un alt dreptunghi mic lipit deasupra in stanga lui.
Ce reprezintă acronimul OMG?
I 1
R: Object Management Group (OMG)

Pg.1
Ce reprezintă barele de sincronizare? Scurt exemplu.

V 1

R: În UML, sincronizarea între fluxurile de control se reprezintă cu ajutorul barelor de sincronizare. O


bară de sincronizare permite îmbinarea (join)şi bifurcarea (fork) ramificaţiilor paralele în interiorul unui
fir de execuţie al unui caz de utilizare sau al unei metode.
Tranziţiile care pleacă dintr-o bază de sincronizare se declanşează simultan. Dacă mai multe
tranziţii intră într-o bază de sincronizare, acestea trebuie să se întâmple, înainteca bara să fie trecută de
una sau mai multe tranziţii de ieşire din bara de sincronizare. Bara de sincronizare se reprezintă printr-o
linie îngroşată.
Ce reprezintă evenimentele standard entry, do şi exit?

R: Există trei evenimente standard care pot declanşa acţiuni stărilor, şi anume:
-entry –specifică acţiunea care se produce atunci când obiectul intră în starea respectivă;
VII 5
-exit –specifică acţiunea care se execută atunci când obiectul părăseşte starea respectivă;
-do –specifică acţiunea care se execută atunci când obiectul se află în starea respectivă.

R: evenimente standard care pot declansa actiuni ale starilor


Ce sablon de proiectare nu este un sablon creational ?
C 60 a
a. Decorator c. Prototype
b. Builder d. Abstract Factory
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 1 a

a. Abstract Factory c. Builder


b. Singleton d. Prototype
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 2 a

a. FactoryMethod c. Builder
b. Singleton d. Prototype
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 3 a

a. Singleton c. Builder
b. FactoryMethod d. Prototype

Pg.2
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 4 a

a. Builder c. Singleton
b. FactoryMethod d. Prototype
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 5 a

a. Prototype c. Singleton
b. FactoryMethod d. Builder
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 6 a

a. Adapter c. Composite
b. Bridge d. Decorator
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 7 a

a. Bridge c. Composite
b. Adapter d. Decorator
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 8 a

a. Composite c. Bridge
b. Adapter d. Decorator
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 9 a

a. Decorator c. Bridge
b. Adapter d. Composite

Pg.3
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 10 a

a. Proxy c. Bridge
b. Adapter d. Composite
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 11 a

a. Observer c. State
b. Visitor d. Mediator
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 12 a

a. Iterator c. Visitor
b. Observer d. Model View Controller
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 13 a

a. Chain of Responsability c. Observer


b. Visitor d. State
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 14 a

a. Template Method c. Visitor


b. Observer d. State

Pg.4
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 15 a

a. Reactor c. Visitor
b. Observer d. MVC
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 37 a

a. Strategy c. Observer
b. Visitor d. State
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 38 a

a. State c. Proxy
b. Visitor d. State
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 39 a

a. Bridge c. Decorator
b. Visitor d. State
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 40 a

a. Composite c. Strategy
b. Visitor d. Bridge
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 41 a

a. Flyweight c. Composite
b. Proxy d. Bridge

Pg.5
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 42 a

a. Interpreter c. Observer
b. Prototype d. Iterator
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 43 a

a. Decorator c. Observer
b. Prototype d. Proxy
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 44 a

a. Chain of responsability c. Adapter


b. Prototype d. Bridge
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 45 a

a. Facade c. Adapter
b. Prototype d. Decorator
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 46 a

a. Adapter c. Proxy
b. Bridge d. Decorator

Pg.6
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 47 a

a. Proxy c. Adapter
b. Mediator d. Decorator
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 48 a

a. Command c. Mediator
b. Builder d. Facade
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 49 c

a. Memento c. State
b. Composite d. Visitor
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 50 a

a. Iterator c. Observer
b. Compozite d. Visitor
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 51 a?

a. Mediator c. Proxy
b. Adapter d. Facade

Pg.7
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 52 a

a. Observer c. Proxy
b. Decorator d. Template Method
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 53 b

a. Template Method c. Proxy


b. Bridge d. Decorator
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 54 a

a. Visitor c. Observer
b. Iterator d. Interpreter
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 55 a

a. Factory Method c. Facade


b. Bridge d. Decorator
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 56 a

a. Prototype c. Facade
b. Bridge d. Decorator

Pg.8
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 57 a

a. Abstract Factory c. Facade


b. Bridge d. Decorator
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 58 c

a. Builder c. Bridge
b. Factory Method d. Decorator
Ce sablon de proiectare reprezinta diagrama urmatoare:

C 59 a

a. Singleton c. Facade
b. Bridge d. Decorator
Clasificaţi tipurile de mesaje.

R: Mesaje sincroane: specifice functionarii procedurale


IV 3
Mesaje de raspuns: reprezentarea e optionala
Mesaje asincroane: nu asteapta raspuns ,obiectul ramane active
Mesaje simple: nu asteapta raspuns ,obiectul pierde controlul
Cu ce simbol se reprezintă un caz de utilizare (use-case)?
I 3
R: un oval
Cum este cunoscut grupul oamenilor de stiinta care sunt asociati cu UML?

B 4 a. The Dynamic Duo c


b. The Three Musketeers
c. The Three Amigos
Cum este indicat un stereotip?
I 5
R: << >>
Cum este indicată o metodă publică? Dar un atribut privat?
II 4
R: metoda publica – precedata de (+)
atribute private – pot fi accesate numai in clasa respectiva si sunt precedate de "-"

Pg.9
Cum se reprezintă grafic un pachet?
II 6
R: un dreptunghi mare si un dreptunghi mic lipit de el deasupra stanga
Cum se reprezintă în UML o componentă?
V 3
R: diagramele de componente ?????
Cum se reprezintă o subcolaborare?
IV 5
R: Subcolaborarea este o submulţime de obiecte împreună cu legăturile dintre ele. O subcolaborare
poate fi privită ca un singur element şi poate fi reprezentată ca un pachet.
Cum se reprezintă un atribut de clasă?

R: Din punct de vedere al unei diagrame UML, o clasa se reprezinta printr-un dreptunghi divizat in trei
III 6 parti: portiunea superioara reprezinta numele clasei, cea din mijloc atributele acesteia, iar ultima
zona cuprinde operatiile asociate clasei.
Sintaxa atributului este:
[vizibilitate]nume:tip_expresie [valoarea_initiala {lista de proprietati}]
Cum se specifică o condiţie? Exemple.

R: *Conditiia se marchează ca un text pe săgeată intre paranteze drepte şi arată condiţia care trebuie
VII 2
îndeplinită pentru a urma acel flux.
*În UML transmiterea unui mesaj poate depinde de îndeplinirea unei condiţii. În cadrul diagramei,
condiţiile vor apărea în paranteze drepte şi vor fi poziţionate în faţa mesajelor corespunzătoare.
Cum se specifică pe diagramă actorii secundari?
III 9
R: in partea dreapta
Dacă o clasă are mai mulţi părinţi şi fiecare părinte introduce o operaţie cu acelaşi nume, există conflict de
nume? Dacă da, cum se poate rezolva.
III 2
R: ………...
Daţi exemple de diagrame statice. Unde se foloseşte fiecare dintre aceste diagrame?

R: Diagrame statice sau structurale - descriu structura, responsabilităţile sistemului informatic, com-
IV 1
ponentele executabile ale sistemului, locaţiile fizice de execuţie şi nodurile de stocare a datelor. Din
această categorie, fac parte diagrame ale claselor, ale obiectelor, ale cazurilor de utilizare, ale com-
ponentelor şi diagrame de exploatare
De ce anume este reflectată în implementare, generalizarea în UML? (alegeţi dintre polimorfism,
agregare, moştenire, interfeţe)

R: mostenirea
Moştenirea de clasă este în esenţă un mecanism care permite:
 extinderea funcţionalităţii unei aplicaţii prin reutilizarea funcţionalităţii din clasele părinte;
I 7
 definirea rapidă a unui nou fel de obiect, în termenii unuia deja existent;
 obţinerea unor noi implementări aproape fără efort, prin preluarea unei mari părţi din ceea ce avem
nevoie de la clase existente.
Reutilizarea implementării reprezintă doar o faţetă a conceptului de moştenire. Posibilitatea de a defini
familii de obiecte cu interfeţe identice (de obicei prin moştenirea de la o clasă abstractă) este un alt aspect
important, deoarece polimorfismul depinde de el.
Descrieţi modelul de proces cascadă.

R: Modelul secvential liniar (cascada) presupune activitatiile:


a) ingineria sistemului si modelarea: stabilirea cerintelor pentru elementele sistemului
b) analiza cerintelor software: trebuie intelese comportarea software-ului, interfata, perfor-
III 7
mantele dorite
c) design: e defapt un process in mai multi pasi, ce se concentreaza pe structura datelor,
arhitectura software-ului, reprezentarea interfetei si detaliu procedural(algorithmic)
d) generarea codului: care translateaza designul in program
e) testarea:depistarea eventualelor erori, defecte si esecuri

Pg.10
Diagramele de activitate difera de flowchart-uri deoarece diagramele de activitate suporta

a. culoarele (swimlanes)
B 5 a
b. comportament paralel (parallel behaviour)
c. noduri de decizie
d. actiuni
Fie urmatoarea diagrama de clase

C 20 a

Care afirmatie este adevarata:

a. Diagrama este conforma cu sablonul Model View Controller


b. Diagrama este conforma cu sablonul Observer
c. Diagrama este conforma cu sablonul Bridge
d. Diagrama este conforma cu sablonul Singleton
Fie urmatoarea diagrama de clase

C 21 d

Care afirmatie este adevarata:

a. Implementrea metodei void actionPerformed (ActionEvent) nu este obligatorie


b. Implementrea metodei void actionPerformed (ActionEvent) este obligatorie in clasa View
c. Implementrea metodei void actionPerformed (ActionEvent) este obligatorie in clasa Model
d. Implementrea metodei void actionPerformed (ActionEvent) este obligatorie in clasa
Controller

Pg.11
Fie urmatoarea diagrama de clase

C 22 d

Care afirmatie este adevarata:

a. Clasa View implementeaza interfata ActionListener


b. Clasa Controller implementeaza interfata WindowListener
c. Clasa ActionListener implementeaza interfata Controller
d. Clasa Controller implementeaza interfata ActionListener
Fie urmatoarea diagrama de clase

C 23 ?

Care afirmatie este adevarata:

a. Clasa Model implementeaza interfata ActionListener


b. Clasa View implementeaza interfata ActionListener
c. Clasa ActionListener implementeaza interfata Controller
d. Clasa Controller implementeaza interfata WindowListener
Fie urmatoarea diagrama de colaborare intre obiecte.

C 36 a

Care din urmatoarele afirmatii este adevarata:

a. Diagrama reprezinta colaborarea intre obiectele sablonului Observer-Observable


b. Diagrama reprezinta colaborarea intre obiectele sablonului MVC
c. Diagrama reprezinta colaborarea intre obiectele sablonului Bridge
d. Diagrama reprezinta colaborarea intre obiectele sablonului State

Pg.12
Fie urmatorul program Java :

import java.util.Observer;
import java.util.Observable;
import java.awt.*;
import java.awt.event.*;
public class Observator extends Frame
implements WindowListener, Observer{
static protected ModelObservabil m=new ModelObservabil();
protected Button exitB, actB;
protected TextField field;
private ButtonController buttonC;
public static void main(String args[]){
Frame fn=new Observator(0);// nu observa pe m

Frame f01=new Observator(1);// observa pe m


Frame f02=new Observator(1);// observa pe m
}

public Observator(int i){


if (i==1)m.addObserver(this);
Panel p= new Panel();
buttonC=new ButtonController(this);
exitB= new Button("Exit");
exitB.addActionListener(buttonC);
actB= new Button("modifica");
actB.addActionListener(buttonC);
field= new TextField("MyTextField");
field.setEditable(true);
p.add(exitB);
p.add(actB);
C 32 a
add(field);
add("North",p);
addWindowListener(this);
setSize(160,110);
setVisible(true);

}
public void windowClosed(WindowEvent e){}
public void windowOpened(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
public void windowClosing(WindowEvent e){dispose();
//System.exit(0);
}

public void update(Observable observ, Object ob){


field.setText(m.afis);

}
}

class ButtonController implements ActionListener{


Observator view;
public ButtonController(Observator win){
view=win;
}
public void actionPerformed (ActionEvent e){
Object source=e.getSource();
if (source == view.exitB) System.exit(0);

Pg.13
else {
view.m.modifica();
};

}
}
class ModelObservabil extends Observable{
protected int i=0;
protected String afis=" ";
public ModelObservabil(){
setChanged();
notifyObservers();
}
public void modifica(){
i++;
afis= " "+ i;
setChanged();
notifyObservers();
}
}
Care afirmatie este adevarata:

a. Valoarea lui m.i se modifica prin actionarea butonului „modifica” din oricare dintre
ferestrele fn, fo1,fo2.
b. Valoarea lui m.i se modifica numaiu prin actionarea butonului „modifica” din fereastra fn
c. Valoarea lui m.i se modifica numaiu prin actionarea butonului „modifica” din fereastra fo1
d. Valoarea lui m.i se modifica numaiu prin actionarea butonului „modifica” din fereastra fo2
Fie urmatorul program Java :

import java.util.Observer;
import java.util.Observable;
import java.awt.*;
import java.awt.event.*;
public class Observator extends Frame
implements WindowListener, Observer{
static protected ModelObservabil m=new ModelObservabil();
protected Button exitB, actB;
protected TextField field;
private ButtonController buttonC;
public static void main(String args[]){
Frame fn=new Observator(0);// nu observa pe m

Frame f01=new Observator(1);// observa pe m


Frame f02=new Observator(1);// observa pe m
}
C 33 a
public Observator(int i){
if (i==1)m.addObserver(this);
Panel p= new Panel();
buttonC=new ButtonController(this);
exitB= new Button("Exit");
exitB.addActionListener(buttonC);
actB= new Button("modifica");
actB.addActionListener(buttonC);
field= new TextField("MyTextField");
field.setEditable(true);
p.add(exitB);
p.add(actB);
add(field);
add("North",p);
addWindowListener(this);
setSize(160,110);
setVisible(true);

Pg.14
}
public void windowClosed(WindowEvent e){}
public void windowOpened(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
public void windowClosing(WindowEvent e){dispose();
//System.exit(0);
}

public void update(Observable observ, Object ob){


field.setText(m.afis);

}
}

class ButtonController implements ActionListener{


Observator view;
public ButtonController(Observator win){
view=win;
}
public void actionPerformed (ActionEvent e){
Object source=e.getSource();
if (source == view.exitB) System.exit(0);
else {
view.m.modifica();
};

}
}
class ModelObservabil extends Observable{
protected int i=0;
protected String afis=" ";
public ModelObservabil(){
setChanged();
notifyObservers();
}
public void modifica(){
i++;
afis= " "+ i;
setChanged();
notifyObservers();
}
}
Care afirmatie este adevarata:

a. Programul implementeaza sabloanele Model View Controller si Observer


b. Programul implementeaza doar sablonul Model View Controller
c. Programul implementeaza doar sablonul Observer
d. Programul implementeaza sablonul Bridge

Pg.15
Fie urmatorul program Java :

import java.util.Observer;
import java.util.Observable;
import java.awt.*;
import java.awt.event.*;
public class Observator extends Frame
implements WindowListener, Observer{
static protected ModelObservabil m=new ModelObservabil();
protected Button exitB, actB;
protected TextField field;
private ButtonController buttonC;
public static void main(String args[]){
Frame fn=new Observator(0);// nu observa pe m

Frame f01=new Observator(1);// observa pe m


Frame f02=new Observator(1);// observa pe m
}

public Observator(int i){


if (i==1)m.addObserver(this);
Panel p= new Panel();
buttonC=new ButtonController(this);
exitB= new Button("Exit");
exitB.addActionListener(buttonC);
actB= new Button("modifica");
actB.addActionListener(buttonC);
field= new TextField("MyTextField");
field.setEditable(true);
p.add(exitB);
p.add(actB);
add(field);
C 34 a
add("North",p);
addWindowListener(this);
setSize(160,110);
setVisible(true);

}
public void windowClosed(WindowEvent e){}
public void windowOpened(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
public void windowClosing(WindowEvent e){dispose();
//System.exit(0);
}

public void update(Observable observ, Object ob){


field.setText(m.afis);

}
}

class ButtonController implements ActionListener{


Observator view;
public ButtonController(Observator win){
view=win;
}
public void actionPerformed (ActionEvent e){
Object source=e.getSource();
if (source == view.exitB) System.exit(0);
else {
view.m.modifica();

Pg.16
};

}
}
class ModelObservabil extends Observable{
protected int i=0;
protected String afis=" ";
public ModelObservabil(){
setChanged();
notifyObservers();
}
public void modifica(){
i++;
afis= " "+ i;
setChanged();
notifyObservers();
}
}
Care afirmatie este adevarata:

a. La modificarea lui m.i, noua valoare este afisata doar in ferestrele fo1 si fo2.
b. La modificarea lui m.i, noua valoare este afisata in ferestrele fn, fo1, fo2
c. La modificarea lui m.i, noua valoare este afisata doar in fereastra fo1
d. La modificarea lui m.i, noua valoare este afisata doar in fereastra fo2
Fie urmatorul program Java :

import java.util.Observer;
import java.util.Observable;
import java.awt.*;
import java.awt.event.*;
public class Observator extends Frame
implements WindowListener, Observer{
static protected ModelObservabil m=new ModelObservabil();
protected Button exitB, actB;
protected TextField field;
private ButtonController buttonC;
public static void main(String args[]){
Frame fn=new Observator(0);// nu observa pe m

Frame f01=new Observator(1);// observa pe m


Frame f02=new Observator(1);// observa pe m
}

public Observator(int i){


C 35 a
if (i==1)m.addObserver(this);
Panel p= new Panel();
buttonC=new ButtonController(this);
exitB= new Button("Exit");
exitB.addActionListener(buttonC);
actB= new Button("modifica");
actB.addActionListener(buttonC);
field= new TextField("MyTextField");
field.setEditable(true);
p.add(exitB);
p.add(actB);
add(field);
add("North",p);
addWindowListener(this);
setSize(160,110);
setVisible(true);

}
public void windowClosed(WindowEvent e){}
public void windowOpened(WindowEvent e){}

Pg.17
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
public void windowClosing(WindowEvent e){dispose();
//System.exit(0);
}

public void update(Observable observ, Object ob){


field.setText(m.afis);

}
}

class ButtonController implements ActionListener{


Observator view;
public ButtonController(Observator win){
view=win;
}
public void actionPerformed (ActionEvent e){
Object source=e.getSource();
if (source == view.exitB) System.exit(0);
else {
view.m.modifica();
};

}
}
class ModelObservabil extends Observable{
protected int i=0;
protected String afis=" ";
public ModelObservabil(){
setChanged();
notifyObservers();
}
public void modifica(){
i++;
afis= " "+ i;
setChanged();
notifyObservers();
}
}
Care afirmatie este adevarata:

a. Obiectele fo1 si fo2 sunt obiecte care observa obiectul m.


b. Doar fn observa pe m
c. Doar fo1 observa pe m
d. Doar fo2 observa pe m

Pg.18
Fie urmatorul program Java:

import java.awt.*;
import java.awt.event.*;
class Model{
private int x=0;
public Model(){};
public void actiune(){x++;System.out.println(x);};
}
public class View extends Frame{
private Button b;
private Model m;
private Controller c;
public static void main(String args[]){
Frame f= new View();
}
public View(){
setTitle("Exemplu Model-View-Controller");
b= new Button("Actiune");
add(b);
m=new Model();
C 16 a
c=new Controller(m);
b.addActionListener(c);
setSize(100,50);
setVisible(true);
}
}
class Controller implements ActionListener{
private Model md;
public Controller(Model p){
md=p;
}
public void actionPerformed(ActionEvent e){
md.actiune();
}
}
Care afirmatie este adevarata:

a. La apasarea butonului Actiune, valoarea lui x creste cu o unitate


b. La apasarea butonului Actiune, nu se intampla nimic
c. La apasarea butonului Actiune, programul se termina
d. La apasarea butonului Actiune, fereastra se inchide

Pg.19
Fie urmatorul program Java:

import java.awt.*;
import java.awt.event.*;
class Model{
private int x=0;
public Model(){};
public void actiune(){x++;System.out.println(x);};
}
public class View extends Frame{
private Button b;
private Model m;
private Controller c;
public static void main(String args[]){
Frame f= new View();
}
public View(){
setTitle("Exemplu Model-View-Controller");
b= new Button("Actiune");
add(b);
m=new Model();
C 17 a
c=new Controller(m);
b.addActionListener(c);
setSize(100,50);
setVisible(true);
}
}
class Controller implements ActionListener{
private Model md;
public Controller(Model p){
md=p;
}
public void actionPerformed(ActionEvent e){
md.actiune();
}
}
Care afirmatie este adevarata:

a. Programul este proiectat conform sablonului Model View Controller


b. Programul este proiectat conform sablonului Observer
c. La apasarea butonului Actiune, programul se termina
d. La apasarea butonului Actiune, fereastra se inchide

Pg.20
Fie urmatorul program Java:

import java.awt.*;
import java.awt.event.*;
class Model{
private int x=0;
public Model(){};
public void actiune(){x++;System.out.println(x);};
}
public class View extends Frame{
private Button b;
private Model m;
private Controller c;
public static void main(String args[]){
Frame f= new View();
}
public View(){
setTitle("Exemplu Model-View-Controller");
b= new Button("Actiune");
add(b);
m=new Model();
C 18 b
c=new Controller(m);
b.addActionListener(c);
setSize(100,50);
setVisible(true);
}
}
class Controller implements ActionListener{
private Model md;
public Controller(Model p){
md=p;
}
public void actionPerformed(ActionEvent e){
md.actiune();
}
}
Care afirmatie este adevarata:

a. Metoda public void actionPerformed(ActionEvent e) face parte din interfata WindowListener


b. Metoda public void actionPerformed(ActionEvent e) face parte din interfata ActionListener
c. Programul este proiectat conform sablonului Observer
d. La apasarea butonului Actiune, programul se termina

Pg.21
Fie urmatorul program Java:

import java.awt.*;
import java.awt.event.*;
class Model{
private int x=0;
public Model(){};
public void actiune(){x++;System.out.println(x);};
}
public class View extends Frame{
private Button b;
private Model m;
private Controller c;
public static void main(String args[]){
Frame f= new View();
}
public View(){
setTitle("Exemplu Model-View-Controller");
b= new Button("Actiune");
add(b);
m=new Model();
c=new Controller(m);
C 19 b.addActionListener(c); b
setSize(100,50);
setVisible(true);
}
}
class Controller implements ActionListener{
private Model md;
public Controller(Model p){
md=p;
}
public void actionPerformed(ActionEvent e){
md.actiune();
}
}
Care afirmatie este adevarata:

a. Metoda public void actionPerformed(ActionEvent e) face parte din interfata WindowListener


b. Evenimentul „click” pe butonul Actiune provoaca activarea metodei action Performed
datorita instructiunii b.addActionListener(c);
c. Evenimentul „click” pe butonul Actiune provoaca activarea metodei action Performed datorita
instructiunii setVisible(true);
d. Evenimentul „click” pe butonul Actiune provoaca activarea metodei actionPerformed datorita
instructiunii setSize(100,50);
Fie urmatorul program Java:

import java.awt.*;
import java.awt.event.*;
class Model{
private int x=0;
public Model(){};
public void increment(){x++;}
C 24 public void decrement(){x--;} a
public int get_x(){return x;}
}
public class View extends Frame implements WindowListener{
protected Button binc;
protected Button bdec;
protected Model m;
private Controller c;
protected TextField tf;

Pg.22
public static void main(String args[]){
Frame f= new View();
}
public View(){
setTitle("Exemplu Model-View-Controller");

binc= new Button("MINUS");


add("North",binc);

bdec= new Button("PLUS");


add("South",bdec);

m=new Model();

c=new Controller(this);
binc.addActionListener(c);
bdec.addActionListener(c);

tf=new TextField(10);
add("Center",tf);
addWindowListener(this);
setSize(100,250);
setVisible(true);
}
public void windowClosed(WindowEvent e){}
public void windowOpened(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
class Controller implements ActionListener{
private View vw;
public Controller(View v){
vw=v;
}
public void actionPerformed(ActionEvent e){
Button source=(Button)e.getSource();
if (source==vw.binc) vw.m.increment();
else if(source==vw.bdec) vw.m.decrement();
vw.tf.setText(String.valueOf(vw.m.get_x()));
}
}
Care afirmatie este adevarata:

a. La apasarea butonului PLUS, valoarea lui x descreste cu o unitate


b. La apasarea butonului MINUS, valoarea lui x descreste cu o unitate
c. La apasarea butonului PLUS, programul se termina
d. La apasarea butonului MINUS, fereastra se inchide
Fie urmatorul program Java:

import java.awt.*;
import java.awt.event.*;
class Model{
C 25 b
private int x=0;
public Model(){};
public void increment(){x++;}
public void decrement(){x--;}
public int get_x(){return x;}

Pg.23
}
public class View extends Frame implements WindowListener{
protected Button binc;
protected Button bdec;
protected Model m;
private Controller c;
protected TextField tf;
public static void main(String args[]){
Frame f= new View();
}
public View(){
setTitle("Exemplu Model-View-Controller");

binc= new Button("MINUS");


add("North",binc);

bdec= new Button("PLUS");


add("South",bdec);

m=new Model();

c=new Controller(this);
binc.addActionListener(c);
bdec.addActionListener(c);

tf=new TextField(10);
add("Center",tf);
addWindowListener(this);
setSize(100,250);
setVisible(true);
}
public void windowClosed(WindowEvent e){}
public void windowOpened(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
class Controller implements ActionListener{
private View vw;
public Controller(View v){
vw=v;
}
public void actionPerformed(ActionEvent e){
Button source=(Button)e.getSource();
if (source==vw.binc) vw.m.increment();
else if(source==vw.bdec) vw.m.decrement();
vw.tf.setText(String.valueOf(vw.m.get_x()));
}
}
Care afirmatie este adevarata:

a. La apasarea butonului PLUS, valoarea lui x creste cu o unitate


b. La apasarea butonului MINUS, valoarea lui x creste cu o unitate
c. La apasarea butonului PLUS, programul se termina
d. La apasarea butonului MINUS, valoarea lui x descreste cu o unitate

Pg.24
Fie urmatorul program Java:

import java.awt.*;
import java.awt.event.*;
class Model{
private int x=0;
public Model(){};
public void increment(){x++;}
public void decrement(){x--;}
public int get_x(){return x;}
}
public class View extends Frame implements WindowListener{
protected Button binc;
protected Button bdec;
protected Model m;
private Controller c;
protected TextField tf;
public static void main(String args[]){
Frame f= new View();
}
public View(){
setTitle("Exemplu Model-View-Controller");

binc= new Button("MINUS");


add("North",binc);

bdec= new Button("PLUS");


add("South",bdec);

m=new Model();
C 26 a
c=new Controller(this);
binc.addActionListener(c);
bdec.addActionListener(c);

tf=new TextField(10);
add("Center",tf);
addWindowListener(this);
setSize(100,250);
setVisible(true);
}
public void windowClosed(WindowEvent e){}
public void windowOpened(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
class Controller implements ActionListener{
private View vw;
public Controller(View v){
vw=v;
}
public void actionPerformed(ActionEvent e){
Button source=(Button)e.getSource();
if (source==vw.binc) vw.m.increment();
else if(source==vw.bdec) vw.m.decrement();
vw.tf.setText(String.valueOf(vw.m.get_x()));

Pg.25
}
}
Care afirmatie este adevarata:

a. Clasa Controller implementeaza interfata ActionListener


b. Clasa Controller implementeaza interfata WindowListener
c. Clasa View implementeaza interfata ActionListener
d. Clasa Model implementeaza interfata ActionListener
Fie urmatorul program Java:

import java.awt.*;
import java.awt.event.*;
class Model{
private int x=0;
public Model(){};
public void increment(){x++;}
public void decrement(){x--;}
public int get_x(){return x;}
}
public class View extends Frame implements WindowListener{
protected Button binc;
protected Button bdec;
protected Model m;
private Controller c;
protected TextField tf;
public static void main(String args[]){
Frame f= new View();
}
public View(){
setTitle("Exemplu Model-View-Controller");

binc= new Button("MINUS");


add("North",binc);

bdec= new Button("PLUS");


C 27 add("South",bdec); c

m=new Model();

c=new Controller(this);
binc.addActionListener(c);
bdec.addActionListener(c);

tf=new TextField(10);
add("Center",tf);
addWindowListener(this);
setSize(100,250);
setVisible(true);
}
public void windowClosed(WindowEvent e){}
public void windowOpened(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
class Controller implements ActionListener{
private View vw;
public Controller(View v){

Pg.26
vw=v;
}
public void actionPerformed(ActionEvent e){
Button source=(Button)e.getSource();
if (source==vw.binc) vw.m.increment();
else if(source==vw.bdec) vw.m.decrement();
vw.tf.setText(String.valueOf(vw.m.get_x()));
}
}
Care afirmatie este adevarata:

a. Clasa Controller implementeaza interfata WindowListener


b. Clasa Controller implementeaza interfata WindowListener
c. Clasa View implementeaza interfata WindowListener
d. Clasa Model implementeaza interfata ActionListener
Fie urmatorul program Java:

import java.awt.*;
import java.awt.event.*;
class Model{
private int x=0;
public Model(){};
public void increment(){x++;}
public void decrement(){x--;}
public int get_x(){return x;}
}
public class View extends Frame implements WindowListener{
protected Button binc;
protected Button bdec;
protected Model m;
private Controller c;
protected TextField tf;
public static void main(String args[]){
Frame f= new View();
}
public View(){
setTitle("Exemplu Model-View-Controller");

binc= new Button("MINUS");


C 28 add("North",binc); c

bdec= new Button("PLUS");


add("South",bdec);

m=new Model();

c=new Controller(this);
binc.addActionListener(c);
bdec.addActionListener(c);

tf=new TextField(10);
add("Center",tf);
addWindowListener(this);
setSize(100,250);
setVisible(true);
}
public void windowClosed(WindowEvent e){}
public void windowOpened(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
public void windowClosing(WindowEvent e){

Pg.27
System.exit(0);
}
}
class Controller implements ActionListener{
private View vw;
public Controller(View v){
vw=v;
}
public void actionPerformed(ActionEvent e){
Button source=(Button)e.getSource();
if (source==vw.binc) vw.m.increment();
else if(source==vw.bdec) vw.m.decrement();
vw.tf.setText(String.valueOf(vw.m.get_x()));
}
}
Care afirmatie este adevarata:

a. Fara instructiunea binc.addActionListener(c), butoanele PLUS si MINUS devine inactive


b. Fara instructiunea binc.addActionListener(c), butonul PLUS devine inactiv;
c. Fara instructiunea binc.addActionListener(c), butonul MINUS devine inactiv;
d. Fara instructiunea binc.addActionListener(c), butonul PLUS nu mai este desenat in cadrul
ferestyrei
Fie urmatorul program Java:

import java.awt.*;
import java.awt.event.*;
class Model{
private int x=0;
public Model(){};
public void increment(){x++;}
public void decrement(){x--;}
public int get_x(){return x;}
}
public class View extends Frame implements WindowListener{
protected Button binc;
protected Button bdec;
protected Model m;
private Controller c;
protected TextField tf;
public static void main(String args[]){
Frame f= new View();
}
public View(){
C 29 b
setTitle("Exemplu Model-View-Controller");

binc= new Button("MINUS");


add("North",binc);

bdec= new Button("PLUS");


add("South",bdec);

m=new Model();

c=new Controller(this);
binc.addActionListener(c);
bdec.addActionListener(c);

tf=new TextField(10);
add("Center",tf);
addWindowListener(this);
setSize(100,250);
setVisible(true);
}
public void windowClosed(WindowEvent e){}

Pg.28
public void windowOpened(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
class Controller implements ActionListener{
private View vw;
public Controller(View v){
vw=v;
}
public void actionPerformed(ActionEvent e){
Button source=(Button)e.getSource();
if (source==vw.binc) vw.m.increment();
else if(source==vw.bdec) vw.m.decrement();
vw.tf.setText(String.valueOf(vw.m.get_x()));
}
}
Care afirmatie este adevarata:

a. Fara instructiunea binc.addActionListener(c), butoanele PLUS si MINUS devine inactive


b. Fara instructiunea bdec.addActionListener(c), butonul PLUS devine inactiv;
c. Fara instructiunea binc.addActionListener(c), butonul PLUS devine inactiv;
d. Fara instructiunea binc.addActionListener(c), butonul PLUS nu mai este desenat in cadrul
ferestyrei
Fie urmatorul program Java:

import java.awt.*;
import java.awt.event.*;
class Model{
private int x=0;
public Model(){};
public void increment(){x++;}
public void decrement(){x--;}
public int get_x(){return x;}
}
public class View extends Frame implements WindowListener{
protected Button binc;
protected Button bdec;
protected Model m;
private Controller c;
protected TextField tf;
public static void main(String args[]){
C 30 b
Frame f= new View();
}
public View(){
setTitle("Exemplu Model-View-Controller");

binc= new Button("MINUS");


add("North",binc);

bdec= new Button("PLUS");


add("South",bdec);

m=new Model();

c=new Controller(this);
binc.addActionListener(c);
bdec.addActionListener(c);

tf=new TextField(10);

Pg.29
add("Center",tf);
addWindowListener(this);
setSize(100,250);
setVisible(true);
}
public void windowClosed(WindowEvent e){}
public void windowOpened(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
class Controller implements ActionListener{
private View vw;
public Controller(View v){
vw=v;
}
public void actionPerformed(ActionEvent e){
Button source=(Button)e.getSource();
if (source==vw.binc) vw.m.increment();
else if(source==vw.bdec) vw.m.decrement();
vw.tf.setText(String.valueOf(vw.m.get_x()));
}
}
Care afirmatie este adevarata:

a. Fara instructiunea bdec.addActionListener(c), butoanele PLUS si MINUS devine inactive


b. Fara instructiunea bdec.addActionListener(c), butonul PLUS devine inactiv;
c. Fara instructiunea binc.addActionListener(c), butonul PLUS devine inactiv;
d. Fara instructiunea binc.addActionListener(c), butonul PLUS nu mai este desenat in cadrul ferestrei
Fie urmatorul program:

import java.util.*;
class Oscilator extends Thread {
long secunda=0;
public void run(){
while(true){
try {sleep (1000);} catch (Exception e){}
secunda++;
}
}
public long getSecunda(){return secunda;}
}
class MecanismCronometru extends Observable{
Oscilator osc=new Oscilator();
C 31 long timp= -1; b
MecanismCronometru(){osc.start();}
void porneste(){
long timpNou;
while(true){
timpNou=osc.getSecunda();
if(timpNou!= timp){
timp=timpNou;
setChanged();
notifyObservers();
}
}
}
}
class Cadran implements Observer{
Afisare af;

Pg.30
public Cadran(Afisare loc){af=loc;}
public void update(Observable o, Object arg){
long secundaCurenta=((MecanismCronometru)o).timp;
if(secundaCurenta%5==0) af.afiseaza(secundaCurenta);
}
}
interface Afisare{
public void afiseaza(long i);
}
class AfisarePeMonitor implements Afisare{
public void afiseaza(long i){
System.out.println(""+i);
}
}
public class Cronometru{
MecanismCronometru m;
Cadran c1;
public Cronometru(){
m=new MecanismCronometru();
c1= new Cadran(new AfisarePeMonitor());
m.addObserver(c1);
m.porneste();
}
public static void main(String[] args){
Cronometru pobeda=new Cronometru();
}
}
Care afirmatie este adevarata:

a. Programul implementeaza sablonul Bridge


b. Programul implementeaza sablonul Observer
c. Programul implementeaza sablonul MVC
d. Programul implementeaza sablonul State
A 3 Intr-o diagrama a cazurilor de utilizare, trebuie sa existe numai actori pincipali F
Intr-o relatie de extindere (<<extend>>), sageata puncteaza
B 3 a
a. spre cazul de utilizare de baza
b. spre cazul de utilizare extins
La ce se referă <<xor>> ? Explicaţi.

II 3 R: asocierea exclusiva sau asocierea XOR este o constrangere a doua sau mai
multor asocieri si specifica faptul ca o clasa poate participa la cel mult o
asociere la un moment dat.
La ce se referă culoarele (swimlanes)? Exemplu.

R: Tehnica swimlanes-Aceasta constă în împărţirea unei diagrame de activitate în zone paralele,


numite culoare de activităţi(aşa cum o piscină este împărţită în culoare de nataţie) pentru a evidenţia care
IV 4
element este responsabil pentru acţiunea din interiorul fiecărei zone.
În UML, culoarele se reprezintă prin regiuni verticale, paralele, separate prin linii solide. Fiecare
culoar are, în partea de sus, o etichetă care indică elementul responsabil pentru acea activitate (o clasă, un
actor sau un departament al unei organizaţii).
La ce se referă restricţia {transient}?
VI 3
R: Dacă un obiect este atât creat cât şi distrus în timpul interacţiunii, se poate fo-
losi constrângerea {transient}
I 8 Modelaţi cu ajutorul diagramelor de clasă gestiunea împrumutului de cărţi în cadrul unei biblioteci.
Modelaţi enunţul: „O companie are mai multe departamente.”
IV 2
R: …………….

Pg.31
Modelaţi enunţul: „Profesorii ţin cursuri, la care se înrolează studenţi. Fiecare student înrolat într-un curs
primeşte o notă finală.”.
VI 1
R: …..
O clasă de asociere se referă la o clasă de legătură (linking class). Adevărat sau fals?
III 3
R: F
A 4 O diagrama de clasa este o vedere dinamica asupra sistemului F
O relaţie de extindere este obligatorie? Ce exprimă ea?

II 5 R: relatia de extindere — este folosita pentru a sugera un comportament optional, un comportament


care are loc doar in anumite conditii sau fluxuri diferite ce pot fi selectate pe baza selectiei unui actor.
Reprezentarea grafica este similara cu cea a relatiei de utilizare, dar eticheta este <<Extends>>.
O relaţie de incluziune este folosită pentru reutilizarea comportării modelate de un alt caz de utilizare?
I 6
R: da
A 5 O subclasa are acces la membrii privati ai superclasei? F
O subclasă are acces la membrii superclasei?
III 1
R: DA
Prin ce se deosebeşte o diagramă de secvenţă de o diagramă de colaborare?
VII 1
R: Prin diagrama de secventa se evidentiaza secventza de mesaje si timpul, si
prin diagrama de colaborare, contextul
Rolul unui actor este implicit principal? Adevărat sau fals.
VI 2
R: F
Să se modeleze cu ajutorul diagramelor de stare funcţionarea unui lift.
V 2
R: ….
Se considera urmatoarea reprezentare:

II 7
a) Interpretaţi multiplicităţile din figură (adică scrieţi propoziţiile corespunzătoare: exemplu „O
companie poate angaja....” etc)
b) Ce tip de clasă este „Job”?
Se considera urmatorul simbol in UML:

B 1 El reprezinta: c
a. o clasa numita “Abonat”
b. un obiect numit “Abonat”
c. un obiect anonim din clasa “Abonat”
d. altceva decat raspunsurile de mai sus
Se considera urmatorul simbol in UML:

El reprezinta:
B 2 a. un mesaj sincron a
b. un mesaj asincron
c. un mesaj de raspuns
d. un mesaj simplu

Pg.32
UML e un standard şi toată lumea e de acord că trebuie folosit. Adevărat sau fals?
III 5
R: A
A 2 UML se poate folosi numai ca schita F
Un actor poate fi doar o persoană?
I 4
R: NU
Un caz de utilizare poate interacţiona cu cel mult 2 actori. Adevărat sau fals?
III 8
R: F
A 1 Un caz de utilizare trebuie sa interactioneze cu cel putin un actor A
Un model bun UML va conţine cel puţin o diagramă de fiecare tip?
I 2
R: ………..
Unde sunt recomandate diagramele de secvenţă?

R: diagramele de secventa-- transmiterea mesajelor de-a lungul timpului si arata timpul cat lucreaza
obiectele.
Diagramele de secvenţă reprezintă grafic interacţiunile care au loc între diverse obiecte ale unui
III 10 sistem, ordonate cronologic. Ele determină obiectele şi clasele implicate într-un scenariu şi secvenţele de
mesaje transmise între obiecte, necesare îndeplinirii funcţionalităţii scenariului. Diagramele de secvenţă
sunt asociate unui caz de utilizare.
Dacă logica condiţională implică un set numeros de mesaje, atunci se va realiza câte o diagramă de
secvenţă pentru fiecare dintre cele trei componente ale logicii (una pentru if, una pentru then şi o a treia
pentru else).

Pg.33

You might also like