Sunteți pe pagina 1din 24

Analiza OOD

“Royal & Loyal”

1
“Royal & Loyal”
 Să se elaboreze diagrama de clase UML ce descrie un sistem
informatic pentru o companie fictivă denumită Royal&Loyal (R&L).
 Compania operează "carduri de fidelitate" pentru comercianţii cu
amănuntul ce oferă bonusuri pentru clienţii lor la cumpărături. De
fiecare dată când un client (ce posedă un card de fidelitate) face o
achiziţie, câştigă puncte, proporţional cu valoarea cumpărăturilor.
Aceste puncte pot fi apoi folosite pentru a compensa costurile de
achiziţie ale unor cumpărături ulterioare.
 Fiecare client se poate înscrie într-un program de loialitate printr-un
Partener al programului - acesta este reprezentat de compania ce
oferă puncte pentru cumpărături. Activitatea acestui sistem se
bazează pe un card client ce reţine detaliile programului. Un client
poate avea mai multe astfel de carduri, deoarece el poate fi implicat
în mai multe programe de loialitate, printr-un număr de parteneri
diferiţi ai programului.
2
Aplicatia “Royal & Loyal”
 Fiecare tranzacţie ce foloseşte un card-client este înregistrată într-
un cont de loialitate, ce păstrează numărul de puncte câstigate şi
utilizate. Punctele “consumate" sunt cele folosite pentru a face o
achiziţie.
 Compensarea se poate exprima prin puncte bonus (Visa ...),
kilometri acumulaţi, sau alte bonusuri, cum ar fi tarife preferenţiale
ş.a.m.d. Fiecare tip de serviciu pe care o companie îl oferă clienţilor
săi poate fi exprimat în sistem. Pentru orice companie ce oferă
servicii în cadrul unui program de loialitate, sistemul va păstra
numărul de clienţi înscrişi.
 Toate programele de loialitate pot fi oferite de mai mult de o
companie.
 Dacă un program este oferit de mai multe companii, fiecare client va
putea să se bucure, ca membru, de promoţiile oferite de toate
societăţile înscrise în program.

3
Aplicatia “Royal & Loyal”
 Fiecare client care doreşte să se alăture clubului, completează un
formular cu informaţii personale şi i se emite un card de membru.
Fiecare client poate avea mai multe carduri, dar la fiecare club
căruia îi aparţine va avea doar un singur card. Numărul de puncte al
fiecărui client pentru fiecare program la care este membru, se
păstrează de către sistem.
 Orice companie poate oferi o gamă variată de servicii către client,
incluse în programul de loialitate.
 Fiecare program ce este oferit clientului, poate fi împărţit în mai
multe nivele de abonament ("Gold Club", "Silver Club" ...). Fiecare
nivel de subscriere poate determina o altă mulţime de servicii ce
sunt oferite în cadrul programului.
 Fiecare nivel de abonament va include o descriere succintă precum
"membri Gold Club", etc.
 Clienţii pot efectua diverse activităţi în fiecare cont.

4
Aplicatia “Royal & Loyal”
 De exemplu, un club numit "buy & bonus" poate cuprinde: reţeaua
HyperNet, reţeaua Shell, Europcar şi FlyJet. Servicii oferite de club:
 Reţeaua HyperNet - un bonus de 5 puncte pentru fiecare achiziţie de
peste 100 lei şi posibilitatea de a cumpăra produse prin punctele
acumulate.
 Shell - o reducere de 5% la fiecare realimentare cu carburant.
 Europcar - 20 de puncte bonus la fiecare 100 lei plătiţi.
 FlyJet - 1 punct bonus pentru fiecare 20 km şi zboruri gratuite.
 Compania este responsabilă pentru înregistrarea tuturor activităţilor
în contul clientului. Orice tranzacţie păstrează numărul de cont al
clientului, numărul de puncte aferente activităţii şi data efectuării.
 Descrierea unui serviciu va include: tipul serviciului, numărul de
puncte câştigate, numărul de puncte cheltuite şi o descriere de tip
text.

5
Aplicatia “Royal & Loyal”
 Compania R&L gestionează "programe de loialitate"
pentru companiile ce oferă clienţilor lor diferite tipuri de
recompense.
 Fiecare tip de serviciu pe care o companie îl oferă
clienţilor săi poate fi exprimat în cadrul sistemului.

6
“Royal & Loyal”
 Compania R&L oferă "programe de loialitate".
 "Programul de loialitate" - LoyaltyProgram - este
resursa principală pe care o gestionează societatea.
 Compania R&L trebuie să gestioneze o colecţie de
programe de loialitate pentru toţi clienţii săi.

LoyaltyProgram

7
“Royal & Loyal”
 Fiecare companie ce oferă bonusuri pentru clienţii lor la
cumpărarea unui bun sau serviciu, este denumită
ProgramPartner (partener).
 Fiecare program de loialitate poate fi oferit de cel puţin o
companie.
 Dacă un program de loialitate este oferit de mai multe
companii, fiecare client va putea să se bucure de a fi
membru al unor promoţii diferite, oferite de către
societăţile din program.

1..* LoyaltyProgram

1.. *
ProgramPartner

8
“Royal & Loyal”
 Fiecare client - Customer - care doreşte să se înscrie
într-un program de loialitate, completează un formular.

1..* LoyaltyProgram program Customer


0..* 0..*

1..* partners
ProgramPartner

9
“Royal & Loyal”
 Fiecare client care se alătură unui program de loialitate,
în calitate de membru al programului, va primi un card ce
atestă această calitate - CustomerCard.
 Un card este emis pentru un singur client.

1..* program
LoyaltyProgram Customer
0..* 0..*
1 owner
partners
1..*
ProgramPartner

0..*card
CustomerCard

10
“Royal & Loyal”
 Un client poate avea mai multe carduri, la mai multe
“companii".
 Într-un program de loialitate clientul va avea doar un
singur card - Membership.

1..* program
LoyaltyProgram Customer
0..* 0..*
1 owner
1..* partners
ProgramPartner Membership

1
0..*card
card CustomerCard
1

11
“Royal & Loyal”
 Un client, pentru fiecare program de loialitate din care
face parte, posedă un număr de puncte salvate.
 Prin urmare, un client are un cont pentru fiecare program
din care face parte - LoyaltyAccount – ce va păstra
numărul de puncte acumulate de către client în cadrul
programului.

1..* program
LoyaltyProgram Customer
0..* 0..*
1 owner
1..* partners
ProgramPartner Membership

1
0..*card
0..1
card CustomerCard
LoyaltyA ccount
1
12
“Royal & Loyal”

 Orice companie poate oferi o gamă variată de servicii


către client, incluse în programul de loialitate - Service.

1..* program
LoyaltyProgram Customer
0..* 0..*
1 owner
partners
1..*
ProgramPartner Membership
partner 1 1
0..*card
0..1
card CustomerCard
LoyaltyAccount
1
deliveredServices 0.. *
Service

13
“Royal & Loyal”

 Fiecare program oferit clientului, poate avea mai multe


tipuri de abonament ("Gold Club", "Silver Club" ...) -
ServiceLevel
 Fiecare tip de abonament (nivel de subscriere) poate
determina o altă mulţime de servicii ce sunt oferite în
cadrul programului.

14
“Royal & Loyal”
 Fiecare nivel de subscriere este oferit de către orice
program în care clientul este membru - Membership

1..* program
LoyaltyProgram Customer
0..* 0..*
1 1 owner
partners
1..*
ProgramPartner 0..*
Membership
partner 1 1..* 1 actualLevel 1
0..*card
ServiceLevel 0..1
card CustomerCard
1 level LoyaltyAccount
1
deliveredServices 0.. *
Service 0..*
availableServices

15
“Royal & Loyal”
 Clienţii pot efectua diverse activităţi în fiecare cont.
 De exemplu, un club numit "buy & bonus" cuprinde:
reţeaua HyperNet, reţeaua Shell, Europcar şi FlyJet.
 Servicii oferite de club:
 Reţeaua HyperNet - un bonus de 5 puncte pentru fiecare
achiziţie de peste 100 lei şi posibilitatea de a cumpăra produse
prin punctele acumulate.
 Shell - o reducere de 5% la fiecare realimentare cu carburant.
 Europcar - 20 de puncte bonus la fiecare 100 lei plătiţi.
 FlyJet - 1 punct bonus pentru fiecare 20 km şi zboruri gratuite.

16
“Royal & Loyal”
 Compania este responsabilă de înregistrarea în contul
clientului a tuturor activităţilor realizate de acesta -
Transaction.
1.. * program
LoyaltyProgram C ustomer
0..* 0..*
1 1 owner
1..* partners
ProgramPartner 0..* Membership

partner 1 1..* 1 actualLevel 1


card
0.. *
ServiceLevel 0..1
card CustomerCard
1 level LoyaltyAccount
1
deliveredS ervi ces 0..* 1 account
1 card
Service 0..*
availableServices
generatedBy 1 transactions 0..*
0..* 0..*
Transaction
transactions transactions

17
“Royal & Loyal”
 Există două tipuri de activităţi ce pot fi realizate de un
client: acumularea de puncte - Earning - şi cheltuirea
punctelor câştigate - Burning.

Transaction

Burning Earning

18
“Royal & Loyal”

1.. * program
LoyaltyProgram C ustomer
0..* 0..*
1 1 owner
1..* partners
ProgramPartner 0..* Membership

partner 1 1..* 1 actualLevel 1


card
0.. *
ServiceLevel 0..1
card CustomerCard
1 level LoyaltyAccount
1
deliveredS ervices 0..* 1 account
1 card
Service 0..*
availableServices
generatedBy 1 transactions 0..*
0..* 0..*
Transaction
transactions transactions

Burning Earning

19
“Royal & Loyal”
 Pentru fiecare club în care se înscrie, clientul completează
un formular cu informaţii personale şi îi este emis un card
de fidelitate.
Customer
1..* program name : String
LoyaltyProgram t itl e : St ring
0..* 0..* isM ale : Bool ean
1 dateOfBirth : Date
partners
1..*
1 owner
ProgramPartner 0..* Membership
card
0..*
partner 1 1..* 1 actualLevel CustomerCard
1
ServiceLevel valid : Boolean
0..1 card validFrom : Date
LoyaltyAccount 1 goodThru : Date
1 level
color : enum(silver,gold)
deliveredServices 0..* 1 account printedName : String
0..*
Service
avai lableServices
1 card
generatedBy 1 transactio ns 0..*
0..* 0..*
Transaction
transactions transactions

Burning Earning

20
“Royal & Loyal”
 Orice tranzacţie păstrează numărul de cont al clientului,
numărul de puncte aferente activităţii şi data efectuării.
Customer
1..* program name : String
LoyaltyProgram t itl e : St ri ng
0..* 0..* isM ale : Boolean
1 dateOfBirth : Date
1..* partners
owner
1
ProgramPartner 0..* Membership
0..* card
partner 1 1..* 1 actualLevel CustomerCard
1
ServiceLevel 0..1 valid : Boolean
card validFrom : Date
LoyaltyAccount goodThru : Date
1 level 1
points : Integer color : enum(silver,gold)
deliveredServices 0..* 1 account printedName : String
Service 0..*
1 card
availableServices transactions 0..*
generatedBy 1 Transaction
0..* 0..*
points : Integer
transactions transactions
date : Date

Burning Earning

21
“Royal & Loyal”
 Orice companie ce oferă servicii în cadrul unui club va
conţine numărul de clienţi/membri ce aparţin acestuia.
 Descrierea unui serviciu va include: tipul serviciului,
numărul de puncte câştigate, numărul de puncte
cheltuite şi o descriere de tip text.
 Fiecare nivel de abonament va include o descriere
succintă precum "membri Gold Club", etc.

22
“Royal & Loyal”
Customer
1..* program name : String
LoyaltyProgram title : String
0..* 0..* isMale : Boolean
1
1..* partners dateOfBirth : Date
ProgramPartner 1 owner
0..* Membership
numberOfCustomers : Integer card
0..*
partner 1 1..* 1 actualLevel CustomerCard
1
ServiceLevel 0..1 card
valid : Boolean
name : String validFrom : Date
deliveredServices 0..* LoyaltyAccount goodThru : Date
1
1 level points : Integer color : enum(silver,gold)
Service
1 account printedName : String
condition : Boolean 0.. *
pointsEarned : Integer availableServices 1 card
pointsBurned : Integer
description : String transactions 0..*
generatedBy 1 Transaction 0..*
0..* points : Int eger
transactions
transactions date : Date

Burning Earni ng

23
“Royal & Loyal”
Câteva metode …
Customer
name : String
title : String
1..* LoyaltyProgram program isMale : Boolean
0..* 0..* dateOfBirth : Date
enrol(e : Customer)
1..* partners 1 age()
ProgramPartner 0..* owner
1
Membership
numberOfCustomers : Integer 0..* card
partner 1 1..* 1 actualLevel CustomerCard
1
ServiceLevel 0..1 valid : Boolean
card validFrom : Date
name : String LoyaltyAccount
deliveredServices 0..* 1 goodThru : Date
1 level points : Integer color : enum(silver,gold)
Service
condition : Boolean 0.. *
1 account printedName : String
pointsEarned : Integer availableServices 1 card
pointsBurned : Integer transactions 0..*
description : String
Transaction
generatedBy 1 points : Integer 0..*
0..* date : Date
transactions
transactions
program() : LoyaltyProgram

Burning Earni ng
24

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