嵌套VS聚合?
回答
從編程的角度(例如,Java):
參考:http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
嵌套類分爲兩類:靜態和非靜態。被聲明爲靜態的嵌套類簡單地稱爲靜態嵌套類。非靜態嵌套類稱爲內部類。
class OuterClass {
...
static class StaticNestedClass {
...
}
class InnerClass {
...
}
InnerClass innerObject = new InnerClass();
}
OuterClass.StaticNestedClass nestedObject =新OuterClass.StaticNestedClass();
從UML透視:
類從命名空間概括
分類 - |> EncapsulatedClassifier-- |> StructuredClassifier-- |> Classifier-- |>命名空間
命名空間具有「成員」和「擁有成員」。
/部件:NamedElement [0 .. *]
/ownedMember:NamedElement [0 .. *]
的 「構件」 表示 「StaticNestedClass +將InnerClass」;而 「ownedMember」 表示「將InnerClass 「只有
一般建議:
- 我不會使用「嵌套」連接器;它會導致「StaticNestedClass」和「InnerClass」之間的混淆。
- 我不會使用「聚合」連接器(白色鑽石);因爲它是由遺留原因引入的;
- 始終使用「關聯」和「構圖」。
如何做圖表?
- 如果你想「StaticNestedClass」的元模型,給它「::在OuterClass StaticNestedClass」作爲類名稱。沒有涉及連接器。
- 如果要爲「InnerClass」建模(在UML規範中稱爲「nestedClassifier」), (1)在圖上創建兩個類元素,分別命名爲「OuterClass」和「OuterClass :: InnerClass」。 (2)從「OuterClass」到「OuterClass :: InnerClass」繪製一個「Composition」連接器。
協會或組成
這是真的取決於你的需求。
大多數人喜歡用「毀滅」的過程來描述「構圖」; 「整體」被摧毀,那麼「部分」也被摧毀。
但是,從「構造」過程描述總是有效的;在這個過程中,「新的整體」,你「新的部分」。 這是一個很好的做法,使「構建」和「銷燬」他們一致。
E.g.汽車和車輪;
如果有人寫了下面的代碼瘋狂,哇..
class Car{
public:
Wheel* w1;
Wheel* w2;
Car(Wheel* w1_, Wheel* w2_)
{
w1 = w1_;
w2 = w2_;
}
~Car()
{
delete w1;
delete w2;
}
}
Wheel* l1 = new Wheel();
Wheel* l2 = new Wheel();
Car* myCar = new Car(l1, l2);
delete myCar;
l1->Operation1(); //Crash!
因此,這不是一個真正的「組合」,因爲結構和破壞是不相符的。 如果您從析構函數中刪除了「刪除w1;刪除w2」,則Car和Wheel之間的關係爲「Association」。
的代碼組成的版本將是這樣的:
class Car{
public:
Wheel* w1;
Wheel* w2;
Car()
{
w1 = new Wheel();
w2 = new Wheel();
}
~Car()
{
delete w1;
delete w2;
}
}
啊謝謝!我用'作文'做了它,所以它看起來更正確 –
- 1. 嵌套聚合Elasticsearch
- 2. SQL嵌套聚合
- 3. Bigquery嵌套聚合
- 4. Elasticsearch,嵌套聚合
- 5. mongodb聚合嵌套嵌套數組
- 6. Elasticsearch嵌套基數聚合
- 7. SQL嵌套聚合函數
- 8. 聚合物嵌套dom-repeat
- 9. elasticsearch中的嵌套聚合
- 10. 火鳥1.5:嵌套聚合
- 11. 嵌套聚合過濾
- 12. 實體vs聚合vs聚合根
- 13. 子聚合和嵌套聚合之間的差異
- 14. Elasticsearch 5 |過濾器嵌套對象和嵌套聚合計數
- 15. 嵌套聚合不能正常工作
- 16. SQL嵌套聚合函數MAX(COUNT(*))
- 17. 在DDD中處理嵌套聚合
- 18. ElasticSearch - 篩選器嵌套聚合
- 19. 使用嵌套聚合進行計數
- 20. SQL:多重嵌套聚合函數
- 21. SQL嵌套聚合分組錯誤
- 22. 星型聚合 - 嵌套羣組
- 23. MongoDB嵌套對象聚合計數
- 24. Postgresql嵌套的聚合函數
- 25. 嵌套聚合物模板的繼承
- 26. 嵌套字段的Couchbase聚合
- 27. 搜索的聚合物嵌套綁定
- 28. MDX查詢使用嵌套聚合
- 29. Elasticsearch中的多個嵌套聚合
- 30. Elasticsearch聚合嵌套內部匹配
請包括與數據的實際例子和用於訪問和寫入數據的用例列表。應該選擇你的模型來適應你的用例。請參閱以下內容,以便在MongoDB中進行數據建模:http://docs.mongodb.org/manual/core/data-modeling/ –
@JamesWahlin剛剛更新了它 –
@AbdelouahabPp,仍然沒有實際的文檔展現你的意思。 – Derick