๐Ÿซ Lecture 11 ยท Practical worked example

Corona Store Design Example

ุชุทุจูŠู‚ ูƒุงู…ู„ ู„ูƒู„ ุงู„ู„ูŠ ุงุชุนู„ู…ู†ุงู‡: SRS โ†’ Use Cases โ†’ Class Diagram โ†’ Sequence โ†’ Code. ุฑูƒุฒ ุนู„ู‰ ุงู„ู€ flow ุนู„ุดุงู† Question 2 ููŠ ูƒู„ ุงู…ุชุญุงู† final.

7
Chapters
8
Classes
4
Use Cases
5
CRC Cards
01

Corona Store โ€” SRS

ุงู„ู€ business: ู…ุชุฌุฑ ุฅู„ูƒุชุฑูˆู†ูŠ ู„ุจุณูƒูˆูŠุช ูˆุดูˆูƒูˆู„ุงุชุฉ Corona.

๐Ÿ“‹ Requirements Statement
  1. Corona ู‚ุฑุฑุช ุชุนู…ู„ online store ู„ู„ุนู…ู„ุงุก ูŠุทู„ุจูˆุง ู…ู†ุชุฌุงุชู‡ุง.
  2. ุงู„ุนู…ู„ุงุก ูŠุฏูุนูˆุง ุจู€ credit card ุฃูˆ cash on delivery.
  3. ุงู„ู…ู‡ู…ุฉ: ุจู†ุงุก core business logic (UI later).
  4. ุงู„ู†ุธุงู… ุจูŠุญุชูุธ ุจู€ list ู…ู† products. ูƒู„ product: code, name, unitPrice.
  5. ุงู„ุนู…ูŠู„ ูŠุนู…ู„ order = list of items + quantity per product. ุงู„ู€ Order ููŠู‡ delivery address.
  6. ูƒู„ order ูŠุงุฎุฏ automatic ID.
  7. ุงู„ู€ Order ูŠูุถู„ open ู„ุญุฏ ู…ุง ูŠุชุฏูุนุŒ ุจุนุฏู‡ุง ูŠุจู‚ู‰ closed.
  8. Cash: ุงู„ุนู…ูŠู„ ุจูŠุฏูŠ ู…ุจู„ุบ ู…ุนูŠู† โ†’ ุงู„ู€ delivery person ูŠุฑุฌุน ุงู„ุจุงู‚ูŠ. ู„ูˆ ุงู„ู€ cash insufficient โ†’ message + order remains open.
  9. Credit Card: ู…ู…ูƒู† ุชูƒูˆู† valid ยท expired ยท invalid ยท insufficient funds. ู„ูˆ valid โ†’ payment + user notified. ุบูŠุฑ ูƒุฏู‡ โ†’ error message.
02

Use Case Model

ุงู„ู€ Actor ุงู„ุฑุฆูŠุณูŠ = Buyer. ุฏูŠ ุงู„ู€ Use cases ุงู„ุฃุณุงุณูŠุฉ.

๐Ÿง Actors Identified
  • โœ… Buyer โ€” main actorุŒ ุจูŠุนู…ู„ orders ูˆุจูŠุฏูุน.
  • โ“ Delivery Man? โ€” ู…ุด actor ู„ู„ู€ systemุŒ ู‡ูˆ ู…ูˆุธู ุจูŠุณุชุฎุฏู… external process. ุฅุฌุงุจุฉ ุงู„ุงู…ุชุญุงู†: Buyer is the only system actor.
๐ŸŽฌ Use Cases

Top Level

  • UC1 โ€” Create Order
  • UC2 โ€” Pay for Order

Specialized (Generalization)

  • UC2a โ€” Pay by Cash (extends UC2)
  • UC2b โ€” Pay by Credit Card (extends UC2)
๐Ÿ’ก Use Case GeneralizationPay for Order ู‡ูˆ ุงู„ู€ generic. ูˆ Pay by Cash ูˆ Pay by Credit Card ู‡ู… variants. ุงู„ู†ูˆุน ุฏู‡ ู…ู† ุงู„ุนู„ุงู‚ุงุช ุจูŠุชู…ุซู„ ุจู€ generalization arrow (open triangle) ู…ู† ุงู„ู…ุฎุตุต ู„ู„ุนุงู….
03

Use Case Descriptions

ุงู„ู€ flow ุงู„ุชูุตูŠู„ูŠ ู„ูƒู„ use case.

๐Ÿ›’ UC1 โ€” Create Order
  • Actor: Buyer
  • Description: Buyer makes an order and decides products + quantities.

Main Flow

  1. Request to create order
  2. Give delivery address
  3. Generate automatic order ID
  4. Enter item and quantity
  5. Repeat step 4 to enter all items
  6. Create order and set status as OPEN
  7. Add to orders list

Exceptional Flow โ€” Cancel Order

  1. Request to cancel order
  2. ู„ูˆ ุงู„ู€ order = OPEN โ†’ ุงุญุฐูู‡. ุบูŠุฑ ูƒุฏู‡ โ†’ ุฑุณุงู„ุฉ Cannot cancel.
๐Ÿ’ฐ UC2 โ€” Pay for Order (Generic)
  • Actor: Buyer
  • Description: Pays for his order.

Main Flow

  1. Request to pay order
  2. Calculate order total
  3. Provide payment (cash/credit)
  4. ู„ูˆ ู†ุฌุญ ุงู„ุฏูุน โ†’ ุงู„ู€ order ูŠุจู‚ู‰ CLOSED
๐Ÿ’ต UC2a โ€” Pay by Cash
  1. Request to pay order
  2. Calculate order total
  3. Give cash amount
  4. ู„ูˆ cash >= total โ†’ take payment
  5. Order = CLOSED
  6. Return change = cash โˆ’ total
  7. Display message

Exceptional Flow โ€” Insufficient Cash

1. Display message ยท 2. Order remains OPEN

๐Ÿ’ณ UC2b โ€” Pay by Credit Card
  1. Request to pay order
  2. Calculate order total
  3. Give card details
  4. Validate card with Bank
  5. Deduct amount from card
  6. ู„ูˆ ู†ุฌุญ ุงู„ุฏูุน โ†’ Order = CLOSED
  7. Display message

Exceptional Flow โ€” Card Failure

ู„ูˆ ุงู„ูƒุงุฑุช INVALID, EXPIRED, or INSUFFICIENT โ†’ Display message + Order remains OPEN.

04

Class Identification โ€” CRC Method

Find nouns โ†’ candidate classes. ุญุฏุฏ responsibility ู„ูƒู„ class ุจุงุณุชุฎุฏุงู… CRC cards (Class-Responsibility-Collaboration).

๐Ÿ“ Approach
  • ุงู‚ุฑุง ุงู„ู€ requirements ูˆุงุณุชุฎุฑุฌ nouns โ€” ูƒู„ noun ู…ู…ูƒู† ูŠูƒูˆู† candidate class.
  • ุญุฏุฏ responsibility ู„ูƒู„ class.
  • ุงุณุชุฎุฏู… CRC cards (sticky notes) ู„ูƒู„ candidate class.
  • ุฅุฐุง ุงู„ู€ responsibilities ู…ุง ุชุชูุนุด ููŠ card ูˆุงุญุฏ = ุงู„ู€ class ู…ุญุชุงุฌ ูŠุชู‚ุณู….
๐Ÿ—‚๏ธ Sample CRC Cards

๐Ÿ“ฆ Order

Attributes
  • delivery address
  • client name
  • date
  • status
Operations
  • create
  • cancel order
  • pay for order
  • calculate total
Collaborates with
  • OrderStatus (enum)
  • Payment
  • OrderDetail
  • OrderManager

๐Ÿช OrderManager

Attributes
  • store name
  • orderIDGenerator
  • list of orders
  • list of products
Operations
  • create order
  • cancel order
  • pay for order
  • add product
Collaborates with
  • Order
  • Products

๐Ÿซ Product

Attributes
  • code
  • name
  • unitPrice
Operations
  • get info
Collaborates with
  • OrderDetail
๐ŸŽญ Class Categorization (MVC / Boundary-Control-Entity)
๐Ÿ“ฆ Domain (Entity)
Order ยท OrderDetail ยท OrderManager ยท Product ยท Payment ยท Cash ยท Credit ยท OrderStatus ยท CardStatus
โš™๏ธ Control
OrderManager (also acts as controller)
๐ŸชŸ Boundary
UI later โ€” out of current scope
05

The Full Class Diagram

ุงุฌู…ุน ูƒู„ ุงู„ู€ classes ูˆุงู„ู€ relationships.

๐Ÿ—บ๏ธ Relationships Identified

1. OrderManager โ†” Order (1 : *)

OrderManager ุจูŠุนู…ู„ aggregate ู„ู„ู€ Orders (open diamond โ—‡). ุงู„ู…ุชุฌุฑ ุนู†ุฏู‡ many orders.

2. OrderManager โ†” Product (1 : *)

ุงู„ู…ุชุฌุฑ ุนู†ุฏู‡ catalog of products. ุงู„ุนู„ุงู‚ุฉ Aggregation.

3. Order โ†” OrderDetail (1 : *) โ€” Composition โ—†

OrderDetail ู…ุง ูŠู‚ุฏุฑุด ูŠูˆุฌุฏ ุจุฏูˆู† Order (ูˆุจูŠุชู…ุณุญ ู…ุนุงู‡). ุฏูŠ strong composition.

4. OrderDetail โ†” Product (* : 1)

ูƒู„ OrderDetail ุจูŠุดุงูˆุฑ ุนู„ู‰ Product ูˆุงุญุฏ. ูˆูƒุฐุง OrderDetails ู…ู…ูƒู† ูŠุดุงูˆุฑูˆุง ุนู„ู‰ ู†ูุณ ุงู„ู€ Product.

5. Order โ†” Payment (1 : 1)

ูƒู„ order ุนู†ุฏู‡ ุนู„ู‰ ุงู„ุฃูƒุซุฑ Payment ูˆุงุญุฏ. ุฏูŠ plain association.

6. Payment โ† Cash, Credit (Generalization)

Payment ู‡ูˆ abstractุ› ูˆ Cash ูˆ Credit ู‡ู…ุง subclasses.

7. Order โ†’ OrderStatus (enum)

ุญู‚ู„ ุงู„ู€ status ููŠ Order ุจูŠุดุงูˆุฑ ุนู„ู‰ OrderStatus enum (OPEN, CLOSED).

8. Credit โ†’ CardStatus (enum)

CardStatus = VALID, EXPIRED, INVALID, INSUFFICIENT.

โ˜• Java Code Skeleton
Java โ€” Order Management
public enum OrderStatus { OPEN, CLOSED; }
public enum CardStatus { VALID, EXPIRED, INVALID, INSUFFICIENT; }

public class Product {
  private String code, name;
  private float unitPrice;
}

public class OrderDetail {
  private Product product;
  private int quantity;
}

public class Order {
  private int id;
  private String deliveryAddress;
  private OrderStatus status = OrderStatus.OPEN;
  private ArrayList<OrderDetail> details = new ArrayList<>();
  private Payment payment;

  public void addProduct(Product p, int qty) { ... }
  public float calculateTotal() { ... }
}

public abstract class Payment {
  public abstract boolean processPayment(float total);
}

public class Cash extends Payment { ... }
public class Credit extends Payment {
  private CardStatus status;
}

public class OrderManager {
  private ArrayList<Order> orders;
  private ArrayList<Product> products;
  private int orderIDGenerator = 0;

  public Order createOrder(String deliveryAddress) { ... }
}
06

Sequence Diagram โ€” Create Order

ุชุญูˆูŠู„ UC1 ู„ู€ sequence ู…ู† method calls.

๐ŸŽฌ Create Order Flow
  1. Actor โ†’ OrderManager : createOrder(delivery_address)
  2. OrderManager ูŠุนู…ู„ new :Order instance ูˆูŠุฑุฌุน order ref
  3. Loop for each product:
    • Actor โ†’ OrderManager : addProduct(orderID, prodID, quantity)
    • OrderManager creates new OrderDetail
    • OrderManager โ†’ Order : addItem(orderDetail)
  4. OrderManager returns confirmation to Actor
Pseudo-sequence (Java method calls)
// Step 1: Create order
Order myOrder = orderManager.createOrder("Cairo, Egypt");

// Step 2: Add items in loop
for (ProductInput p : userInputs) {
  orderManager.addProduct(myOrder.getId(), p.code, p.quantity);
}

// Step 3: Pay for order
Cash payment = new Cash(100.0);
boolean success = orderManager.payForOrder(myOrder.getId(), payment);
07

Lessons for Question 2 โญ

ุงู„ู€ template ุงู„ู„ูŠ ุชุชุจุนู‡ ููŠ Question 2 ููŠ ุงู„ู€ final.

๐Ÿ“š Step-by-Step Method
  1. Read SRS carefully. ุนู„ู… ุนู„ู‰ ุงู„ู€ nouns ูˆุงู„ู€ actions.
  2. Identify actors โ€” ู…ูŠู† ุจูŠุชูุงุนู„ ู…ุน ุงู„ู€ system ู…ู† ุจุฑู‘ู‡ุŸ (1 mark)
  3. Identify use cases โ€” ูƒู„ actor ูŠู‚ุฏุฑ ูŠุนู…ู„ ุฅูŠู‡ุŸ (4-6 marks)
  4. Draw use case diagram ู…ุน ุงู„ุนู„ุงู‚ุงุช (extend, include, generalization).
  5. Detail one use case โ€” main flow + exceptional flows (4-5 marks).
  6. Identify classes ู…ู† ุงู„ู€ nouns. ุตู†ูู‡ู… ูƒู€ Domain / Control / Boundary.
  7. Draw class diagram ุจุงู„ู€ attributes, operations, relationships, multiplicities (8 marks).
  8. Draw sequence diagram ู„ู€ use case ูˆุงุญุฏ ูˆูŠูˆุถุญ ุงู„ู€ methods ุงู„ู…ุณุชุฎุฏู…ุฉ (4 marks).
  9. Draw state diagram (ู„ูˆ ู…ุทู„ูˆุจุŒ 2-4 marks) ู„ุญุงู„ุงุช object ู…ุนูŠู†.
โฐ Time Allocation in Exam

Question 2 = ุญูˆุงู„ูŠ 20+ marks. ุฎุฏ ู„ู‡ุง ุณุงุนุฉ ู…ู† ุงู„ู€ 2 ุณุงุนุงุช.

  • 5 min โ€” ุงู‚ุฑุฃ ุงู„ู€ requirements ูˆุญุฏุฏ ุงู„ู€ actors/use cases.
  • 15 min โ€” Use case diagram + 1 detailed use case.
  • 25 min โ€” Class diagram (ุงู„ุฃุทูˆู„).
  • 10 min โ€” Sequence diagram.
  • 5 min โ€” State diagram ู„ูˆ ู…ุทู„ูˆุจ.
โœ… Mistakes to Avoid
  • โŒ Methods ููŠ ุงู„ู€ sequence diagram ู…ุด ู…ูˆุฌูˆุฏุฉ ููŠ ุงู„ู€ class diagram.
  • โŒ ู†ุณูŠุงู† ุงู„ู€ multiplicities ุนู„ู‰ ุงู„ู€ associations.
  • โŒ ุงู„ุฎู„ุท ุจูŠู† Aggregation โ—‡ ูˆ Composition โ—†.
  • โŒ ู†ุณูŠุงู† ุญุงู„ุงุช OPEN/CLOSED ููŠ ุงู„ู€ state diagram.
  • โŒ ุนุฏู… ุงุณุชุฎุฏุงู… ุนู„ุงู‚ุฉ extend ู„ู„ู€ conditional use cases (ู…ุซู„ุงู‹ Bad Credit).
  • โŒ ุฑุณู… ุงู„ู€ actors ูƒุฃู†ู‡ู… classes โ€” ุงู„ู€ actors ุฎุงุฑุฌ ุงู„ู€ system boundary.
๐Ÿ’ก Final Tip

ู„ู„ู€ Question 2: ุงู‚ุฑุฃ ุงู„ุณุคุงู„ ู…ุฑุชูŠู†ุŒ ูˆุญุฏุฏ ุงู„ู€ keywords ุงู„ุฎุงุตุฉ ุจุงู„ู€ relationships (e.g., consists of = composition, has many = aggregation, is a kind of = generalization, uses = association). ูƒู„ keyword ุจูŠุฏู„ูƒ ุนู„ู‰ relation ู…ุนูŠู†ุฉ.

๐Ÿ“‹

Cheat Sheet

Question 2 template + ุฃู‡ู… ู…ูุงู‡ูŠู… Corona Store.

๐ŸŽฏ Question 2 Template

1 mark
Actors identification
4-6 marks
Use case diagram
4-5 marks
Detailed use case
8 marks
Class diagram
4 marks
Sequence diagram
2-4 marks
State diagram (if asked)

๐Ÿ”‘ Keyword โ†’ Relationship

"consists of"
Composition โ—†
"has many"
Aggregation โ—‡
"is a kind of"
Generalization โ–ณ
"uses"
Association โ”
"only if X" (conditional)
<<extend>> in use case
"always X" (always done)
<<include>> in use case

๐Ÿซ Corona Classes

Domain
Order, OrderDetail, Product, Payment, Cash, Credit
Control
OrderManager
Enums
OrderStatus, CardStatus
Order โ€” Status
OPEN, CLOSED
Credit โ€” CardStatus
VALID, EXPIRED, INVALID, INSUFFICIENT

๐Ÿ—๏ธ CRC Method

CRC
Class ยท Responsibility ยท Collaboration
Find
Nouns in SRS = candidate classes
Each card
Attributes + Operations + Collaborators
Hint
Can't fit on one card? Split the class.