我有一個包含很多組合關系的 UML 2.5類圖。
我想在 Kotlin 中實作它們(對不起,我是 Kotlin 的新手):
class RuleScenarioState (val description : String){
var action: RuleStateAction? = null
var stateType : ScenarioStateType? = null
var completeCriteria : StateCompleteCriteria? = null
private class ComplexCompleteCriteria private constructor(val customCriteriaImplementation : String): StateCompleteCriteria() {
}
private class ExpressionCompleteCriteria private constructor(val expression : RegulationExpression): StateCompleteCriteria() {
}
private class RegulationNodeCompleteCriteria private constructor(val regulationNodeTreeId : UUID): StateCompleteCriteria() {
}
private class CustomCompleteCriteria private constructor(val customCriteriaImplementation : String): StateCompleteCriteria() {
}
private class CustomRuleStateAction private constructor(val customActionImplementationName : String): RuleStateAction() {
}
private class ClassificationRuleActionState private constructor(val classificationExpression : RegulationExpression): RuleStateAction() {
}
}
不幸的是,我不知道如何使用這些類,我只有一個需要實作的圖表。我認為創建具有如上所示的密集狀態操作的實體是個壞主意,但是如何確保一對一的實體關系呢?如何在 Kotlin 中正確實作 UML 組合關系?
uj5u.com熱心網友回復:
UML 模型需要什么?
我也是 Kotlin 的新手。當您閱讀此語言中的組合時,您必須了解物件組合(簡單表示具有作為物件的屬性)與 UML 含義中的組合(也稱為組合聚合)之間的區別。
UML 復合聚合是一種確保兩件事的關聯:
- 組件實體(例如
RuleStateAction)由單個組合(例如RuleScenarioState)獨占擁有; - 復合體(例如
RuleScenarioState)對其組件(例如 )的存在和存盤負責RuleStateAction,尤其是在復合體終止時其組件將被銷毀。
如何在 Kotlin 中實作它?
第一個要求意味著使用or向類宣告一個私有屬性。您還應該確保不要通過以某種方式或另一種方式回傳物件來將物件泄漏到外部單詞。在某些情況下,這可能是一個棘手的問題,可能需要克隆物件。private varprivate val
第二個要求可以通過在復合材料中創建組件來實作。Kotlin 是垃圾回收的,所以如果只有組合知道組件,一旦不再使用組合,它的組件也是如此(您也可以考慮使其可關閉,但我們不要增加不必要的難度 ;-)
幾個不相關的評論:
根據您的設計,您應該使用一些抽象類。您似乎在代碼中避免了它們,但它們對于此設計的作業至關重要。因此,您將擁有一個私有 var,該 var 使用從抽象類繼承的具體類的實體進行初始化。
您的圖表沒有說明組件的多樣性。如果只有一個,就沒有什么特別要添加的了。但如果它很多,你將不得不考慮collections。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/463596.html
