Sunteți pe pagina 1din 15

FACULTATEA DE INGINERIE ELECTRIC I TEHNOLOGIA INFORMAIEI Securitatea Sistemelor e Calcul

Proiect la disciplina Proiectarea Sistemelor Orientate pe Obiecte

Prof. dr. ing. Doina Zmaranda Torjoc Dumitru-Florin

ORADEA

!"#$%&

CU'RINS

1.Tema proiectului...............................................................................................................................3 2. nali!a structurat" a sistemelor........................................................................................................# 3. nali!a orientat" pe obiecte..............................................................................................................$ #.Proiectarea orientat" pe obiecte %OOD&............................................................................................' (ibliografie........................................................................................................................................1#

$( Tema )roiectului

Proiecta)i un sistem informatic care simulea!" un sistem T* % utomated Teller *ac+ine &. ,erin)ele sistemului sunt- .n T* este utili!at de clien)ii unei b"nci /n scopul efectu"rii unui set specific de tran!ac)ii. O tran!ac)ie nu poate a0ea loc dac" contul clientului este /ng+e)at sau dac" suma de bani din cont nu acoper" 0aloarea tran!ac)iei. 1n particular2 0om a0ea /n 0edere urm"toarele E*tra+ere e ,a-i i- co-t - sunt necesare dou" conturi- contul sursa 3i contul beneficiar . *ai mult2 clien)i trebuie s" specifice suma total" care urmea!" a fi eliberat". 1n ca!ul /nc+eierii cu succes a tran!ac)iei2 clien)i 0or primi banii dori)i /n loca3ul asociat acestei opera)iuni. De)u-ere e ,a-i - este necesar num"rul contului2 precum 3i un set de bani care sunt depu3i /n loca3ul asociat opera)iunii. Tra-s.erul e ,a-i /-tre ou0 co-turi- este posibil un astfel de transfer . 1ala-2a u-ui co-t - este posibila inspectarea unui cont. *a3ina T* posed" un depo!it astfel /nc4t utili!atorii s"i pot efectua oricare dintre tran!ac)iile men)ionate.

"( A-ali3a structurat0 a sistemelor

Dia+rama .lu*ului e ate !DFD& DFD este un grafic repre!ent4nd toate aspectele flu5ului logic al proiectului. Dupa ce utili!atorul desc+ide programul2 acesta introduce cardul 3i codul pin aferent. ,linetul2 dup" 0alidarea cardului 3i a pinului 0a putea efectua diferite tran!ac)ii6 retragere numerar2 depunere bani2 transfer bancar 3i interogare sold. 7a tran!ac)ia de depunere numerar se aleg bancnote predefinite de program. 7a sfarsit se generea!" bonul2 dac" a fost cerut 3i banii. Odata cu generarea se actuali!ea!a soldul contului respecti0. 1n figura 1.1 a0em diagrama flu5ului de date.

,lient

8ntroducere card

8ntroducere pin

legere tran!ac)ie

da

So ld O : nu

9erificare sold

da

'I N 4ali

Tran!ac) ie posibil"
da

nu

;eject

nu

;eali!are tran!ac)ie

<liberare c+itan)"

<liberare numerar

%( A-ali3a orie-tat0 )e o,iecte

$( Mo elarea claselor !Class Mo eli-+& Etapa 1. Definirea concis a problemei. Definirea produsului c4t mai simplu 3i concis2 preferabil /ntr-o singur" propo!i)ie. Deservirea utilizatorilor de carduri bancare pentru tranzacii de retragere, depunere, interogare sold i transfer bancar. Etapa 2. Strategia informal. Pentru a formula o strategie informal" pentru re!ol0area problemei2 constr4ngerile trebuiesc determinate. Deservirea utilizatorilor de carduri bancare pentru tranzacii specifice unui ATM. Clientul utilizeaz un card pentru a realiza tranzacii n limita soldului disponibil. ATM ul ofera tranzacii de e!tragere, depunere, transfer i balan cont. "iecare tranzacie depinde de soldul disponibil pe card. Etapa 3. Formalizarea strategiei. 8dentific" substanti0ele din strategia informal" 3i utili!ea!" aceste substanti0e ca 3i clase candidat e5clu!4nd cele care sunt /nafara problemei. stfel /n enun)ul de mai sus /n strategia informal" se identific" 3i se marc+ea!" substanti0ele rele0anteDeservirea utilizatorilor de carduri bancare pentru tranzacii specifice unui ATM. Clientul utilizeaz un card pentru a realiza tranzacii n limita soldului disponibil. ATM ul ofera tranzacii de extragere depunere transfer !i balan asupra unui cont. "iecare tranzacie depinde de soldul disponibil pe card. Sunt ' substanti0e diferite- client card tranzacie cont extragere depunere transfer balan. Substanti0ele extragere depunere transfer balan sunt substanti0e abstracte 3i ele determin" atributele claselor mai degrab" dec4t clase. 1n final r"m4n doar # clase candidate- client card tranzacie cont( ,lient 1 1 *eniu 1 1 ,ard 1 > 1 >

Tran!ac)ie

,ont

.i+ "($ Co-struirea mo elului claselor

"(Mo elarea i-amic0 !D5-amic Mo eli-+& Scopul acestei pas este determinarea tuturor ac)iunilor e5ecutate de c"tre sau asupra fiec"rei clase. .n mod de a reali!a acest lucru este enumerarea scenariilor tipice normale sau anormale de interac)ionare dintre utili!atori 3i sistem2 cu scopul de a /n)elege comportarea sistemului care 0a fi modelat. poi se 0a construi modelul dinamic. Functionarea normala=

1.,lientul introduce cardul /n bancomat. 2.(ancomatul 0erific" 0aliditatea cardului 3i a pinului. 3.,lientul poate reali!a tran!ac)ia dorit". #.,lientul ridic" banii2 cardul 3i c+itan)a.

,lient

utentificare

Selectare tran!ac)ie

<5tragere

Depunere

Transfer

(alan)"

1nc+eie tran!ac)ia

nulea!" tran!ac)ia

1nc+eie tran!ac)ia

nulea!" tran!ac)ia

1nc+eie tran!ac)ia

nulea!" tran!ac)ia

1nc+eie tran!ac)ia

nulea!" tran!ac)ia

.i+ "(% Mo elul i-amic

%(Mo elarea .u-c2io-al0 !Fu-ctio-al mo eli-+& l treilea pas /n anali!a orientat" pe obiect determin" cum produsul e5ecut" ac)iunile sale f"r" a lua /n considerare ordinea /n care sunt e5ecutate acestea. ceste informa)ii sunt pre!entate ?

sub forma unei diagrame2 similar" cu diagrama flu5ului de date 3i este numit" modelul funcional2 deoarece arat" dependen)ele func)ionale din cadrul produsului.Figura 2.3 pre!inta modelul functional.

*eniu start
P8> gre3it <liberare card ,lientul introduce cardul

<liberare card nu da

lege)i alt" tran!ac)ie@

,erere P8>
,lientul introduce P8>ul

9alidare P8>
P8> O: :

Tran!ac)ia de transfer
transfer

*eniu
balan)"

Tran!ac)ia de balan)"

depunere

Tran!ac)ia de depunere

retragere .i+ "(% Mo elul .u-ctio-al

Tran!ac)ia de retragere

6( 'roiectarea orie-tat0 )e o,iecte !OOD&

'

Scopul proiect"rii orientate pe obiecte este de a sc+i)a produsul folosind obiectele2 e5emplific"ri ale claselor 3i subclaselor care au fost e5trase /n timpul anali!ei orientate pe obiecte. OOD const" /n urm"toarele trei etape1. Determinarea ac)iunilor %metodelor& claselor. 2. Proiectarea produsului folosind clien)ii obiectelor. 3. Trecerea la proiectarea detaliat". Eta)a $7 Determi-area ac2iu-ilor !8meto elor9& claselor <5ista o clas" Tran!ac)ii. ,lasa are metodele ei dupa cum sunt scrise in figura #.1. Clase Tran!ac)ii Meto e ;etragere Depunere Transfer (alan)"
Fi+ 6($ Ta,elul e clase

Eta)a "7 'roiectarea )ro usului .olosi- clie-2ii o,iectelor Pentru ca utili!atorul sa porneasca produsul softAare acesta apasa butonul ce indic" un Car si apoi dup" autentificare butonul corespun!"tor tra-3ac2iei dorite( 1n spatele produsului2 metoda *ain apelea!a obiectele tran!ac)iilor care are 2 metode de anuleare sau /nc+eiere tran!ac)ie.1n figura #.2 este pre!entata diagrama cu clientii obiectului Tran!ac)ii-

* 8>

Tran!ac)ii

nulea!" tran!ac)ia

1nc+eie tran!ac)ia

Fi+(6(" Clie-tii o,iectului :a-3ari

Eta)a %7 Trecerea la )roiectarea etaliat0 Se trece la proiectarea detaliata pentru metode main si pentru toate celelalte. ,ite0a functii de ba!a // functia se ocupa cu afisarea solului curent
public void get_balanta() { try { conn.Open(); string sql = "SELE ! "#L#$!# %&O' (,_ L(E$!;

L(E$! )*E&E id = " +

'ySql o--and c-d = ne. 'ySql o--and(sql/ conn); 'ySql,ata&eader rdr = c-d.E0ecute&eader(); rdr.&ead(); "#L#$!#_ L(E$! = (int)rdr123; t4is.(nvo5e(('et4od(nvo5er)delegate { '#($.!e0t = "6n6n SOL,7L ,8S. ES!E 9 " + "#L#$!#_ L(E$!.!oString() + " &O$" + "6n6n ,O&(!( #L!# !&#$:# !(E ;6n" + ,#6n6n" + $7"; " " <); c4itanta_tip = =alse; picture"o0>.(-age = global99(?@.?roperties.&esources._A2BCCDEF>;

conn. lose(); < catc4 (E0ception e0) { GG'#($.!e0t = e0.!oString(); < <

;;functia se ocupa cu incarcarea cont client cu suma care a fost introdusa


public int co-pletare_sold() { try { conn.Open(); string sql = "SELE ! "#L#$!# %&O' L(E$! )*E&E id = " + (,_ L(E$!; 'ySql o--and c-d = ne. 'ySql o--and(sql/ conn); 'ySql,ata&eader rdr = c-d.E0ecute&eader(); rdr.&ead(); "#L#$!#_ L(E$! = (int)rdr123; conn. lose(); int su-a; conn.Open(); su-a = "#L#$!#_ L(E$! + de_retras; "#L#$!#_ L(E$! = su-a; string sql> = "7?,#!E L(E$! SE! "#L#$!# = " + su-a + " )*E&E id =" + (,_ L(E$!; 'ySql o--and c-d> = ne. 'ySql o--and(sql>/ conn); c-d>.E0ecute$onHuery(); c4itanta_tip = =alse; picture"o0>.(-age = global99(?@.?roperties.&esources._A2BCCDEF>; conn. lose(); de_retras = 2; return >; <

1C

catc4 (E0ception e0) { de_retras = 2; return 2; GG'#($.!e0t = e0.!oString(); < return 2; <

//functia care executa transferul de bani din cont client in cont client destinatie
public int incarca_e0_dest(string id_e0/ int su-a_e0/ string id_dest) { int "#L#$!#_ ; try { conn.Open(); string sql = "SELE ! "#L#$!# %&O' L(E$! )*E&E id = " + id_e0; 'ySql o--and c-d = ne. 'ySql o--and(sql/ conn); 'ySql,ata&eader rdr = c-d.E0ecute&eader(); rdr.&ead(); "#L#$!#_ = (int)rdr123; conn. lose(); int su-a; i= ("#L#$!#_ I= su-a_e0) { conn. lose(); return 2; < "#L#$!#_,ES! = de_retras; "#L#$!#_ L(E$! = "#L#$!#_ J de_retras;

=" + id_e0;

conn.Open(); su-a = "#L#$!#_ J su-a_e0; "#L#$!#_ = su-a; string sql> = "7?,#!E L(E$! SE! "#L#$!# = " + su-a + " )*E&E id 'ySql o--and c-d> = ne. 'ySql o--and(sql>/ conn); c-d>.E0ecute$onHuery(); conn. lose(); conn.Open(); string sql@ = "SELE ! "#L#$!# %&O' L(E$! )*E&E id = " + id_dest; 'ySql o--and c-d@ = ne. 'ySql o--and(sql@/ conn); 'ySql,ata&eader rdr@ = c-d@.E0ecute&eader(); rdr@.&ead(); "#L#$!#_ = (int)rdr@123; conn. lose(); conn.Open(); su-a = "#L#$!#_ + su-a_e0; "#L#$!#_ = su-a;

11

=" + id_dest;

string sqlK = "7?,#!E

L(E$! SE! "#L#$!# = " + su-a + " )*E&E id

'ySql o--and c-dK = ne. 'ySql o--and(sqlK/ conn); c-dK.E0ecute$onHuery(); conn. lose(); < return >;

catc4 (E0ception e0) { t4is.(nvo5e(('et4od(nvo5er)delegate { '#($.!e0t = e0.!oString(); !4read.Sleep(E222); <); return 2; < return 2; <

6(" Im)leme-tarea a,loa-elor e )roiectare orie-tat0 )e o,iecte( 1n cadrul programului am utili!at dou" tipuri de sabloane. .n sablon creeaional singleton i un sablon structural pro!#. Dabloanele crea)ionale definesc diferite modalit")i de a crea instan)e de obiecte. Din acest punct de 0edere aceste 3abloane sunt importante /ntruc4t este important ca programele s" nu fie dependente de maniera /n care obiectele sunt create. Dablonul Singleton Dablonul Singleton poate fi utili!at pentru a se asigura crearea unei singure instan)e a unei clase. 1n ca!ul nostru am folosit un singleton pentru clasa pin . Deoarece se lucrea!" cu date confideniale2 aceast" clas" are ne0oie de o singur" instan" unic". *ai jos este pre!entat modul de implementare al singleton-ului.
...GG se va -odi=ica structura de baLM a constructorului clasei GGJJJJJJJJJsingletonJJJJJJJJJJJJJJJJJJ private pin(){ < private static pin _instance; public static pin (nstance() { i= (_instance == null) _instance = ne. pin(); return _instance; < GGJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ ...

... GG instantierea unui obiect la clasa pin pin p = pin.(nstance();GGsingleton ...

12

Dabloanele structurale descriu maniera /n care clasele 3i obiectele se pot combina pentru a ob)ine structuri de date diferite sau de dimensiuni mai mari2 mai comple5e. Dabloanele de clas"2 a3a numitele class patterns2 se refer" la modul /n care se poate utili!a mo3tenirea pentru a ob)ine interfe)e mai comple5e. Dablonul Pro5E Dablonul Pro5E asigur" un surogat sau un /nlocuitor pentru alt obiect pentru a controla accesul la acesta. Delegarea la distan)" controlea!" accesul c"tre un obiect ne-local. Delegarea 0irtual" controlea!" accesul la o resurs" costisitor de creat. Delegarea de protec)ie controlea!" accesul la o resurs" pe ba!a unor drepturi de acces. ;eferin)" inteligent"- copierea la scriere %copE on Arite&2 blocarea unui obiect2 num"rarea referin)elor2 cac+ing.

Programul implementea!" un pro5E prin intermediul c"ruia reali!ea!" opera)ii 3i poate controla accesul asupra unui obiect c$itanta%sold ,lasa Pro5E F repre!int" obiectul /nlocuitor2 care pre!int" o interfa)" identic" cu cea a obiectului c+itantaGsold pe care /l /nlocuie3te 3i 2 /n acela3i timp2 controlea!" accesul c"tre acesta. stfel2 /n ca!ul /n care persoana care utili!ea!" contul nu este titular2 obiectul pro5E nu permite accesul la anumite date referitoare la cont %nume titular respecti0 soldul contului&. ,lasa c$itanta%sold F define3te obiectul real pe care Pro5E /l repre!int" %/nlocuie3te& ,lasa 8,+itanta F define3te interfa)a comun" pentru c+itantaGsold 3i Pro5E2 astfel /nc4t Pro5E s" poat" fi utili!at oriunde acolo unde se a3teapt" un obiect de tipul c$itanta%sold.

Programul principal reali!ea!" accesul la obiectul c$itanta%sold prin intermediul obiectului Pro5E definit cu interfa)" identic" cu obiectul ,+itantaGsold2 c"ruia i se transmite ca parametru un obiect c$itanta%sold.
inter=ace ( 4itanta { string c4itanta-a5e(); bool titular(); < public class c4itanta_sold 9 ( 4itanta { private string sold; private bool titular_; private string sold_d; private string iban; titular) public { c4itanta_sold(string sold/ string sold_d/ string iban/ bool

t4is.sold = sold; t4is.titular_ = titular;

13

t4is.sold_d = sold_d; t4is.iban = iban; < public string c4itanta-a5e() { return sold + " &O$ 6r6n($ #& #&E "6r6n 7 S7'# ,E9 " + sold_d + " &O$"; < public bool titular() { return titular_; < < public class pro0y 9 ( 4itanta { private c4itanta_sold c4itanta_sold = null; public pro0y(c4itanta_sold c) { c4itanta_sold = c; < public string c4itanta-a5e() { i= (c4itanta_sold.titular()) return c4itanta_sold.c4itanta-a5e(); else return ",repturi insu=iciente"; < public bool titular() { return c4itanta_sold.titular(); < < <

O$! 9 6r6n&O55 """"9" + iban +

Programul principal utili!ea!" un obiect Pro5E pentru a reali!a opera)ii asupra unui obiect c$itanta%sold2 prin reali!area unei asocieri /ntre acestea2 sau pentru a bloca accesul la acestac4itanta_sold ne._c4itanta = ne. c4itanta_sold(sold/ sold_d/ iban/ titular); pro0y un_pro0y = ne. pro0y(ne._c4itanta); ... te0t"o0>.!e0t = te0t + un_pro0y.c4itanta-a5e();

Dac" titular este true atunci se 0or afia toate datele soldului2 in ca! contrar se 0a afi a un mesaj specific.

1i,lio+ra.ie

1#

Proiectarea Sistemelor Orientate pe Obiecte - note de curs +ttp-HHmsdn.microsoft.com AAA.A3sc+ools.com +ttp-HH+omepages.feis.+erts.ac.uIHJcomKmAH

1$

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

  • Test de Evaluare Pba
    Test de Evaluare Pba
    Document2 pagini
    Test de Evaluare Pba
    torjocf
    Încă nu există evaluări
  • Lucrarea 11
    Lucrarea 11
    Document1 pagină
    Lucrarea 11
    torjocf
    Încă nu există evaluări
  • Calculatorul
    Calculatorul
    Document10 pagini
    Calculatorul
    torjocf
    Încă nu există evaluări
  • Lucrarea 12
    Lucrarea 12
    Document1 pagină
    Lucrarea 12
    torjocf
    Încă nu există evaluări
  • Lucrarea 09
    Lucrarea 09
    Document3 pagini
    Lucrarea 09
    torjocf
    Încă nu există evaluări
  • Lucrarea 10
    Lucrarea 10
    Document4 pagini
    Lucrarea 10
    torjocf
    Încă nu există evaluări
  • Curs 7
    Curs 7
    Document46 pagini
    Curs 7
    torjocf
    Încă nu există evaluări
  • Lucrarea 3
    Lucrarea 3
    Document3 pagini
    Lucrarea 3
    torjocf
    Încă nu există evaluări
  • Lucrarea 09
    Lucrarea 09
    Document3 pagini
    Lucrarea 09
    torjocf
    Încă nu există evaluări
  • Subiecte Examen Asdn 2-1
    Subiecte Examen Asdn 2-1
    Document6 pagini
    Subiecte Examen Asdn 2-1
    torjocf
    Încă nu există evaluări
  • Lucrarea 11
    Lucrarea 11
    Document1 pagină
    Lucrarea 11
    torjocf
    Încă nu există evaluări
  • Lucrarea 10
    Lucrarea 10
    Document4 pagini
    Lucrarea 10
    torjocf
    Încă nu există evaluări
  • Curs 5
    Curs 5
    Document35 pagini
    Curs 5
    torjocf
    Încă nu există evaluări
  • Lucrarea 12
    Lucrarea 12
    Document1 pagină
    Lucrarea 12
    torjocf
    Încă nu există evaluări
  • Lucrarea 2
    Lucrarea 2
    Document4 pagini
    Lucrarea 2
    torjocf
    Încă nu există evaluări
  • Lucrarea 3
    Lucrarea 3
    Document3 pagini
    Lucrarea 3
    torjocf
    Încă nu există evaluări
  • PCIII Liste Cozi Stive 97 2003
    PCIII Liste Cozi Stive 97 2003
    Document22 pagini
    PCIII Liste Cozi Stive 97 2003
    torjocf
    Încă nu există evaluări
  • Lucrarea 1
    Lucrarea 1
    Document3 pagini
    Lucrarea 1
    torjocf
    Încă nu există evaluări
  • Fituica So2
    Fituica So2
    Document2 pagini
    Fituica So2
    torjocf
    Încă nu există evaluări
  • 11BDI
    11BDI
    Document35 pagini
    11BDI
    torjocf
    Încă nu există evaluări
  • Lucrarea 2
    Lucrarea 2
    Document4 pagini
    Lucrarea 2
    torjocf
    Încă nu există evaluări
  • Lucrarea 1
    Lucrarea 1
    Document3 pagini
    Lucrarea 1
    torjocf
    Încă nu există evaluări
  • Lucrarea 5
    Lucrarea 5
    Document3 pagini
    Lucrarea 5
    torjocf
    Încă nu există evaluări
  • Laborator PCIII
    Laborator PCIII
    Document90 pagini
    Laborator PCIII
    OviDiu
    Încă nu există evaluări
  • Lucrarea 4
    Lucrarea 4
    Document3 pagini
    Lucrarea 4
    torjocf
    Încă nu există evaluări
  • Curs 7
    Curs 7
    Document46 pagini
    Curs 7
    torjocf
    Încă nu există evaluări
  • Curs 8 - 9
    Curs 8 - 9
    Document58 pagini
    Curs 8 - 9
    torjocf
    Încă nu există evaluări
  • 07BDI
    07BDI
    Document47 pagini
    07BDI
    torjocf
    Încă nu există evaluări
  • Curs 6 - 7
    Curs 6 - 7
    Document42 pagini
    Curs 6 - 7
    torjocf
    Încă nu există evaluări
  • Curs 4
    Curs 4
    Document41 pagini
    Curs 4
    torjocf
    Încă nu există evaluări