Summary.
classDiagram
class ParkingLotManager {
+getLotOccupancy(lotId: String): OccupancyReport
+findAvailableSlot(lotId: String, vehicleType: VehicleType): ParkingSlot
+submitUserReport(report: UserReport): void
+ingestSensorData(reading: SensorReading): void
+getLots(): List~ParkingLot~
}
class ParkingLot {
-lotId: String
-name: String
-location: String
-lotType: LotType
-slots: List~ParkingSlot~
-sensors: List~Sensor~
+getLotName(): String
+getTotalSpaces(): int
+getAvailableSpaces(): int
+getSpacesByType(type: SlotType): int
+isAvailable(): boolean
}
class ParkingSlot {
-slotId: String
-slotNumber: int
-slotType: SlotType
-occupied: boolean
-vehicleType: VehicleType
-lastUpdated: DateTime
+isAvailable(): boolean
+getSlotNumber(): int
+isOccupied(): boolean
+getType(): SlotType
+setOccupied(isOccupied: boolean, vehicleType: VehicleType): void
+setSlotType(type: SlotType): void
}
class Vehicle {
-type: VehicleType
+getType(): VehicleType
}
class User {
-id: int
-firstName: String
-lastName: String
-email: String
-passwordHash: String
-createdAt: DateTime
+getID(): int
+getFirstName(): String
+getLastName(): String
+getFullName(): String
+authenticate(password: String): boolean
+getActions(): List~String~
}
class Client
class Admin
class Sensor {
-sensorId: String
-sensorType: SensorType
-lotId: String
-reliability: float
+read(): SensorReading
}
class SensorReading {
-sensorId: String
-timestamp: DateTime
-occupiedCount: int
-rawData: Map
}
class UserReport {
-reportId: String
-userId: int
-lotId: String
-timestamp: DateTime
-reportedAvailable: int
-confidence: int
-comments: String
}
class OccupancyReport {
-lotId: String
-timestamp: DateTime
-estimatedAvailable: int
-sourceBreakdown: Map
+asConfidenceScore(): float
}
class DataManager {
-usersRepo
-lotsRepo
-slotsRepo
-reportsRepo
-sensorRepo
+getUserById(id: int)
+saveUserReport(r: UserReport)
+querySlotsByLot(lotId: String): List~ParkingSlot~
}
%% Enums (represented as classes for mermaid)
class SlotType{CAR
MOTORCYCLE
HANDICAPPED
EV
COMPACT}
class VehicleType{CAR
MOTORCYCLE
HANDICAPPED
EV}
class LotType{SURFACE
STRUCTURE}
class SensorType{ULTRASONIC
CAMERA
LOOP}
ParkingLot "1" o-- "*" ParkingSlot
ParkingLot "1" o-- "*" Sensor
ParkingLotManager "1" -- "*" ParkingLot
ParkingLotManager "1" -- "*" UserReport
ParkingLotManager "1" -- "*" SensorReading
User "1" -- "*" UserReport
DataManager "1" -- "*" ParkingLot
DataManager "1" -- "*" User
Client --|> User
Admin --|> User
Comments