|
|
|
|
@ -0,0 +1,79 @@
|
|
|
|
|
@startuml 单一职责原则-进阶类图
|
|
|
|
|
|
|
|
|
|
skinparam backgroundColor white
|
|
|
|
|
skinparam handwritten false
|
|
|
|
|
skinparam monochrome false
|
|
|
|
|
skinparam shadowing false
|
|
|
|
|
skinparam roundcorner 8
|
|
|
|
|
skinparam defaultFontName Microsoft YaHei
|
|
|
|
|
skinparam defaultFontSize 14
|
|
|
|
|
skinparam packageStyle rectangle
|
|
|
|
|
skinparam package {
|
|
|
|
|
BackgroundColor LightGray
|
|
|
|
|
BorderColor Gray
|
|
|
|
|
}
|
|
|
|
|
skinparam class {
|
|
|
|
|
BackgroundColor White
|
|
|
|
|
BorderColor Black
|
|
|
|
|
ArrowColor Black
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
package "com.company.employee.model" {
|
|
|
|
|
class Employee {
|
|
|
|
|
- id: String
|
|
|
|
|
- name: String
|
|
|
|
|
- age: int
|
|
|
|
|
- department: String
|
|
|
|
|
- salary: double
|
|
|
|
|
- hireDate: LocalDate
|
|
|
|
|
- email: String
|
|
|
|
|
- position: String
|
|
|
|
|
+ getId(): String
|
|
|
|
|
+ getName(): String
|
|
|
|
|
+ getAge(): int
|
|
|
|
|
+ getDepartment(): String
|
|
|
|
|
+ getSalary(): double
|
|
|
|
|
+ getHireDate(): LocalDate
|
|
|
|
|
+ getEmail(): String
|
|
|
|
|
+ getPosition(): String
|
|
|
|
|
+ getYearsOfService(): int
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
package "com.company.employee.search" {
|
|
|
|
|
class EmployeeSearch {
|
|
|
|
|
- employees: List<Employee>
|
|
|
|
|
+ EmployeeSearch(employees: List<Employee>)
|
|
|
|
|
+ searchByDepartment(department: String): List<Employee>
|
|
|
|
|
+ searchBySalaryRange(minSalary: double, maxSalary: double): List<Employee>
|
|
|
|
|
+ searchByHireDateRange(startDate: LocalDate, endDate: LocalDate): List<Employee>
|
|
|
|
|
+ searchByAgeRange(minAge: int, maxAge: int): List<Employee>
|
|
|
|
|
+ searchByNameContaining(keyword: String): List<Employee>
|
|
|
|
|
+ searchByPosition(position: String): List<Employee>
|
|
|
|
|
+ searchByMultipleConditions(department: String, minSalary: double, maxSalary: double): List<Employee>
|
|
|
|
|
+ getEmployees(): List<Employee>
|
|
|
|
|
+ setEmployees(employees: List<Employee>): void
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
package "com.company.employee.statistics" {
|
|
|
|
|
class EmployeeStatistics {
|
|
|
|
|
- employees: List<Employee>
|
|
|
|
|
+ EmployeeStatistics(employees: List<Employee>)
|
|
|
|
|
+ calculateAverageSalary(): double
|
|
|
|
|
+ calculateAverageAge(): double
|
|
|
|
|
+ calculateAverageServiceYears(): double
|
|
|
|
|
+ getDepartmentEmployeeCount(): Map<String, Integer>
|
|
|
|
|
+ getSalaryDistribution(): Map<String, List<Employee>>
|
|
|
|
|
+ findHighestPaidEmployee(): Employee
|
|
|
|
|
+ findLongestServingEmployee(): Employee
|
|
|
|
|
+ generateStatisticsReport(): String
|
|
|
|
|
+ setEmployees(employees: List<Employee>): void
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
' 关系:搜索和统计类都使用Employee
|
|
|
|
|
EmployeeSearch --> Employee
|
|
|
|
|
EmployeeStatistics --> Employee
|
|
|
|
|
|
|
|
|
|
@enduml
|