Post on 25-Oct-2015
description
Aplicaţie pentru gestionarea unei
agenţii de turism
Student:
Munteanu Alexandru
1
– CUPRINS –
1. Limbajul UML - prezentare generală
2. Diagrame UML – tipuri de diagrame
3. Prezentarea şi descrierea aplicaţiei pentru gestionarea unei agenţii
de turism
4. Reprezentarea activităţilor unei agenţii de turism cu ajutorul
limbajului UML
2
UML (The Unified Modeling Language)
Limbajul UML
UML nu este un simplu limbaj de modelare orientat pe obiecte, ci în prezent, este
limbajul universal standard pentru dezvoltatorii software din toata lumea. UML este
succesorul propriu-zis al celor mai bune trei limbaje de modelare anterioare orientate pe
obiecte (Booch, OMT, OOSE). UML se constituie din unirea acestor limbaje de modelare
si în plus deţine o expresivitate care ajută la rezolvarea problemelor de modelare pe care
vechile limbaje nu o aveau.
Limbajul de modelare modificat (UML - The Unified Modeling Language) oferă
arhitecturi de sisteme ce funcţionează pe analiza si proiectarea obiectelor cu un limbaj
corespunzător pentru specificarea, vizualizarea, construirea si documentarea artefactelor
sistemelor software si de asemenea pentru modelarea în întreprinderi. UML este un
limbaj de modelare care oferă o exprimare grafică a structurii si comportamentului
software. Pentru această exprimare grafica se utilizează notaţiile UML.
Notaţiile UML constituie un element esenţial al limbajului pentru realizarea propriu-zisă
a modelării si anume partea reprezentării grafice pe care se bazează orice limbaj de
modelare. Modelarea în acest limbaj se realizează prin combinarea notaţiilor UML în
cadrul elementelor principale ale acestora denumite diagrame.
În cadrul limbajului UML descoperim 9 tipuri de diagrame:
diagrama cazurilor de utilizare
diagrama de secvenţă
diagrama de colaborare,
diagrama de clase (cea mai utilizata)
diagrama de stări
diagrama de componente
diagrama de construcţie
3
diagrama de obiecte
diagrama de activităţi
În cele ce urmează vor fi prezentate notaţiile UML care vor fi grupate după
diagramele corespunzătoare fiecărei notaţii în parte.
Analiza unei aplicaţii implică realizarea mai multor categorii de modele, dintre care
cele mai importante sunt:
Modelul de utilizare: realizează modelarea problemelor şi a soluţiilor acestora
în maniera în care le percepe utilizatorul final al aplicaţiei. Diagramă asociată:
diagramă de cazuri de utilizare
Modelul structural: se realizează pe baza analizei statice a problemei şi
descrie proprietăţile statice ale entităţilor care compun domeniul problemei.
Diagrame asociate: diagramă de module, diagramă de clase
Modelul comportamental: priveşte descrierea funcţionalităţilor şi a succesiunii
în timp a acţiunilor realizate de entităţile domeniului problemei. Diagrame
asociate: diagrama (harta) de stări, diagrama de colaborare, diagrama de
interacţiune
Diagramele UML
O diagrama oferă utilizatorului un mijloc de vizualizare si de manevrare a
elementelor de Modelare. Majoritatea diagramelor se prezintă sub forma unor grafuri,
compuse din elemente si arce.
Diagramele pot arăta o parte sau toate caracteristicile elementelor de modelare,
conform nivelului de detaliu util în contextul unei diagrame date. Diagramele pot
grupa informaţii interdependente, pentru a arăta, de exemplu caracteristicile moştenite
de o clasă. Diagramele UML sunt:
diagramele cazurilor de utilizare, care prezintă funcţiile sistemului din
punct de vedere al utilizatorului; acestea sunt grafuri de actori şi cazuri de
utilizare, având ca arce relaţiile dintre ele: asociaţiile între actori şi cazuri
de utilizare, generalizarea între actori, incluziunea, extinderea şi
generalizarea între cazuri de utilizare;
4
diagrame de clasă, care prezintă structura statică în termeni de clase şi
asocieri (relaţii); diagramele de clase sunt grafuri, având ca noduri în
general clase, dar putând conţine şi pachete, interfeţe sau chiar obiecte, iar
ca arce relaţiile dintre aceste elemente. aceste diagrame sunt organizate în
pachete, ele putând depinde de alte pachete sau constituind baza pentru
construirea unor pachete. O clasă trebuie să aibă un nume unic în cadrul
pachetului din care face parte, ea putând fi referită sub forma
NumePachet::NumeClasă.
diagrame de colaborare, care sunt reprezentări spaţiale ale obiectelor,
legăturilor si interacţiunilor; diagramele din această categorie sunt
organizate în jurul rolurilor jucate de obiecte în cadrul unei interacţiuni,
cuprinzând astfel şi relaţiile dintre obiecte;
există două niveluri de reprezentare pentru diagramele de colaborare:
- nivelul instanţelor – diagrama de colaborare la nivelul instanţelor
este un graf, având ca noduri obiectele participante la colaborare şi
ca arce legăturile dintre ele, însoţite de stimulii transmişi prin
intermediul acestora; obiectele sunt reprezentate prin dreptunghiuri
ce conţin numele obiectului subliniat; se poate prezenta şi rolul
obiectului în colaborare, folosind notaţia generală:
NumeObiect’/’NumeRolClasificator’:’NumeClasificator[’.’NumeClasificator]*
- nivelul specificaţiei – diagrama de colaborare la nivelul rolurilor
este formată din roluri ale clasificărilor şi ale asociaţiilor dintre
aceştia, precum şi din mesajele transmise între ele; rolul unui
clasificator se prezintă într-un dreptunghi, având un nume de tipul:
’/’NumeRolClasificatir’:’NumeClasificator[’.’NumeClasificator]*
diagrame de secvenţă, care prezintă temporal obiectele si interacţiunile
lor; diagramele din această categorie categorii cuprind obiectele care fac
parte dint-o anumită colaborare şi descriu secvenţa de stimuli transmişi
între obiecte în cadrul unei interacţiuni; ele cuprind şi o dimensiune
temporală, deoarece fiecărui obiect îi corespunde o linie de viaţă, trasată
vertical sub dreptunghiul ce conţine numele obiectului; timpul se scurge 5
de sus în jos, iar stimulii sunt reprezentaţi prin săgeţi etichetate, de la linia
de viaţă a obiectului transmiţător către linia de viaţă a celui receptor;
diagrame de componente, care prezintă componentele fizice ale unei
aplicaţii; componentele pot fi executabile, biblioteci dinamice, tabele,
fişiere de cod sursă, fişiere de date, documente, elemente din modele
orientate pe obiecte clasice; durata de viaţă a componentelor diferă, unele
existând numai în timpul compilării, altele la editarea de legături, iar altele
la momentul rulării; diagramele de componente sunt grafuri de
componente şi interfeţe ale acestora, interconectate prin relaţii de
dependenţă, generalizare, asociaţie, agregare şi realizare;
diagrame de construcţie, care prezintă construcţia componentelor pe
dispozitivele hardware; acestea sunt grafuri de noduri, în interiorul cărora
se reprezintă instanţe ale componentelor, rezidente la momentul rulării;
nodurile sunt folosite pentru a modela suportul material al sistemului, ele
fiind elemente fizice reprezentând resurse de prelucrare, precum
procesoare sau periferice; reprezentarea UML se efectuează printr-un cub
tridimensional, având în interior numele tipului de nod, sau numele
subliniat al instanţei unui nod; relaţia între noduri este de asociaţie;
diagrame de stări-tranziţii, care prezintă comportamentul unei clase în
termeni de stări; diagramele de stări au la bază două concepte importante:
stările, ce caracterizează valori sau seturi de valori ale obiectelor, şi
evenimentele, ce constau din stimuli externi, ce acţionează asupra
obiectelor şi determină o tranziţie de la o stare la alta;
diagrame de obiecte, care prezintă obiectele si relaţiile lor, fiind nişte
diagrame de colaborare simplificate, fără reprezentarea mesajelor trimise
între obiecte; obiectele sunt instanţe ale claselor, caracterizate printr-un
nume şi valori specifice atributelor. ele se prezintă în UML în mod similar
claselor, în dreptunghiuri ce pot avea unul sau două compartimente.
Primul compartiment conţine numele obiectului şi numele clasei, precedat
de „:”, ambele fiind subliniate; cel de-al doilea compartiment conţine
atributele, cu tipul lor de date şi valorile specifice obiectului.
6
diagrame de activităţi, care reprezintă comportamentul unei operaţii în
termeni de acţiuni; ele sunt cazuri particulare ale diagramelor de stare,
care nu descriu însa un flux de control bazat pe evenimente, ci un
procedural, în care toate sau majoritatea tranziţiilor se efectuează automat,
la terminarea acţiunilor efectuate în interiorul stărilor;
diagramele de colaborare împreună cu cele de secvenţă se numesc
diagrame de interacţiune pe când diagramele de stare mai sunt denumite
maşini cu stări finite, automate, etc.
Relaţiile care se stabilesc între două elemente din cadrul unei diagrame pot fi:
- actor–funcţionalitate – relaţie de asociere
- actor–actor – relaţie de generalizare
- funcţionalitate–funcţionalitate - relaţie de asociere, de
generalizare şi de dependenţă
Relaţia de asociere – modelează o comunicare între elementele pe care le
conectează. Aceste tip de relaţie apare între un actor şi o funcţionalitatea sau între două
funcţionalităţi (transfer de date, trimitere de mesaje sau date).
Relaţia de generalizare – se realizează între elemente de acelaşi tip şi modelează
situaţii în care un element este un caz particular al unui alt element. Elementul particular
moşteneşte relaţiile în care este implicat elementul general.
Relaţia de dependenţă – apare între două funcţionalităţi şi modelează situaţii în
care o funcţionalitate foloseşte comportamentul definit în altă funcţionalitate (include)
sau în cazul în care comportamentul unei funcţionalităţi poate fi extins către o altă
funcţionalitate.
Prezentarea şi descrierea aplicaţiei
7
Această aplicaţie îşi propune gestionarea unei agenţii de turism. Accesul se face pe
baza unei proceduri de identificare. Există două tipuri de utilizatori:
clienţii agenţiei de turism
angajaţii agenţiei de turism
Aplicaţia pune la dispoziţia clienţilor o modalitate de a vizualiza lista de oferte
turistice disponibile şi posibilitatea de a selecta o ofertă din lista respectivă. Clientul îşi
poate rezerva o destinaţie însă, după alegerea destinaţiei X, el are posibilitatea sa se
răzgândească. Pentru a alege o altă ofertă, clientul trebuie să renunţe la oferta iniţială X.
Clientul are posibilitatea de a propune o ofertă turistică. În acest sens, clientul trebuie să
facă o descriere a destinaţiei dorite şi să specifice în ce categorie se încadrează. În cadrul
listei de categorii, fiecare destinaţie se încadrează într-o singură categorie existentă.
O ofertă devine vizibilă in lista de preţuri numai după ce a fost aprobată de către un
angajat al agenţiei.
Ofertele pot fii listate toate sau pot fi grupate pe categorii. Lista de oferte este
dinamică, în sensul că se poate modifica pe parcursul unui an (pot fi introduse noi oferte
în listă sau se pot şterge oferte în cazul în care nu sunt alese de niciun client). Clientul
poate vizualiza ofertele pe tot parcursul anului.
Aplicaţia oferă posibilitatea angajaţilor de a vizualiza ce oferte şi-au ales clienţii, iar
în cazul unui anumit produs, există posibilitatea de a vedea de către cine a fost ales.
Destinaţia este aleasă dintr-o listă în care pot fi văzute toate circuitele care au fost
selectate de cel puţin un client. Deoarece pot exista foarte multe destinaţii, este necesară
posibilitatea vizualizării acestora grupate pe categorii. Angajatul are posibilitatea de a
vedea care sunt destinaţiile propuse de către clienţi, mai mult, el are dreptul de a aproba
sau respinge o astfel de propunere. În momentul în care o destinaţie este aprobată, ea
devine vizibilă în lista de circuite disponibile. În cazul respingerii unei destinaţii, aceasta
nu este ştearsă imediat din baza de date, angajatul putându-se răzgândi (în cazul în care
consideră că destinaţia propusă poate aduce un venit consistent agenţiei), urmând a o
accepta ulterior.
Aplicaţia trebuie să pună la dispoziţia angajatului posibilitatea de a şterge definitiv
din baza de date un anumit circuit. Angajatul poate vedea lista tuturor circuitelor
existente, lista sejururilor alese de cel puţin un client şi oferta biletelor de avion.
8
Conturile create sunt gestionate de către angajaţi. Ei trebuie să aibă posibilitatea
creării/editării unui cont. Prin conceptul editare se înţelege posibilitatea modificării
tuturor informaţiilor referitoare la un anumit client. Toţi utilizatorii trebuie să aibă
posibilitatea modificării parolei proprii. Pentru rezolvarea situaţiilor în care un anumit
client îşi uită parola, angajaţii vor avea dreptul să seteze/genereze parole pentru fiecare
client. De fiecare dată când parola unui utilizator este modificată (de utilizatorul şi sau de
către un angajat), utilizatorul va fi înştiinţat de acest lucru prin e-mail.
Diagrama de clase:
9
Sejur 2011 Nume ţară: String Oraş: String Hotel: String Perioadă sejur: String Tarif cazare: Integer
Completare_Sejur() Modificare_Sejur() Ştergere_Sejur() Tipărire_Sejur()
Diagrama Use Case principala
10
Destinaţii
Nume ţară: String Descriere ţară: String
Creare_Destinaţii() Selectează_Destinaţie()
Hoteluri Nume hotel: String Localizare: String Structură de cazare:
String Dotări cam: String Servicii incluse: String Servicii cu plată:
String
Adăugare_Hoteluri() Vizualizare_Hoteluri()
Ofertă bilete avion
Ţară plecare: String Oraş plecare: String Ţară destinaţie: String Oraş destinaţie: String Companie aeriană:
String Escală: String Tip bilet: String Valabilitate billet: String Tarif: Integer
Editare_Ofertă() Adăugare_Ofertă() Tipărire_Ofertă()
Clienţi
Nume: String CNP: Integer Data naşterii: Integer Adresă: String Telefon: Integer E-mail: String Date referitoare la
contractul încheiat: String
Adăugare_Clienţi() Ştergere_Clienţi() Căutare_Clienţi() Modificare_Clienţi()
Rezervări on-line
Nume client: String Nr. Telefon: Integer Hotel: string Staţiune: String Perioadă: Integer Tip circuit: String
Vizualizare_Rezervări()
Circuite 2011
Tip circuit: String Transport: String Durată: String Rută: String Servicii incluse: String Perioadă: Integer Preţ: Integer Descriere: String
Iniţializare() Vizualizare_Circuite() Incrementare()
Utilizator
Cont utilizator: Integer Parolă: String Creare_Cont() Creare_Parolă() Login()
Circuit Nume: String
Adăugare_Circuit() Ştergere_Circuit()
Diagrama Use Case client
11
Diagrama Use Case angajat
12
13
Diagrama Use Case administrator
Diagrama Use Case angajat2
14
Diagrama de secvente
15
Secventa de “Logare” Secventa de “Modificare a unui client”
Secventa de “Stergere a unui cirucit”
16