Documente Academic
Documente Profesional
Documente Cultură
Probleme PDF
Probleme PDF
PREFA
Aceast lucrare s-a dorit a fi un efort conjugat al studenilor Universitii Titu Maiorescu,
facultile de tiine Economice i tiina i Tehnologia Informaiei.
Noi, cei care am contribuit la culegerea Probleme cu probleme, am studiat diverse
modele de sisteme informatice i am propus viziunea proprie de rezolvare i de
reprezentare a acestora cu ajutorul diagramelor UML.
Se va vedea totui diferena n interpretare a studenilor celor dou faculti. n vreme ce
studenii de la Facultatea de tiine Economice au studiat n profunzime cazurile din
punctul de vedere al sistemelor informatice n economie, studenii de la Facultatea de
tiina i Tehnologia Informaiei au pus accent pe crearea codului care s implementeze
modelul ales.
Sperm c acest lucru vine n ajutorul celor care sunt interesai de studiile de caz din
aceast culegere, pentru c prezint viziuni diferite.
Soluiile noastre nu sunt nici de departe unice, perfecte i, evident, nici complete. Acestea
pot fi mbuntite i suntem recunosctori tuturor celor care i pot aduce aportul la
completarea efortului nostru.
Dorim s mulumim pe aceast cale, ndrumtoarei noastre, doamnei Prof. Univ. Dr.
Mioara Udric, cea care ne-a oferit ideea i oportunitatea acestei lucrri.
Sperm ca aceast culegere s v fie de folos ntr-un fel sau altul
Colectivul de autori ai soluiilor implementate n aceast culegere
Colectiv de redacie:
Lupoaie Andra Elena
naintea prezentrii studiilor de caz din aceast culegere, vom trece n revist civa din
termenii care stau la baza lor, pentru o nelegere ct mai complet. Aceti termeni sunt
definii cu sensul din domeniul informatic:
Cuvnt
Sistem
Subsistem
Decizie
Dat
DICIONAR INFORMATIC
Sistem de gestiune a bazelor de date:
Totalitatea programelor utilizate pentru crearea, interogarea i
ntreinerea unei baze de date.
Sistem de operare:
1. Ansamblu de programe ce realizeaz gestiunea resurselor unui
sistem de calcul. Sistemul de operare asigur exploatarea eficient a
acestor resurse i rezolv conflictele care apar ntre diferii utilizatori.
2. Colecia organizat de programe, specifice tipurilor de echipamente
din componena unui sistem de calcul, care asigur: creterea eficienei
utilizrii resurselor; asistarea utilizatorilor; asistarea operatorilor;
asistarea personalului de exploatare i a personalului de ntreinere.
Component structural principal, subordonat unui sistem.
Aciune de determinare a modului de evoluie a rezolvrii unei
probleme sau a unei activiti cu calculatorul din mai multe alternative
posibile, n funcie de satisfacerea unei condiii. La nivelul unui limbaj
de programare, decizia este specificat prin instruciuni de control
condiionat; n cadrul unei- organigrame, decizia se simbolizeaz
folosind blocuri de decizie.
1. Numr, mrime, relaie etc. care servete la rezolvarea unei probleme
sau care este obinut n urma unei cercetri, urmnd a fi supus unor
corectri.
2. Reprezentare accesibil unui procesor, a informaiei prelucrate. O
dat este caracterizat prin valorile pe care le poate avea, prin operaiile
primitive de transformare, prin structura sa.
Informaie
Procedur
Proces
Algoritm
Agregare
Generalizare
Motenire
Polimorfism
Diagram
Scenariu
Variabil
Atribut
Asociere
Operaie
Societate
informaional
Software
Document
Baza de Date
Model
Flux
informaional
Cod
n continuare, vor fi prezentate studiile de caz ale modelelor alese de studenii care au
lucrat la aceste implementri (numele, facultatea i titlul fiecrui studiu de caz).
Societatea comercial SOLMOB S.R.L. a fost nfiinat n anul 1995 i i are sediul n
comuna Pantelimon, Str.Livezilor, nr.22, iar punctul de lucru este n oraul Pantelimon,
Str. Sf. Pantelimon, nr. 6.
Principalul obiect de activitate este producia, n care sunt incluse:
o Fabricare de mobilier pentru dormitoare, sufragerii, buctrii, grdini etc
o Finisarea mobilierului, cum ar fi: vopsirea, lcuirea i tapiarea, cu excepia
scaunelor i banchetelor.
n cadrul acestei societi, atunci cnd se dorete s se obin un nou produs, la nivelul
seciei de producie se ntocmete aa-numita reet a produsului, un act nefiscal n care
sunt menionate toate materiile prime, materialele necesare, precum i cantitile acestora.
Aceste informaii sunt transmise n gestiunea societii care verific rezistena acelor
materii prime i materiale necesare, iar pentru fiecare se va elibera un bon de consum.
Astfel, se va descrca din gestiune, fiind aprobat transferul ctre secia de producie care
le va recepiona.
Secia de producie va trece la consumul materiilor prime i materialelor, conform reetei.
Astfel, se va obine produsul dorit care, n prealabil, a fost finisat.
Imediat obinut produsul, secia de producie elibereaz ctre gestiune nota de predare,
astfel fiind nregistrat n gestiune noul produs finit.
Diagrama claselor:
Diagrama de secvene:
10
11
Diagrama de colaborare:
1.
2.
3.
4.
12
13
Diagrama de activiti:
NU
DA
14
M.C.D.
1,1
1,n
intocmeste
1,n
inregistreaza
1,1
1,1
1,n
1,n
MateriimatRetet
verifica
1,n
1,n
Materiimat BC
1,n
1,n
1,n
elibereaza
Prod finite NP
1,n
15
1,1
M.L.D.
Regula 1:
Rsectia de productie=(Nrsectie, Administrator, Zone de lucru,
Rreteta=(Nrreteta,
RMateriiprimesi materiale=(Codmat, Codmateriale, Denmat,
Cantmaterii, Cantmateriale, Pret,
Rgestiune=(Codgestiune,
Rbonconsum=(Nrbc, Databc, Cantbc, Pretbc,
Rnotapredare=(Nrnp, Datanp, Cantnp, Pretnp,
Rprodusefinite=(Codprodus, Denprodus, Cantprodus, Pretprodus,
Denmateriale
Um,
Denmateriale
Um,
Regula 2:
Rsectia de productie=(Nrsectie, Administrator, Zone de lucru)
Rreteta=(Nrreteta, Nrsectie, Codgest)
RMateriiprimesi materiale=(Codmat, Codmateriale, Denmat,
Cantmaterii, Cantmateriale, Pret)
Rgestiune=(Codgestiune)
Rbonconsum=(Nrbc, Databc, Cantbc, Pretbc, Codgest)
Rnotapredare=(Nrnp, Datanp, Cantnp, Pretnp, Nrsectie)
Rprodusefinite=(Codprodus, Denprodus, Cantprodus, Pretprodus)
Regula 3:
Rproduseobtinute=(Nrnp, Codprod)
Rmateriimat Reteta=(Nrreteta, Codmaterii,Codmateriale)
RmateriimatBC= (Nrbon,Codmaterii,Codmateriale)
16
Tranzactii interne :
cantitate croit,
cantitate livrat,
cantitate (total) specificat,
cantitate (total) croit,
cantitate (total) livrat,
valoare factur materiale,
valoare factur manoper,
valoare factur produs,
valoare penaliti.
Acte normative:
proforma order,
tabel dimensional,
schi model,
factur materiale recepionate,
factur execuie produs finit,
legislaia vamal n vigoare,
contractul ncheiat de conducerea fabricii cu clientul.
Procedee de prelucrare a datelor:
Recepionarea i transmiterea documentelor n format electronic,
Editarea i listarea datelor,
Vizualizarea i consultarea datelor.
18
19
proiect
Emite comanda
Livreaza materiale
Client
<<include>>
<<extend>>
Receptioneaza materiale
<<include>>
<<include>>
Primeste materiale auxiliare
Primeste materiale principale
Sala_de_croit
Alimenteaza repere croite
Depozit_produse_finite
Ambaleaza
<<extend>>
Depoziteaza produse
Factureaza
n diagrama de mai sus, cazurile de utilizare se observ c pot avea ntre ele diferite
relaii:
- relaia de extensie:
1) Returneaza materiale rmase este o extindere a cazului Recepioneaz materiale,
2) Depoziteaz produse este o extindere a cazului Ambaleaz care este la rndul su
o extindere a cazului Livreaz produse finite,
- relaia de incluziune:
3) cazul Alimenteaz repere croite este inclus n Primete repere croite,
21
Linie_de_fabricatie
NumeClient : char
ValoareM anopera : real
ValoareM ateriale : real
AfiseazaClient()
Livreaza()
Factureaza()
Penalitati()
Furnizeaza
*Emite
Comanda
Livreaza
Materiale receptionate
NrOrder : integer
M odel : string
NumeClient : char
DataProductie : string
DataLivrare : string
CantitateSpecificata : integer
Size : char
TotalCantitateSpecificata : integer
Lanseaza
*
AfiseazaM aterial()
ReturneazaRest()
ElibereazaNecesar()
Receptioneaza materiale()
Debiteaza
*
CalculeazaNecesar()
ProcesareOrder()
Repere croite
NumarSerie : integer
NrOrder : integer
Size : char
CantitateCroita : integer
TotalCantitateCroita : integer
TimbreazaProdus()
ImperecheazaProdus()
PrimesteM aterialePrincipale()
Alimenteaza
Planifica
*
Produse finite
Produse livrate
NrOrder : integer
Size : char
CantitateLivrata : integer
TotalCantitateLivrata : integer
BarcodProdus : undefined
CantitateFinita : integer
TotalCantitateFinita : integer
Size : char
*
Ambaleaza
InregistreazaBarcod()
AlimenteazaRepereCroite()
AlimenteazaM aterialeAuxiliare()
RezervaCapacitateProductie()
Ambaleaza()
ReturneazaM ateriale()
22
Diagrama de secvene:
Diagrama de secvene reprezint interaciunile dintre obiecte din punct de vedere
temporal, ilustrnd ordinea cronologic a interaciunilor dintre ele pentru scenarii ale unui
singur caz de utilizare.
n diagrama de secvene sunt reprezentate numai obiectele ale cror clase au fost descrise
i ntre care exist relaii n diagrama claselor. Obiectele relaioneaz prin mesaje, iar
mesajele au coresponden cu operaiile claselor din care fac parte obiectele.
Client:
Comanda:
M ateriale receptionate:
Repere croite:
Produse finite:
Produse livrate:
Proceseaza
Receptioneaza materiale
Ambaleaza
Returneaza materiale
Livreaza
Factureaza
n
diagrama de secvene se observ c din punct de vedere temporal,
secvena Livreaz precede dou secvene anterioare : Ambaleaz i Returneaz
materiale, ntruct una dintre condiiile contractuale prevede livrarea produselor
mpreun cu restul materialelor rmase.
23
cancel[receptioneaza materiale = 0]
start
Comanda lansata
M ateriale receptionate
Do/ receptioneaza materiale
quit
24
Produse finite
Do/ rezerva capacitate productie
25
Activitati efectuate :
- persoana fizic solicit un credit ipotecar
- consultantul de credite cere documentaia
- dac persoana fizic are deja cont deschis la Banca ING, se verific informaia
existent ; daca nu, datele personale ale persoanei fizice sunt introduse n baza de
date spre deschiderea unui cont
- sistemul calculeaz posibilitatea acordrii creditului ipotecar
- dup analiza datelor, creditul ipotecar este permis
- persoana fizica primete ntiinarea i se ncheie un contract de credit
REZULTATUL : creditul ipotecar este acordat
Diagrama Use Case:
Persoana fizica
Consultantul
de credit
Solicita
creditul
Cere
documentatia
Depune
documentele
Calculeaza
posibilitatea
acordarii
creditului
Primeste
informatia
Informeaza
persoana
fizica
Incheie
contractul
Diagrama claselor :
Clasele sunt : PersoanaFizica
Cerere
Credite
SituatieFinanciara
ContractCredite
26
CPersoanaFizica
CCerere
CCredite
DenPersFiz : String
CodPersFiz : Integer
Localitate : String
Telefon : Integer
vidCerere : Boolean
AfiseazaDenumire()
StergePersFiz()
AdaugaPersFiz()
AfiseazaPersFizCerrere()
NrCerere : Integer
DataCerere : String
ValCerere : Cerere
Stare : String
AfiseazaCerere()
AdaugaCerere()
StergeCerere()
AfiseazaValCerere()
IncarcaDataCerere()
AfiseazaAprobat()
AfiseazaAprobatPartial()
SeteazaStare()
AfiseazaDataAprobarii()
ListaSume()
CodCredit : Integer
TipCredit : Sting
DenCredit : Sting
AfiseazaTipCredit()
AdaugaDenCredit()
StergeTipCredit()
CSituatieFinanciara
CodPersFiz : Integer
VenitAnual : Real
ActeProprietate : String
CContractCredite
AdaugaSitFin()
StergeSitFin()
ModificaSitFin()
ModificaContract()
StergeContract()
AdaugaContract()
AfiseazaContract()
IncarcaContractCredite()
NrContract : Integer
DataContract : String
SumaAcordata : Real
Dobanda : Real
Penalitati: Real
Diagrama de secvene:
PersoanaFizica:
PersoanaFizica
Credit:
ConsultantCredite:
Solicita
Cere documentatia
Depune documentele
27
Contract:
Calculeaza posibilitatea
acordarii creditului
Informeaza persoanele fizice
Incheie
Diagrama de colaborare:
PersoanaFizica :
1 : realizeaza o
3 : se acorda
Cerere:
2 : se aproba
Credite:
CPersoanaFizica
DenPersFiz
Vid : Cerere
AfiseazaPersFizCerere()
CCerere
NrCerere
DataCerere
ValCerere
AfiseazaValCerere()
28
CCredite
CodCredit
TipCredit
DenCredit
StergeTipCredit()
AdaugaDenCredit()
Sosit
DO:consul PersFiz
verific PersFiz
trimitere
nregistrat
DO:ncarc data PersFiz
ncarc Cerere
n curs de aprobare
DO: CalcValCerere
Afieaz aprobat parial
[SumaSitFin=ValCerere]
Aprobat
DO: Lista Sume
Afieaz data
Seteaz Stare
Pentru a putea efectua n clasa Cerere operaia SeteazaStare, este necesar declararea
unui atribut Stare de tip String .
Dac n diagrama de stri ncrcm datele din cerere, ne ntoarcem n diagrama
claselor i trecem aceast operaie IncarcaDateCerere() .
Analog
pentru
AfiseazaAprobat(),
AfiseazaAprobatPartial(),
AfiseazaDataAprobarii(), ListaSume() => dac n diagrama de stri am facut aceste
operaii, ne ntoarcem n diagrama claselor i le adugm n clasa CCerere.
29
Diagrama de activiti:
-se completeaza descrierea cazurilor de utilizare
SE SOLICITA CREDITUL
SE SOLICITA DOCUMENTATIA
SE ADUCE DOCUMENTATIA
SE VERIFICA DATELE
DA
NU
SE APROBA
ACORDAREA
CREDITULUI
SE REFUZA ACORDAREA
CREDITULUI
SE INTOCMESTE
CONTRACTUL DE
CREDITE
NU SE REALIZEAZA
CONTRACTUL DE
CREDITE
30
31
32
ale ageniei respective. Programul informatic este complex, propriu i nglobeaz att
activitile realizate de agent ct i de administratorul de sistem. n acest fel faciliteaz
folosirea programului prin controlul asupra drepturilor i obligaiilor utilizatorilor.
Diagrama cazurilor de utilizare:
Cazul principal de utilizare:
Diagrama ofer o imagine de ansamblu asupra principalelor activiti desfurate n cadrul
unei instituii. Actorul a fost intitulat agent imobiliar i este cel care beneficiaz i n
acelai timp efectueaz toate activitile prezente n diagram. Fiecare dintre aciunile
reprezentate n diagrama general a cazurilor de utilizare vor fi reluate i prezentate pe larg,
punndu-se n eviden toate activitile care le compun.
Diagrama cazului de utilizare pricipal:
Actorul agent imobiliar se ocup de primirea clienilor, cutarea n baza de date i
ntocmirea contractelor. n aceast situaie interaciunea actorului cu sistemul const n
consultarea disponibilului de apartamente, garsoniere, terenuri prin verificarea opiunilor
menionate de client. Astfel, actorul ofer un rspuns promt, fr a pierde timpul cu notarea
informaiilor i cu verificrile.
33
34
35
Diagrama claselor :
Diagrama de secvene:
Diagramele de secven dezvolt n mod natural scenariile cazurilor de utilizare. Acestea
transform evenimentele identificate n scenariile cazurilor de utiliare, ntr-o reprezentare
grafic a utilizrilor sistemului de ctre un actor. Fiecare eveniment are ca rezultat un
mesaj trimis unui obiect cu perspectiva c acel obiect va realiza o operaie.
Diagrama de secven descrie cronologic interaciunea obiectelor, identificnd mesajele
schimbate ntre obiecte ca rspuns la un eveniment, precum i secvena mesajelor. Este o
vizualizare a intercomunicrii claselor pentru un anumit scenariu al cazurilor de utilizare.
36
37
38
39
Diagrama de stare:
Diagramele de stare realizate identific evenimentele care fac tranziia unui obiect dintr-o
stare n alta. Aceste diagrame descriu toate operaiile i atributele unei clase n timpul
unui eveniment. Diagrama identific stimulii care declaneaz aciunea. Ea include
numele strii oricrei variabile n timp ce obiectul este n funciune, precum i
evenimentul care declaneaz tranziia la o nou stare.
40
Diagrama de activiti:
Diagramele de activitate permit o mai bun nelegere a operaiilor, n special a celor
foarte complexe. Prin intermediul acestor diagrame sunt evideniate detaliile din cadrul
unor operaii ale claselor.
Aceste diagrame sunt reprezentate sub forma unui tip de stare care specific activitatea
unei anumite clase. Diferena const n faptul c un grafic de stare reprezint ntregul
obiect, n timp ce o diagram de activitate reprezint n mod tipic doar o operaie n
cadrul unui obiect .
41
Cererea
clientului
Verificare
cerere client
Nu sunt
ndeplinite
cerinele
Sunt
ndeplinite
cerinele
Completare
formular
Completare
contract
Nu se fac
modificri
Apar
modificri
Completare,
modificare,
tergere
contract
42
Se
respinge
clientul
Clienti :
Nume si
prenume :
CNP :
Adresa :
Telefon :
E-mail :
1,n
1,1
Contract :
Nr contract :
Data contact :
Tip imobil :
Mod de plata :
Incheie
1,n
Imobil contactat
Tip imobilc:
Pret contactat:
1,n
Emit
1,n
1,1
Document de plata :
Nr document :
Data document :
Tip document :
Suma platita :
Factura
platita
1,n
Imobil:
Tip imobil:
Pret imobil :
Descriere imobil:
Stare imobil:
Mentiuni:
1,n
Conform
1,1
1,1
1,n
Facturi :
Nr factura :
Data factura:
Stare factura :
1,n
43
Imobil facturat:
Tip imobilf:
Pret facturat:
44
Agenti :
Imobil :
Client :
Contract :
Consultare
NU
DA
Refuz
Verificare
client
Exista
Clientul ?
?
NU
DA
Adauga
client
Adauga
contract
Modifica
contract
Stergere
contract
45
46
Figura (1) arata relaiile dintre tabelele bazei de date. Campurile subliniate reprezint
cheile primare ale tabelelor respective
Fig.1
Aplicaia mai are n componen i o interfa grafic realizat n limbajul Java cu
ajutorul mediului de programare NetBeans 5.5 i utiliznd jdk1.6.0.
Interfaa grafic este cea care realizeaz comunicarea uoar ntre utilizator i baza de
date permitndu-i acestuia din urm sa realizeze interogrile dorite intr-un mod extrem de
simplu, prin apasarea unui singur buton.
Aplicaia are o pagin prinicipal pe care se gsete meniul de unde utilizatorul poate
selecta una aciunea dorita. Utilizatorul poate ntreprinde urmtoarele aciuni:
- Adugare cursuri - aceast opiune permite utilizatorului sa adauge n baza de date
cursurile nou aparute, utilizatorul nu trebuie decat sa completeze informaiile aferente pe
fromularul din pagin.
- Adugare facultate - aceast opiune permite utilizatorului sa adauge n baza de date
una sau mai multe facultti nou nfiinate.
- Adugare promovai - aceasta opiune realizeaz adugarea studenilor i a situaiei
colare a acestora n tabelul Promovai. Acest lucru se realizeaz foarte uor, utilizatorul
trebuie sa
introduc doar numrul matricol al studentului toate calculele n privina
numrului de credite i a situaie colare fiind efectuate de ctre aplicaie.
- Adugare studeni - este opiunea care permite introducerea studenilor nou
nmatriculai n baza de date.
- Adugare studeni - cursuri : adauga, n baza de date, informaiile referitoare la
cursurile frecventate de fiecare student n parte.
47
Fig.2
48
Diagrama Claselor:
Diagrama CLASELOR, care este singura dintre diagramele UML care este
implementabil.Aceasta diagram mi-a pemis sa identific clasele pe care urma s le
implementez n sistem, cmpurile i metodele acestora.
n cadrul acestei aplicaii apare un fapt ciudat, clasa Studeni_Facultti nu are nici
cmpuri i nici metode proprii, aceste lucru datorndu-se faptului ca aplicaia este o
aplicaie cu baza de date iar clasa respectiv nu face dect sa-ne permit s facem
legatura ntre clasele Studeni i Faculti.
n figura (3) prezentm diagrama de clase a aplicaiei.
Fig.3
Diagrama de Secvene:
Ultima diagrama UML pe care am folosit-o la realizarea proiectului este Diagrama de
SECVENE care ilustreaz interaciunile dintre obiecte din punct de vedere temporal.
Este ntocmit pentru scenarii ale unui caz de utilizare i arat obiectele i interaciunile
dintre ele de-a lungul unui scenariu.
n diagrama de secvene apar doar obiectele ale cror clase sunt reprezentate n diagrama
claselor i ntre care au fost definite relaii. Mesajele corespund operaiilor prin care
obiectele comunic. Reprezint apeluri ale operaiilor descrise la niveul claselor. Pentru
fiecare mesaj, n clasa obiectului destinatar, trebuie sa existe o operaie corespunztoare,
reacia obiectului la mesajul primit.
49
Fig.4
50
www.visual-paradigm.com
51
Pentru acest model, voi construi n Visual Paradigm ase diagrame UML. Pentru a
construi o nou diagram se alege din meniul File -> New Diagram -> UML Diagrams .
Diagrama Use Case:
De regul, diagrama Use Case se compune prima. Aceasta descrie relaiile i
dependinele dintre diferite grupuri de cazuri de utilizare i actori participani la proces.
52
Diagrama Class:
Diagrama de clase arat diferite clase din care este compus sistemul. Diagrama arat
operaiile (metodele) i atributele (variabile) claselor precum i structura static a claselor
sistemului, adic ce clase se cunosc sau ce clase fac parte din altele. ns diagrama de
clase nu prezint apeluri de metode ntre ele.
Diagrama State:
53
Diagramele State arat diferite stri ale obiectului, pe parcursul existenei lui, precum i
cauzele schimbrii strilor. Diagramele State prezint obiectele ca automate finite care
pot fi ntr-una din cteva stri finite. Strile pot fi schimbate de un numr finit de cauze.
Aceast diagram a fost construit pentru clasa lift. Se observ c toate aciunile din
aceast diagram apar n diagram class ca operaii. De fapt, motivul pentru care a fost
construit aceast diagram, ca toate diagramele prezentate n continuare, este
completarea diagramei class.
Diagrama Sequence:
Diagrama Sequence arat comunicarea dintre diferite obiecte (apelurile diferitelor
metode) unde factorul timp joac rolul principal. Diagrame Sequence indic ordinea
apariiei i durata comunicrii ntre obiecte.
n timpul construirii diagramei de secvene s-a observat necesitatea crerii unei noi clase,
numit Pasager, care va fi adugat n diagrama class.
54
Diagrama Activity:
Diagramele Activity descriu ordinea aciunilor sistemului cu ajutorul diferitelor Activity.
Aceasta este o form special a diagramei State, ns conine n principal aciuni.
Diagramele Activity sunt asemntoare cu diagramele procedurale de Flux, cu deosebirea
c toate aciunile sunt legate de un obiect.
Aceast diagram a fost cel mai mult utilizat la scrierea codului n Java, programul
urmnd exact ordinea aciunilor din programul principal: public static void
main(String[] args).
55
Diagrama Collaboration:
Diagramele Collaboration arat interaciunea dintre obiecte ntr-o situaie concret. Spre
deosebire de diagramele Sequence care pun accent pe interaciunea exprimat n timp,
diagramele Collaboration arat legturile logice ntre obiecte.
A se observa c aciunile din aceast diagram completeaz la randul lor operaiile din
diagrama class.
Creare cod surs:
Dup ce modelul este creat, este interesant de vzut cum poate fi creat codul surs al
modelului. Diagramele ajut mai mult la nelegerea structurii modelului dect la crearea
codului surs. Totui, Visual Paradigm for UML v ajut s exportai clasele create n
unul din limbajele C++, Java sau PHP. Visual Paradigm creaz mostrele de clase care v
permit s scriei clasele implementnd funcionalitile dorite. Pentru asta, ducei cursorul
la Tools -> Instant Generator i de aici alegei limbajul dorit.
56
57
S deschidem unul din fiierele generate i s vedem cum arat poriunea de cod
generat, care bineneles trebuie completat de programator.
CLASA C_BUTON:
58
60
if (_inauntru==false)
System.out.println("Pasagerul intra!");
else
System.out.println("Pasagerul iese!");
return _inauntru;
}
}
public class C_MOTOR {
private static int _contor_etaj; //etajul la care se afla
pasagerul
private static int _pozitie; //etajul la care se afla liftul
inainte de a-l chema pasagerul
private static boolean _directie;
private static C_LIFT _controleaza=new C_LIFT();
private static C_USA _unnamed_C_USA_=new
C_USA();
private static C_BUTON _comunica=new
C_BUTON();
public static void usa_deschisa(){
try {
_unnamed_C_USA_.deschide();
}
catch(Exception e){};
}
public static void usa_inchisa(){
try {
_unnamed_C_USA_.inchide();
}
catch(Exception e){};
}
public static boolean directie() {
if (_contor_etaj>_pozitie)
_directie=true; //liftul urca
else
_directie=false; //liftul coboara
return _directie;
}
public static int contor_etaj() throws Exception {
return _contor_etaj;
}
public static int pozitie() throws Exception {
return _pozitie;
}
public void apeleaza() throws Exception {
_comunica.apasa();
_pozitie=_contor_etaj;
61
}
public void muta() throws Exception {
_controleaza.ajunge();
_comunica.opreste_lumina();
_controleaza.opreste();
}
public static void main(String[] args){
C_MOTOR motor=new C_MOTOR();
Pasager pasager=new Pasager();
System.out.println("Dati etajul la care sunteti!(Etajul la care se afla pasagerul)");
Scanner in=new Scanner(System.in);
motor._contor_etaj=in.nextInt();
System.out.println("Pasagerul este inauntru=true sau afara=false?");
Scanner sc=new Scanner(System.in);
pasager.in_afara(sc.nextBoolean());
try {
motor.apeleaza();}
catch (Exception e){};
if (pasager.inauntru()==false)
{ try {
motor.muta();
motor.usa_deschisa();
if (pasager.intra()==false) //Pasagerul intra
{ motor.usa_inchisa();
System.out.println("Dati etajul la care pasagerul doreste sa ajunga!");
Scanner et=new Scanner(System.in);
motor._contor_etaj=et.nextInt();
motor.apeleaza();
motor.muta();
motor.usa_deschisa();
pasager.in_afara(true);
pasager.intra();
motor.usa_inchisa();
}
else //Pasagerul iese
{motor.usa_inchisa();
pasager.inauntru();
}
}
catch (Exception e) {};
}
else
try
{
motor.usa_inchisa();
motor.muta();
62
motor.usa_deschisa();
pasager.in_afara(true);
pasager.intra();
motor.usa_inchisa();
}
catch (Exception e) {};
}
}
Testare:
Orice produs informatic trebuie testat nainte de punerea pe pia. Exist diferite
metode de testare a unui produs informatic. Pentru modelul de mai sus, se va utiliza
Criteriul de parcurgere a drumurilor din graful de control o reea care cuprinde
structurile de control ale programului.
Mai jos este o variant de construire a grafului de control pentru programul care
implementeaz modelul discutat. Testarea se face pentru poriunea de cod din programul
principal, cea colorat cu albastru mai sus.
63
in= ; sc= ;
motor.apeleaza()
pasager.inauntru()=false
pasager.inauntru()=true
motor.usa_inchisa()
motor.muta()
motor.muta()
motor.usa_deschisa()
i
pasager.intra ()=false
motor.usa_inchisa(); et=
pasager.intra()=true
motor.usa_deschisa()
pasager.in_afara()
motor.usa_inchisa()
pasager.intra()
motor.apeleaza()
pasager.inautru()
motor.usa_inchisa()
motor.muta()
motor.usa_deschisa()
pasager.in_afara(true)
pasager.intra()
motor.usa_inchisa()
64
et=4 ; sc=false
Se observ c se parcurge ramura then a instruciunii if.
2.
et=4 ; sc=true
Se observ c se parcurge ramura else a instruciunii if.
65
3.
et=9 ; sc=false
66
Inspectorul de credite verific dosarul clientului, dac acesta i-a depus actele
necesare analizei i actualizeaz baza de date dac vine un client nou;
67
directorul de credite din cadrul bncii aprob sau nu cererea de credite a clientului
n funcie de rezultatele calculate.
68
profitul, dividendele pentru persoane juridice i alte datorii de plat. Tot aici se va calcula
i coeficienul de ndatorare al clientului i se analizeaz suma cerut deoarece banca
trebuie s ii planifice n aa fel finanarea creditelor nct s nu se ajung la lichidarea ei.
NOT: vom aduga variabila identificator n clasa SITUATIE FINANCIARA pentru
denumire client i cod client i pentru denumire credit din clasa CONTRACTE
CREDITE.
Diagrama de secvene:
Contracte
cereri
Cereri
clienti
Clienti
Depunere cerere
Credite
Situatie
financiara
Cerere credit
70
Diagrama de stare:
a) Pentru client:
71
72
Diagrama de activiti:
Se acorda creditul
Not: ? : suma cerut de client poate fi aprobat i acordat sau nu, n funcie de
prioritile bncii. Se ine seama foarte mult de suma contractat, de felul creditului i
mai ales de situaia financiar a clientului. n urma calculelor fcute de ctre inspectorul
de credite senior pentru clientul respective, se acord creditul ( coeficientul de
rambursare a creditului).
Diagrama de colaborare:
Diagrama de colaborare este realizat tocmai pentru a se observa colaborrile n timpul
depunerii, analizei i aprobrii unei cereri de credit i anume:
-
73
Clienti:
Cerere client:
Den client
Nr.cerere
1:depunere
cerere
Cod client
Data cerere
Tel client
Credite:
2:se verifica
cererea de
credit
Denumire
credit
Adresa cl
Denumire cerere
credit
Afisare den cl
Suma ceruta
Dobanda
aferenta
Afisare cod cl
Total cereri
Afisare
dob/6luni
Afisare dob/an
Situatie
financiara:
Contracte
credite:
Nr.contract
Data
contract
Cod credit
3:se
analizeaza
situatia
financiara a cl
VIDen cl
5:se acorda
creditul
VIden credit
VICod cl
Vn sau
Ca/pers
Calcul coeficient
Suma
contractata
Total Vn/familie
Afiseaza cl
6:rambursare
credit
Total credite
aprobate
74
4:nu se
acorda
CREDITE
Den client
Cod client
Tel client
Denumire
credit
Cod credit
Adresa cl
Dobanda
aferenta
1,n
CERERI
CLIENTI
1,n
contine
Nr.cerere
Data cerere
Denumire cerere
credit
Perioada cerere
credit
depune
1,1
ClContracte
1,n
1,n
Suma ceruta
1,n
Suma
perioada
SITUATIE
FINANCIARA
CONTRACTE
CREDITE
VIDenumire cl
1,n
VICod cl
aproba
Nr.contract
1,1
Data contract
Vn sau Ca/pers
VIden credit
profit
Suma contractata
dividende
dobanda
Alte credite de
plata
Termen plata
1,n
analiza
1,1
Regula 1:
RClienti = (DenClient, CodClient, AdresaClient, TelClient, Nr.cerere )
RSituatieFinanciara =( VIdenClient, VIcodClient, VnsauCa/pers, profit, dividende,
AlteSumeDePlata,
Nr.contract )
RCredite = (DenCredit, CodCredit, DobandaAferenta, Nr.Cerere)
RCereriClienti = ( nr.cerere, DataCerere, DenCredit, PrioadaCrereCredit, SumaCeruta)
CodClient ,CodCredit)
RContracteCredite = ( nr.Contract, DataContract, VIdencredit, SumaContractata,
dobanda, TermenPlata)
Regula2:
RClientiContracteCredite = (DenClient, CodClient,Nr.Contract)
76
Data :
77
Diagrama de clase:
78
Diagrama de clase sub form grafic urmarete aceleai convenii ca cele ale unui model
de domeniu.Cu ajutorul ei sa identificat relaiile dintre clase, tipul atributelor etc ,n final
acest lucru permitnd lejeritatea implementrii sistemului.
79
80
Vanzari
<<include>>
Transmitere comanda
Receptie comanda
Analiza stoc
<<include>>
<<include>>
Analiza comanda
Analiza client
<<extend>>
Acceptare comanda
Introducere client BD
Intocmire factura
Firma
Client
Livrare marfa
<<include>>
Respingere comanda
Informare client
<<include>>
Inctomire bon fiscal
<<extend>>
<<include>>
Primire factura
Intocmire factura
Diagrama claselor:
Aceast diagram evideniaz structura static a sistemului de activitate a ntreprinderii.
S-a optat pentru realizarea a dou diagrame de clas pentru o mai bun evideniere a celor
dou modaliti de vnzare din cadrul firmei:
81
Mf in gestiune
C lienti
C omanda
Codclient : integer
Denclient : string
Adresa : string
Telefon : integer
Afiseaza clientii din Bucuresti()
Mf comandate
C odmfC : integer
Denm fC : string
Cantm fC : integer
Documente
Nrdoc : integer
Datadoc : string
Afise aza data unui docum ent ()
Mf facturata
C ontracte
Facturi
Term en : integer
C lienti
Codclient : integer
Denclient : string
Adresa : string
Telefon : integer
Adauga client nou()
Magazin
Bon fiscal
Nrbon : integer
Databon : string
vMfvanduta : undefined
Adresa : string
vBonfiscal : undefined
Mf vanduta
Codm fV : integer
Denm fV : string
Cantm fV : integer
Pretm fV : integer
Afiseaza valoarea m arfii vandute()
82
Diagrama de secvene:
Aceast diagram ilustreaz interaciunile dintre obiecte din punct de vedere temporal.
Este ntocmit pentru scenarii ale unui caz de utilizare artnd obiectele i interaciunile
dintre ele de-a lungul unui scenariu.
Scenariul prezentat n aceast diagram este: Firma primete comanda care este
analizat.n urma analizei, firma ntocmete factura care este apoi trimis la client.
Firma:
Comanda:
Facturi:
Clienti:
primeste
analizeaza
intocmeste
se trimit
Diagrama de colaborare:
n diagram se specific mesajele schimbate ntre obiecte de-a lungul legturilor.
83
Diagrama de stri:
Aceast diagram modeleaz ciclul de via al unei singure clase evideniind
evenimentele care determin schimbrile de stare.
Au fost realizate dou diagrame de stare pentru evidenierea celor dou modaliti de
vnzare din cadrul firmei.
a) n cazul vnzrilor pe baz de comand, diagrama de stare s-a realizat pentru
marfa care are uratoarele stari:n gestiune, comandat, facturata.
In magazin
Vanduta
Do: Afise aza lista m a rfii va ndute ()
84
Se primeste comanda
Se verifica daca marfa e in stoc
DA
NU
NU
Se adauga in BD
Se accepta comanda
Se refuza comanda
Se intocmeste factura
Se livreaza marfa
Se informeaza clientul
86
2.
3.
4.
5.
1.
87
88
89
90
91
92
Diagrama de secvene:
Diagrama de secvene este realizat doar pentru o parte din activitatea firmei, i anume:
aprovizionarea.
Operaii precum: Incarca factura primita, Incarca contract, Incarca Document Plata
se vor observa adugate n diagrama claselor furnizori .
93
Diagrama de colaborare:
94
Diagrama de stare:
Diagrama de stare
n aceast diagram sunt evideniate strile prin care trece marfa Cod marfa .
95
Diagrama de activiti:
96
97
Dac ntr-o asociere ambele cardinaliti maximale sunt n, n MLD se adaug o nou
relaie ce conine cheile celor dou entiti i atributele asocierii.
RFurnizori = ( CodFurnizor, CIF, AdresaFz, TelefonFZ
RContracte = (NrContract , Data Contract , TermenContract, CodFurnizor)
RMarfa = (CodMarfa, DenumireMarfa, PretMarfa)
RFacturiPrimite = (NrFactura, DataFactura, NrContract, NrDocument,TipDocument)
RDocumentePlata = (NrDocument, TipDocument, DataDocument, SumaPlata,
CodFurnizor)
RContracteMarfa = (NrContract, CodMarfa, CantitateContractata, PretContractat)
RFacturiPrimiteMarfa = ( NrFactura, CodMarfa, CantitateFacturata)
98