UML Class Diagram Tests
1. Shared-Target Inheritance
@startuml
class Animal {
+name: str
+speak()
}
class Dog {
+breed: str
+fetch(item: str)
}
class Cat {
+indoor: bool
+purr()
}
Dog --|> Animal
Cat --|> Animal
@enduml
2. Interface Realization (Dashed Arrows)
@startuml
interface Drawable {
+draw()
}
class Circle {
-radius: double
+draw()
}
class Rectangle {
-width: double
-height: double
+draw()
}
Circle ..|> Drawable
Rectangle ..|> Drawable
@enduml
3. All Relationship Types
@startuml
abstract class Shape {
-color: int
+{abstract} area(): double
+setColor(r: int, g: int, b: int)
}
class Rectangle {
-width: int
-length: int
+setWidth(width: int)
+setHeight(height: int)
}
class Color {
-r: int
-g: int
-b: int
}
class Canvas {
+render()
}
class Logger {
+log(msg: str)
}
Rectangle --|> Shape
Shape *-- Color
Shape o-- Canvas
Canvas ..> Logger : uses
@enduml
4. Multiplicities and Labels
@startuml
class University {
+name: str
}
class Professor {
+name: str
+department: str
}
class Student {
+name: str
+id: int
}
University "1" -- "*" Professor : employs
Professor "1" -- "*" Student : advises
@enduml
5. Observer Design Pattern
@startuml
interface Observer {
+update(data: Object)
}
abstract class Subject {
-observers: List
+attach(o: Observer)
+detach(o: Observer)
+notify()
}
class ConcreteSubject {
-state: int
+getState(): int
+setState(s: int)
}
class ConcreteObserverA {
+update(data: Object)
}
class ConcreteObserverB {
+update(data: Object)
}
ConcreteSubject --|> Subject
Subject --> Observer : notifies
ConcreteObserverA ..|> Observer
ConcreteObserverB ..|> Observer
@enduml
6. Train System (from Lecture)
@startuml
class Train {
-lastStop: char
-nextStop: char
-velocity: double
-doorsOpen: boolean
+startTrain(velocity: double): void
+stopTrain(): void
+openDoors(): void
}
class Station {
+name: str
}
class Button {
+pressed: boolean
+press()
}
class RequestButton {
+press()
}
class EmergencyButton {
+press()
}
RequestButton --|> Button
EmergencyButton --|> Button
Station "1" -- "1" Button
Train "1" -- "2" Button
@enduml
7. Dependency
@startuml
class Train {
+addStop(stop: event): void
}
class ButtonPressedEvent {
+station: str
+timestamp: int
}
Train ..> ButtonPressedEvent
@enduml
8. Abstract Class with Stereotype
@startuml
class Singleton <<singleton>> {
-{static} instance: Singleton
-data: str
+{static} getInstance(): Singleton
+getData(): str
}
@enduml
UML Sequence Diagram Tests
9. Basic Synchronous Call & Response
@startuml
participant client_1: Client
participant server: LibraryServer
client_1 -> server: GET /book/id
server --> client_1: responseCode=200, book
@enduml
10. Alt Fragment
@startuml
participant client_1: Client
participant server: LibraryServer
client_1 -> server: GET /book/id
alt [book found]
server --> client_1: responseCode=200, book
else [else]
server --> client_1: responseCode=404
end
@enduml
11. Multiple Participants (Login Flow)
@startuml
participant user: User
participant browser: WebBrowser
participant login: LoginController
participant auth: AuthService
participant db: UserDB
user -> browser: enter credentials
browser -> login: POST /login
login -> auth: authenticate(user, pass)
auth -> db: findUser(user)
db --> auth: userRecord
auth --> login: authResult
login --> browser: 200 OK + token
browser --> user: show dashboard
@enduml
12. Loop Fragment
@startuml
participant c: Client
participant s: Server
participant db: Database
c -> s: getItems(page)
loop [for each item in page]
s -> db: fetchItem(id)
db --> s: itemData
end
s --> c: itemList
@enduml
13. Opt Fragment (Optional)
@startuml
participant user: User
participant app: App
participant notif: NotificationService
user -> app: submitOrder()
app --> user: orderConfirmation
opt [user has notifications enabled]
app -> notif: sendEmail(user, order)
notif --> app: sent
end
@enduml
14. Train System Sequence (from Lecture)
@startuml
participant p: Passenger
participant btn: StationButton
participant sys: TrainSystem
participant train: Train
participant doors: Doors
p -> btn: press()
btn -> sys: requestStop(stationA)
sys -> train: stopTrain()
train --> sys: stopped
sys -> doors: openDoors()
doors --> sys: doorsOpen
p -> train: board
p -> train: pressRequestButton(stationB)
train -> sys: requestStop(stationB)
sys -> doors: closeDoors()
doors --> sys: doorsClosed
sys -> train: startTrain(velocity)
@enduml
15. Execution Specifications (Auto Activation)
@startuml
participant client_1: Client
participant server: LibraryServer
participant db: Database
client_1 -> server: GET /book/id
server -> db: SELECT * FROM books
db --> server: resultSet
server --> client_1: responseCode=200, book
@enduml
16. Nested Activations
@startuml
participant user: User
participant app: Application
participant auth: AuthService
participant db: UserDB
user -> app: login(credentials)
app -> auth: authenticate(user, pass)
auth -> db: findUser(user)
db --> auth: userRecord
auth --> app: token
app --> user: loginSuccess
@enduml
17. Self-Message
@startuml
participant client: Client
participant server: Server
client -> server: request()
server -> server: validate()
server -> server: process()
server --> client: response
@enduml
18. Stacked Execution Specifications
@startuml
participant ui: UI
participant ctrl: Controller
participant svc: Service
participant repo: Repository
ui -> ctrl: handleClick()
ctrl -> svc: processOrder()
svc -> repo: save(order)
repo --> svc: saved
svc -> svc: sendNotification()
svc --> ctrl: result
ctrl --> ui: updateView()
@enduml
UML State Machine Diagram Tests
19. Exosuit State Machine (from SEBook)
@startuml
[*] --> Idle : powerOn()
Idle --> CombatMode : threatDetected [sysCheckOK] / deployUI()
CombatMode --> Idle : threatNeutralized / retractWeapons()
CombatMode --> EmergencyPower : powerLevel < 5% / rerouteToLifeSupport()
EmergencyPower --> [*] : manualOverride()
state Idle {
entry / initSensors()
exit / logStateChange()
}
@enduml
20. Order Lifecycle
@startuml
[*] --> Created : Order Placed
Created --> Paid : payment_received
Paid --> Shipped : ship_order
Shipped --> Delivered : delivery_confirmed
Delivered --> [*]
Created --> Cancelled : cancel_order [within 24hrs]
Paid --> Refunded : refund_requested / processRefund()
Cancelled --> [*]
Refunded --> [*]
@enduml
21. Simple Turnstile
@startuml
[*] --> Locked
Locked --> Unlocked : insertCoin
Unlocked --> Locked : push
@enduml
22. Vending Machine with Internal Actions
@startuml
[*] --> Idle
Idle --> AcceptingMoney : selectProduct
AcceptingMoney --> Dispensing : [sufficientFunds] / startDispense()
AcceptingMoney --> Idle : cancel / returnMoney()
Dispensing --> Idle : complete / resetMachine()
state AcceptingMoney {
entry / displayPrice()
do / countInsertedCoins()
}
state Dispensing {
entry / activateMotor()
exit / stopMotor()
}
@enduml
UML Component Diagram Tests
23. Client-Server (from Lecture)
@startuml
component Client
component LibraryServer
Client --> LibraryServer : GET Book
Client --> LibraryServer : POST Book
@enduml
24. Three-Tier Architecture
@startuml
component WebUI
component AppServer
component Database
WebUI --> AppServer : HTTP Requests
AppServer --> Database : SQL Queries
AppServer ..> Logger : uses
@enduml
25. Microservices
@startuml
component APIGateway
component UserService
component OrderService
component PaymentService
component NotificationService
APIGateway --> UserService : /api/users
APIGateway --> OrderService : /api/orders
OrderService --> PaymentService : processPayment
OrderService ..> NotificationService : sendConfirmation
PaymentService ..> NotificationService : sendReceipt
@enduml
26. Frontend-Backend-Database (directional ports)
@startuml
component Frontend {
portout "httpOut" as f_out
}
component Backend {
portin "httpIn" as b_in
portout "dbOut" as b_dbout
portout "eventOut" as b_eventout
}
component Database {
portin "dbIn" as db_in
}
component EventBus {
portin "eventIn" as eb_in
}
f_out --> b_in : REST / JSON
b_dbout --> db_in : SQL
b_eventout --> eb_in : publish
@enduml
UML Deployment Diagram Tests
26. Web Application Deployment
@startuml
node WebServer {
component Nginx
component AppServer
}
node DatabaseServer {
component PostgreSQL
}
node ClientDevice {
component WebBrowser
}
ClientDevice --> WebServer : HTTPS
WebServer --> DatabaseServer : TCP/IP
@enduml
27. Ticket System (from UML Reference)
@startuml
node TicketServer {
component TicketSeller
component CreditCardCharges
component TicketDB
}
node Kiosk {
component CustomerInterface
}
node SalesTerminal {
component ClerkInterface
}
Kiosk --> TicketServer : network
SalesTerminal --> TicketServer : network
@enduml
28. Microservices Deployment
@startuml
node LoadBalancer {
component Nginx
}
node AppNode1 {
component UserService
component OrderService
}
node AppNode2 {
component PaymentService
component NotificationService
}
node DataNode {
component MongoDB
component Redis
}
LoadBalancer --> AppNode1 : HTTP
LoadBalancer --> AppNode2 : HTTP
AppNode1 --> DataNode : TCP
AppNode2 --> DataNode : TCP
AppNode1 ..> AppNode2 : gRPC
@enduml
29. Node Instance Notation (name:Type underlined, per UML spec Fig 9-3)
@startuml
node server:BankServer {
component Transactions
component AccountMgmt
}
node client:ATMKiosk {
component ATMSoftware
}
client:ATMKiosk --> server:BankServer : network
@enduml