@startuml
package "Hotel Management System" {
package "Business Logic" {
class Booking {
+createBooking()
+cancelBooking()
}
class Customer {
+registerCustomer()
+updateCustomer()
}
class Room {
+checkAvailability()
+bookRoom()
}
class Payment {
+processPayment()
+issueRefund()
}
}
package "Data Access" {
class BookingRepository {
+saveBooking()
+deleteBooking()
}
class CustomerRepository {
+saveCustomer()
+deleteCustomer()
}
class RoomRepository {
+saveRoom()
+deleteRoom()
}
}
package "User Interface" {
class BookingView {
+displayBookingForm()
}
class CustomerView {
+displayCustomerForm()
}
class RoomView {
+displayRoomDetails()
}
class PaymentView {
+displayPaymentForm()
}
}
package "Notifications" {
class EmailService {
+sendConfirmationEmail()
}
class SMSService {
+sendSMSNotification()
}
}
' Relationships
Booking --> BookingRepository : uses
Customer --> CustomerRepository : uses
Room --> RoomRepository : uses
Payment --> Booking : processes
BookingView --> Booking : interacts with
CustomerView --> Customer : interacts with
RoomView --> Room : interacts with
PaymentView --> Payment : interacts with
Booking --> EmailService : notifies
Booking --> SMSService : notifies
}
@enduml