Текст
                    Class

Encapsulation

Object

Object Oriented
Programming

Abstraction

Polymorphism

Inheritance



← →

← →
System boundary Include relationship Generalization between actors Checkout shopping cart <<include>> Make payment Customer <<extend>> Search product by category Actor Search product Guest <<extend>> Association Extend relationship Search product by name Use case
← →
Class name Flight flightNumber: string departureAirport: Airport Class properties arrivalAirport: Airport durationInMinutes: int cancelFlight(): bool addFlightSchedule(): bool getInstances(): list<FlightInstance> Class methods
… …
UML conventions <<interface>> Name method1() Interface: Classes implement interfaces, denoted by Generalization. ClassName property_name: type Class: Every class can have properties and methods. Abstract classes are identified by their Italic names. method(): type ← A B Generalization: A implements B. A B Inheritance: A inherits from B. A "is-a" B. A B Use Interface: A uses interface B. A B Association: A and B call each other. A B Uni-directional Association: A can call B, but not vice versa. A B Aggregation: A "has-an" instance of B. B can exist without A. A B Composition: A "has-an" instance of B. B cannot exist without A. →
Message Class Balance Inquiry Transaction Customer ATM Transaction Account Screen GetBalance(Account) BalanceInquiryTransaction(Account) GetBalance() Balance Balance DisplayMessage(Balance) ShowMessage() Customer ← ATM Transaction Account Screen →

Customer opens the online shopping webpage Customer searches for a product More shopping Customer browses products Item found Item not found View Product More shopping Add item to the shopping cart More shopping View shopping cart More shopping Update items in the shopping cart Update shopping cart Done with shopping Checkout
← →



UML conventions <<interface>> Name method1() Interface: Classes implement interfaces, denoted by Generalization.
ClassName property_name: type Class: Every class can have properties and methods. Abstract classes are identified by their Italic names. method(): type A B Generalization: A implements B. A B Inheritance: A inherits from B. A "is-a" B. A B Use Interface: A uses interface B. A B Association: A and B call each other. A B Uni-directional Association: A can call B, but not vice versa. A B Aggregation: A "has-an" instance of B. B can exist without A. A B Composition: A "has-an" instance of B. B cannot exist without A. Member scans their library card through barcode reader Member scans the barcode of the book System checks if the book can be issued and that the book is not 'reference only'? [no] [yes] System checks the number of books issued to the member [max quota exceeded] [else] System checks if the book has been reserved by any other member? [yes] [no] System creates book checkout transaction System updates the status of the book to 'Loaned' Show error message
System updates the status of the book to 'Loaned' System increments number of books issued to the member System marks any reservation 'Completed' that the member had made against the book Show error message
Member scans their library card through barcode reader Member scans barcode of the book and selects to renew the book System fetches book's details Check if the book has been returned within the due date [no] Calculate fine Create transaction for fine collection [yes] See if the book has been reserved by any other member Collect fine [yes] [no] Create book checkout transaction with new due date Show error message that the book can't be issued Update the status of the book to 'Reserved' Send notification to the member who has reserved the book that the book has become available 1 2 3 4 5
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
95 96 97 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
27 28 29 30 31 32 33 34 35 36 37 38 39 40 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ← →

Add parking display board <<include>> Add parking floor Add electric panel <<include>> Add parking spot Add parking attendent Add/modify parking rate
View account Add entrance/exit panel Update account Login/Logout Parking attendant Admin Cash payment Take ticket Customer Scan ticket <<include>> Pay ticket <<include>> Credit card payment Assign a parking spot to a vehicle Remove a vehicle from a parking spot Show parking full message Show available parking spot message System
UML conventions <<interface>> Name method1() Interface: Classes implement interfaces, denoted by Generalization.
ClassName property_name: type Class: Every class can have properties and methods. Abstract classes are identified by their Italic names. method(): type A B Generalization: A implements B. A B Inheritance: A inherits from B. A "is-a" B. A B Use Interface: A uses interface B. A B Association: A and B call each other. A B Uni-directional Association: A can call B, but not vice versa. A B Aggregation: A "has-an" instance of B. B can exist without A. A B Composition: A "has-an" instance of B. B cannot exist without A. Customer inserts the parking ticket in the exit panel System scans the parking ticket and fetches ticket's details [yes[ Ticket already paid? [no] System calculates the total parking fee System shows the total parking fee on the display panel and ask for the credit card details Customer inserts the credit card in the card reader System reads the credit card details and processes the payment Payment successfull? [no] [yes] System shows the error Try again?
[yes] [no] System shows success message Print receipt? [yes] [no] System sends the signal to open the parking gate 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 2 3 4 5 System prints the receipt
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
44 45 46 47 48 49 50 51 52 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 ← →


Add product category Add product <<include>> Modify product category Update catalog Block/Unblock account <<include>> Modify product Cancel membership Update account Login/Logout Add credit card Admin Add shipping address Customer Checkout shopping cart <<include>> Make payment Register account <<extend>> Guest Search product category catalog Search product <<extend>> Search product name catalog Add item to shopping card Update shopping cart Send order notification Send shipment update notification System

UML conventions <<interface>> Name method1() Interface: Classes implement interfaces, denoted by Generalization. ClassName property_name: type Class: Every class can have properties and methods. Abstract classes are identified by their Italic names. method(): type A B Generalization: A implements B. A B Inheritance: A inherits from B. A "is-a" B. A B Use Interface: A uses interface B. A B Association: A and B call each other. A B Uni-directional Association: A can call B, but not vice versa. A B Aggregation: A "has-an" instance of B. B can exist without A. A B Composition: A "has-an" instance of B. B cannot exist without A.
Customer opens the online shopping webpage Customer searches for a product More shopping Customer browses products Item found Item not found View Product More shopping Add item to the shopping cart More shopping Update items in the shopping cart View shopping cart More shopping Update shopping cart Done with shopping Checkout Search Catalog Customer Catalog Product searchProducts(string) getInfo(string) Full Product Info Matching Products Info Customer Catalog Product
Add Items in the ShoppingCart ShoppingCart Customer Item addItem(productId, quantity) Error (e.g. Out of Stock) verifyItem() Verification Status Operation success/fail ShoppingCart Customer Item Checkout and Place an Order Customer ShoppingCart Order Item Payment Shipment getItems() Items getBillingInfo() getShippingInfo() createOrder(Items, billingInfo, address) verifyItem() verification Status Error (e.g Item not available) processPayment(billingInfo, amount) paymentStatus Error (e.g. Payment failed) processShipment(address) Shipment Status Order Status Customer 1 2 3 4 5 6 ShoppingCart Order Item Payment Shipment
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ← →


<<include>> Add question Add bounty <<include>> Add tag <<include>> Modify question <<extends>> Modify bounty Cancel membership Block/Unblock account Update Account Login/Logout Reset password Member Admin Add answer Add comment Guest Moderator Delete/Undelete question Add badge to user Search question Send notification View question Register account Close question System
Undelete question <<enumeration>> QuestionStatus <<enumeration>> QuestionClosingRemark <<enumeration>> AccountStatus Open Closed OnHold Deleted Duplicate OffTopic TooBroad NotConstructive NotARealQuestion PrimarilyOpinionBased Active Blocked Banned Compromised Archived Unknown Account Guest id: string registerAccount(): bool Admin <<uses>> Moderator blockMember(): bool closeQuestion(): bool unblockMember(): bool undeleteQuestion(): bool <<interface>> Search password: string status: AccountStatus name: string 1 email: string phone: string 1 Tag name: string reputation: int Extends Extends <<us es>> Member resetPassword(): bool
name: string Member description: string Badge getReputation(): int ← ite vor s a e f s rk clo ma ← ← * * Question title: string createQuestion(): bool 1 s ask * * getEmail(): string 1 1 ← adds * * * weeklyAskedFrequency: int name: string description: string * cre fla ate gs s→ → ad d→ ← flags creates dailyAskedFrequency: int collects * Comment * * * description: string * text: string creation: datetime 0..1 viewCount: int flagCount: int voteCount: int Answer * answerText: string 0..1 for accepted: bool voteCount: int creationTime: datetime voteCount: int incrementVoteCount(): void updateTime: datetime * 1 status: QuestionStatus closingRemark: QuestionClosingRemark 1 1 flagCount: int create: datetime increamentFlagCount(): void 1 close(): bool undelete(): bool 1 * 0..1 * * Photo Bounty reputation: int expiry: dateTime modifyReputation(): bool Notification photoId: int notificationId: int photoPath: string createdOn: date creationDate: dateTime content: string delete(): bool sendNotification(): bool UML conventions <<interface>> Name method1() Interface: Classes implement interfaces, denoted by Generalization. ClassName property_name: type Class: Every class can have properties and methods. Abstract classes are identified by their Italic names. method(): type A B Generalization: A implements B. A B Inheritance: A inherits from B. A "is-a" B. A B Use Interface: A uses interface B. A B Association: A and B call each other. A B Uni-directional Association: A can call B, but not vice versa. A B Aggregation: A "has-an" instance of B. B can exist without A. A B Composition: A "has-an" instance of B. B cannot exist without A. *
Member clicks on the 'Ask Question' button Member enters the Title and the Body of the question Add tag to the question? yes Does tag exist? no validation failed has enough reputation no tags yes, tag already exists yes not enough reputation Create Tag Validate question? Tag created successfully? yes tag creation failed validation passed Save and post the question Show error to the user Create a new Question Member Question setTitle() setBody() getTags(tagText) tagId/Error createTag(tagText, tagDescription) addTag(tag) Tag Bounty
createQuestion(questionText, tagId, bountyValue) createBounty(bountyValue) bounty publishQuestion() Member 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Question Tag Bounty
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 ← →


Add movie Modify movie Add show Search movie by title Search movie by language <<extend>> Modify show Search movie by release date <<extend>> <<extend>> Search movie by genre <<extend>> Search movie by city name Cancel show <<include>> <<extend>> Update/Cancel booking Admin Search movie Login/Logout/Reset password Guest Front Desk Officer Create booking Customer <<include>> Assign seat Make payment <<include>> Send booking notification Apply coupon Send new movie notification View booking Refund payment <<include>> <<include>> Cancel booking Send booking canceled notification System

UML conventions <<interface>> Name method1() Interface: Classes implement interfaces, denoted by Generalization. ClassName property_name: type Class: Every class can have properties and methods. Abstract classes are identified by their Italic names. method(): type A B Generalization: A implements B. A B Inheritance: A inherits from B. A "is-a" B. A B Use Interface: A uses interface B. A B Association: A and B call each other. A B Uni-directional Association: A can call B, but not vice versa. A B Aggregation: A "has-an" instance of B. B can exist without A. A B Composition: A "has-an" instance of B. B cannot exist without A. Customer or front desk officer opens the search movie page Customer add the search criteria, dates, number of seats and
Customer add the search criteria, dates, number of seats and movie title or genre or release date, language or city name. System searches movies for the given criteria [yes] [no] Is movie available? Tell customer about the unavailability of movie [no] [yes] See if it is an existing customer? [no] [yes] Find customer details Customer chooses seats for the movie show Ask how customer would like to pay for the booking Credit card transaction Cash transaction Customer adds any coupon Make booking Ask how customer would like to have detail of the booking? Print Email Search again? Register new customer
Customer inputs their last name and booking number System searches booking of the customer Check if the customer has a valid booking? [no] [yes] Customer choose to cancel the booking System cancels the booking and updates movie show available seats Check if the customer is cancelling before the cancel deadline? [no] No refund is issued [yes] Issue refund Ask how customer would like to have detail of the cancellation? Print 1 2 3 4 5 6 7 8 9 Email
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 1 2 3 4 5
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN TRANSACTION; -- Suppose we intend to reserve three seats (IDs: 54, 55, 56) for ShowID=99 Select * From ShowSeat where ShowID=99 && ShowSeatID in (54, 55, 56) && isReserved=0 -- if the number of rows returned by the above statement is NOT three, we can return fail ure to the user. update ShowSeat table... update Booking table ... COMMIT TRANSACTION; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
48 49 50 51 52 53 54 55 ← →


Balance inquiry <<extends>> <<extends>> Deposit cash Deposit <<extends>> Transaction <<extends>> <<extends>> Cash withdraw Deposit check <<extends>> Transfer Login/Logout Change pin Block/Unblock account Customer Bank Check remaining cash Manager Generate report System startup System shutdown Refill cash dispenser Operator Refill printer receipts
UML conventions
<<interface>> Name method1() Interface: Classes implement interfaces, denoted by Generalization. ClassName property_name: type Class: Every class can have properties and methods. Abstract classes are identified by their Italic names. method(): type A B Generalization: A implements B. A B Inheritance: A inherits from B. A "is-a" B. A B Use Interface: A uses interface B. A B Association: A and B call each other. A B Uni-directional Association: A can call B, but not vice versa. A B Aggregation: A "has-an" instance of B. B can exist without A. A B Composition: A "has-an" instance of B. B cannot exist without A. Customer inserts the Card in the ATM System asks for the pin code Customer enters the pin [yes] Valid pin? [no] [yes] retry? [no] Display Menu Show error Deposit Withdraw Transfer Customer selected a transaction Balance Inquiry
Customer selects Withdraw from the menu System shows withdraw options $20 $40 $100 Custom amount [Cancel transaction] Cancel [Custom amount] [Predefined amount] Enter amount Check available balance Is amount greater than the balance? [yes] Notify Customer [no] Perform the transaction Dispense the money Print receipt? [no] Eject the card [yes] Print receipt
Customer selects Deposit Check from the menu System asks to deposit check in the Deposit Slot Customer deposits the check System scans the check System shows the deposited amount [no] is amount correct? Customer enters the correct amount [yes] Customer selects account, checking or saving? Add to balance Show success message to customer Print receipt? [no] Eject the card [yes] Print receipt
Balance Inquiry Transaction Customer ATM Transaction Account CheckingAccount getBalance(Account) balanceInquiryTransaction(Account) getBalance() getBalance() Balance Balance Balance Screen
Balance displayMessage(Balance) showMessage() Customer 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ATM Transaction Account CheckingAccount Screen
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
49 50 51 52 53 54 55 56 57 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 ← →


Add/Modify aircraft Add/Modify flight Add/Modify flight schedule Modify flight instance Admin <<extends>> Assign pilot/crew <<include>> Update/Cancel reservation Cancel flight instance View flight instance Login/Logout/Reset password Pilot/Crew Search flights Create itinerary Front Desk Officer Customer <<include>> Create flight reservation <<include>> <<include>> Add passenger
Assign seat to passenger Refund payment <<include>> Make payment Send itinerary notification View itinerary Send flight status update notification <<include>> Cancel itinerary Send reservation canceled notification System
UML conventions <<interface>> Name method1() Interface: Classes implement interfaces, denoted by Generalization. ClassName property_name: type Class: Every class can have properties and methods. Abstract classes are identified by their Italic names. method(): type A B Generalization: A implements B. A B Inheritance: A inherits from B. A "is-a" B. A B Use Interface: A uses interface B. A B Association: A and B call each other. A B Uni-directional Association: A can call B, but not vice versa. A B Aggregation: A "has-an" instance of B. B can exist without A.
A B Composition: A "has-an" instance of B. B cannot exist without A. Customer or front desk officer opens the search flight page Customer add the search criteria, dates, seat class (e.g., economy etc.), and number of passengers System searcsh flights for dates and number of passengers [yes] Is there any flight available? [no] Tell customer about the unavailability of flights Search again? [yes] System shows a list of available flights Customer selects a filght [no] See if it is an existing customer? [no] [yes] Find customer details Add passenger's details Register new customer Customer chooses seats for each passenger Ask how customer would like to pay for the reservation? Credit card transaction Cash transaction Check transaction
Make reservation for flights Ask how customer would like to have the detail of the reservation? Print Email System sends the reservation details for printing or email. Customer or front desk officer inputs the last name of any passenger and the reservation number System searches reservation of the customer Check if the customer has a valid reservation? [yes] [no] Show error Search again? [yes] Customer selects to cancel the reservation [no] System cancels the reservation and updates the flight instances Check if the customer is cancelling before the cancel deadline? [no] [yes] Issue refund Ask how customer would like to have No refund is issued
Ask how customer would like to have detail of the cancellation? Print Email System sends the reservation details for printing or email. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 1 2
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 ← →


Modify member <<extends>> Block member <<extends>> Cancel member Join a game
Create a new game View open games Resigns or forfeit a game Create hands Place bet <<includes>> Hit <<includes>> Draw card <<includes>> Player Dealer Split Collect or payout <<includes>> Stand Insurance Double down Create account Cancel membership Update account <<extends>> Reset password Login/Logout
<<dataType>> Person <<enumeration>> Suit name: string address: Address email: string phone: string Game Active Closed Canceled Blacklisted None 1 hit(): void GameController validateAction(): bool Heart Spade Club Diamond 1 start(): bool manipulates <<enumeration>> AccountStatus Shoe numberOfDecks: int 1 creates * createShoe(): void split(): void * Deck creationDate: date getCard(): list<BlackjackCard> shuffle(): void stand(): void 1 dealCard(): Card playAction(): void 1 1 updates 1 Dealer Player 52 BlackjackCard hand: Hand gameValue: int getTotalScore(): int getGameValue(): int bet: int uses GameView totalCash: int getHands(): void playAction(): bool removeHand(): void Extends Extends Extends sees BasePlayer Hand id: string 1 password: string 1..2 balance: decimal getScores(): list<int> addCard(): void resolveScore(): int status: AccountStatus person: Person hands: Hand[2] resetPassword(): bool UML conventions <<interface>> Name method1() Interface: Classes implement interfaces, denoted by Generalization. ClassName property_name: type Class: Every class can have properties and methods. Abstract classes are identified by their Italic names. method(): type A B Generalization: A implements B. A B Inheritance: A inherits from B. A "is-a" B. A B Use Interface: A uses interface B. Card suit: string faceValue: int faceValue(): int
A B Use Interface: A uses interface B. A B Association: A and B call each other. A B Uni-directional Association: A can call B, but not vice versa. A B Aggregation: A "has-an" instance of B. B can exist without A. A B Composition: A "has-an" instance of B. B cannot exist without A. Player starts the game by placing their bet Dealer starts the game by dealing 2 cards for itself and 2 for the player [yes] Is the player's total 21? [no] It is a blackjack, player wins, dealer pays 3:2 of the bet. [yes] Is the player total greater than 21? [no] Player looses, dealer collects the bet Stand Hit Is the dealer's total less than 17? Dealer deals another card for the player [yes] [no] Dealer deals another card for itself [no] Player total greater than dealer toral? [no] Player total less than dealer total?
[yes] [yes] Player wins, dealer pays equal to the bet 1 2 3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Player looses, dealer collects the bet It is a tie, player gets their bet back
15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
23 24 25 26 27 28 29 30 31 32 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 ← →

Make booking Add room <<include>> Update room Book room <<include>> Remove room Make payment Update booking Guest Login/Logout Cancel booking <<include>> Refund payment View booking Print booking Search room/booking Receptionist
room/booking Issue room key Issue check Send booking notification <<include>> View account System Add/update room house keeping Check-out guest Check-in guest Register new account Add/modify employee House Keeper Add/update room charge Server Issue employee card Manager
UML conventions <<interface>> Name method1() Interface: Classes implement interfaces, denoted by Generalization. ClassName property_name: type Class: Every class can have properties and methods. Abstract classes are identified by their Italic names. method(): type A B Generalization: A implements B. A B Inheritance: A inherits from B. A "is-a" B. A B Use Interface: A uses interface B. A B Association: A and B call each other. A B Uni-directional Association: A can call B, but not vice versa. A B Aggregation: A "has-an" instance of B. B can exist without A. A B Composition: A "has-an" instance of B. B cannot exist without A.
Customer arrives at the hotel counter or open the online portal Search rooms for dates and room type [yes] [no] Is room available? Tell customer about the unavailability of rooms [no] [yes] See if it is an existing customer? [no] [yes] Find customer details Book room Register new customer Ask how customer would like to pay for the booking? Credit card transaction Cash transaction Ask how customer would like to have detail of the booking? Print Email Search again?
Customer arrives at the hotel counter Receptionist searches the booking of the customer [yes] Check if the customer has a valid booking? [no] Update search? [yes] [no] [no] See if the room is ready? [yes] Issue room key Request customer to wait Update room's booking status to 'Checked-in' Customer arrives at the hotel counter or call or access online Receptionist searches the booking of the customer Check if the customer has a valid booking? [no] [yes] Check if the customer is cancelling before the cancel deadline? [yes] [no]
Issue refund No refund is issued Ask how customer would like to have detail of the cancellation? Print 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 1 2 Email
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 2 3 4 5 6 7 8 9 10 11
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
33 34 35 ← →

Add Menu Modify Menu Add Menu Section Modify Menu Section Add Menu Item Modify Menu item Register new account Add/Update Table chart Cancel account Reserve Table Receptionist Update/Cancel Reservation Login/Logout Manager Waiter Place Order
<<include>> Add Meal <<include>> Add order Item Print Menu Update Order Issue Check View Order/Account Chef Process payment Cashier
UML conventions <<interface>> Name method1() Interface: Classes implement interfaces, denoted by Generalization. ClassName property_name: type Class: Every class can have properties and methods. Abstract classes are identified by their Italic names. method(): type A B Generalization: A implements B.
A B Generalization: A implements B. A B Inheritance: A inherits from B. A "is-a" B. A B Use Interface: A uses interface B. A B Association: A and B call each other. A B Uni-directional Association: A can call B, but not vice versa. A B Aggregation: A "has-an" instance of B. B can exist without A. A B Composition: A "has-an" instance of B. B cannot exist without A. Waiter arrives at a table and asks for food order seat by seat Waiter takes order, seat by seat and keep a note of the menu items ordered. Waiter login to the restaurant management system Waiter creates a new order for the table Waiter creates new meal for a seat Waiter add meal items to the meal Are there more seats for the order? [no] Send order to kitchen [yes]
Customer arrives at the restaurant counter or calls for table reservation Customer asks for table reservation for a certain number of people and date/time Receptionist searchs tables for date/time and people count [no] Is table available? Tell customer about the unavailability of table [yes] See if it is an existing customer? [no] [yes] Find customer details Reserve table Register new customer Ask how customer would like to receive detail of the reseration Print Email Customer arrives at the restaurant counter or calls Receptionist searches the reservation of the customer Check if the customer has a valid [no]
customer has a valid booking? [yes] Receptionist cancels the reservation and update the table status to 'Free' Ask how customer would like to have detail of the cancellation? Print 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Email Show error message
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
23 24 25 26 27 28 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 1 2 3 4 5 6 7 8 9 10 11 12
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 ← →




UML conventions <<interface>> Name method1() Interface: Classes implement interfaces, denoted by Generalization. ClassName property_name: type Class: Every class can have properties and methods. Abstract classes are identified by their Italic names. method(): type A B Generalization: A implements B. A B Inheritance: A inherits from B. A "is-a" B. A B Use Interface: A uses interface B. A B Association: A and B call each other. A B Uni-directional Association: A can call B, but not vice versa. A B Aggregation: A "has-an" instance of B. B can exist without A. A B Composition: A "has-an" instance of B. B cannot exist without A. Player moves a piece from Box b1 to Box b2 Is this a valid move? [no] [yes] Will the player be under check after the move? [yes]
Show message, not a valid move [no] [yes] Does b2 contain a piece? Capture piece at b2 [no] Is the piece moved a pawn and is b2 a back rank? [yes] Promote the pawn to either a queen, a bishop, a knight or a rock. [no] Is this a castling move? [yes] Set the correct position of rock [no] Does this move result in a checkmate or stalemate? [no] Move the piece to b2 1 2 3 4 5 6 7 8 9 10 11 12 13 [yes] Show game over message
14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 1 2 3 4 5 6 7 8 9 10 11 12 13
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
52 53 54 55 56 57 58 59 60 61 62 63 64 65 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 ← →

Create account Block/unblock member Cancel membership Update account Login/Logout Search stock inventory Admin Place market order <<uses>> <<extend>> <<extend>> Place order <<extend>> Place limit order Place stop loss order <<extend>> Cancel order Member Place stop limit order Create/update Watchlist Add stock to Watchlist Fetch stocks quotes from stock exchange View stock positions Send order status change notification Deposit/Withdraw Send deposit/withdrwal status change notification System
notification Deposit/Withdraw money <<includes>> Transfer Money <<extend>> Check Transfer <<extend>> Wire transfer <<extend>> Electronic bank transfer
UML conventions <<interface>> Name method1() Interface: Classes implement interfaces, denoted by Generalization. ClassName property_name: type Class: Every class can have properties and methods. Abstract classes are identified by their Italic names. method(): type A B Generalization: A implements B. A B Inheritance: A inherits from B. A "is-a" B.
A B Inheritance: A inherits from B. A "is-a" B. A B Use Interface: A uses interface B. A B Association: A and B call each other. A B Uni-directional Association: A can call B, but not vice versa. A B Aggregation: A "has-an" instance of B. B can exist without A. A B Composition: A "has-an" instance of B. B cannot exist without A. User searches and selects the stock to buy User selects the order type from market, limit, stop loss or stop limit Customer selects the number of stock, time price limit and time enforcement Check if enough deposit is available? [yes] [no] Update order? [yes] [no] System deduct funds from the account and sends the order to the stock exchange System receives acknowledgement from exchange System show order placed message to the customer User selects an already bought stock to sell User selects the order type from market, limit, stop loss or stop limit Show error message
limit, stop loss or stop limit The user selects the number of stock, time price limit and time enforcement [yes] The user selects which stock lots to sell Check if enough stocks are available and all order parameters are correct? [no] [yes] Update order? [no] System deduct available stocks from the account and sends the order to the stock exchange System receives acknowledgement from exchange System show order placed message to the customer 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 Show error message
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 1 2
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 ← →

Add scanning code Remove scanning code Modify scanning code <<include>> Add car/truck/SUV/van/ motorbike Remove car/truck/SUV/van/ motorbike <<include>> <<include>> Modify car/truck/SUV/van/ motorbike <<include>> <<include>> <<include>> Add vehicle Remove vehicle Modify vehicle Search vehicle inventory Create new account Update/cancel account Login/Logout <<include>> Make reservation Member <<ex tend >> <<e xte nd> > << ex ten << d> ex > ten d> > Create reservation Add equipment Add service Receptionist
Add rental insurance Add additional driver Update car log Remove reservation Worker Send overdue notification Update reservation Pickup vehicle Send reservation notification Return vehicle System Send reservation canceled notification <<include>> Pay bill
UML conventions <<interface>> Name method1() Interface: Classes implement interfaces, denoted by Generalization. ClassName property_name: type Class: Every class can have properties and methods. Abstract classes are identified by their Italic names. method(): type A B Generalization: A implements B. A B Inheritance: A inherits from B. A "is-a" B. A B Use Interface: A uses interface B. A B Association: A and B call each other.
A B Uni-directional Association: A can call B, but not vice versa. A B Aggregation: A "has-an" instance of B. B can exist without A. A B Composition: A "has-an" instance of B. B cannot exist without A. Barcode reader scans the barcode of the vehicle Barcode reader scans the barcode of the customer's driving license or serach the customer by their name Check if the customer has a valid reservation for the vehicle? [no] [yes] Update status of the vehicle to 'Loaned' Show error message Mark any reservation 'Completed' that the customer has made against the vehicle Send a vehicle picked-up notification Barcode reader scans the barcode from the vehicle Fetch vehicle details Check if the vehicle has been returned within the due date? [no] Calculate fine
[yes] Add fine to the bill Check if there is any damage to the vehicle? [yes] Calculate fine Add fine to the bill [no] Update car log Check if the fuel-tank is full? [no] Calculate fine [yes] Perform billing transaction Create vehicle return transaction Update vehicle status Send a vehicle return notification 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Add fine to the bill
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 2 3 4 5 6 7 8
8 9 10 11 12 13 14 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ← →

Search member <<extend>> Search company Search job <<extend>> <<extend>> Search <<include>> Add/update experience Add/update education <<include>> Add/update profile <<include>> <<include>> Follow member Unfollow member Add/update skill <<include>> Add/update accomplishment Add/update recommendation Send message Apply for a job Save job Block/unblock member
Member Admin Follow company Unfollow company Add/update/delete post Add/update/delete post comment Send connection request Send message notification Accept/reject connection request Send connection pending notification Add job posting System Send new suggestion notification Create group Join group
UML conventions <<interface>> Name method1() Interface: Classes implement interfaces, denoted by Generalization. ClassName property_name: type Class: Every class can have properties and methods. Abstract classes are identified by their Italic names. method(): type A B Generalization: A implements B. A B Inheritance: A inherits from B. A "is-a" B. A B Use Interface: A uses interface B. A B Association: A and B call each other. A B Uni-directional Association: A can call B, but not vice versa. A B Aggregation: A "has-an" instance of B. B can exist without A. A B Composition: A "has-an" instance of B. B cannot exist without A.
User selects 'Add Experience' from the UI Add Experience UI opens up User adds Title, Company, Location, Duration and description [yes] Upload document or photo or image Choose media Add description about media [no] User presses save Experience button Save media System runs verifications Notify user about the missing information [yes] Is there missing information? [no] Save 'Experience' User selects 'Compose a new message' from the UI New Message UI opens up User searches/selects member to send message User adds body of the message Upload document or photo or image [yes] Choose media
[no] User presses send message button System runs verifications Notify user about the missing information [yes] Is there missing information? [no] Send message to all the requested members Send email and push notification about the new message to all the requested members 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Upload media
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 1 2 3 4 5
5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 ← →

Add/modify player Add/modify team Add/modify tournament Add/modify team squad Add/modify innings Add/modify over Add/modify run <<include>> Add/modify ball <<include>> Add/modify wicket Add/update player contract Add T20 Admin <<extend>> Add test <<extend>> Add ODI Add/modify commentry <<extend>> Commentator Add match Add/update news Add/modify statdium Accept/modify umpire, referee <<extends>> Add/update stats <<extends>> <<extends>> Add/update player stats Add/update match stats Add/update tournament stats

UML conventions <<interface>> Name method1() Interface: Classes implement interfaces, denoted by Generalization. ClassName property_name: type Class: Every class can have properties and methods. Abstract classes are identified by their Italic names. method(): type A B Generalization: A implements B. A B Inheritance: A inherits from B. A "is-a" B. A B Use Interface: A uses interface B. A B Association: A and B call each other. A B Uni-directional Association: A can call B, but not vice versa. A B Aggregation: A "has-an" instance of B. B can exist without A. A B Composition: A "has-an" instance of B. B cannot exist without A.
User selects 'Add Ball' from the UI 'Add Ball' UI opens up User selects ball type - Normal, Wide, NoBall or a wicket tacking ball Was there any wicket taken on this ball? [yes] Add Wicket details [no] Was there any runs scored on the ball? [no] Add commentary of the ball Save Ball 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [yes] Add new Run record for each RunType
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
31 32 33 34 35 36 37 38 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 ← →

Search group Search page Search member <<extend>> <<extend>> <<extend>> Search posts <<extend>> Search Add/update work <<include>> Add/update profile Follow member <<include>> <<include>> Add/update education Add/update place Unfollow member Send message Create page Follow page Member Unfollow page Recommend a page Add/update/delete Block/unblock member Enable/disable page Admin
Add/update/delete post Add/update/delete post comment Send connection request Send message notification Accept/reject connection request Send connection pending notification Like/share post System Create group Join group Send new suggestion notification
UML conventions <<interface>> Name method1() Interface: Classes implement interfaces, denoted by Generalization. ClassName property_name: type Class: Every class can have properties and methods. Abstract classes are identified by their Italic names. method(): type A B Generalization: A implements B. A B Inheritance: A inherits from B. A "is-a" B. A B Use Interface: A uses interface B. A B Association: A and B call each other. A B Uni-directional Association: A can call B, but not vice versa. A B Aggregation: A "has-an" instance of B. B can exist without A. A B Composition: A "has-an" instance of B. B cannot exist without A. User selects 'Add Work' from the UI
'Add Work' UI opens up User adds Position, Company, Location, Duration and Description User presses 'Save Work' button System runs verifications Notify user about the missing information [yes] Is there missing information? [no] Save 'Work' User selects 'Compose a new post' from the UI 'New Post' UI opens up User set the privacy list to whom the post will be visible User adds text of the post Upload photo or video? [no] User presses publish post button System runs verifications [yes] Choose media Upload media
Notify user about the missing information [yes] Is there missing information? [no] Publish post for all the requested members Send email or push notification about the new post to the members 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 1 2 3 4 5 6 7 8 9 10 11 12
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 ← →