回答
在你的序列圖中,你應該只使用你認識它們的類型的對象在執行的特定點。
然後你調用該對象上的方法,即使它是在抽象父類上實現的方法。
序列圖非常像代碼int尊重。
因此,假設你有以下情況:
然後調用無論是實現爲ConcreteSubClass的對象的抽象操作,因爲你的用戶類有關聯ConcreteSubClass,無論在哪裏該操作被執行。
如果用戶類有關聯的抽象類然後調用類型的對象上的操作抽象類
這是一個非常好的解釋,吉爾特。 – BobRodes
如果您要建模兩個不同的類那麼在序列圖中它將意味着兩個不同的生命線。這是全部(據我所知)。
您可以在生命線頭顯示任何<<stereotype>>
(包括<<abstract>>
)如本例:uml-diagrams.org: UML Sequence Diagrams Examples → Submit Comments to Pluck
例如,假設我們有這個(沒用)C#代碼:
abstract class BaseClass
{
protected abstract string Name { get; }
public virtual void DoSomething()
{
Console.WriteLine("Something useful done.");
}
protected void SayHello(string to)
{
Console.WriteLine("Hi {0}, I'm {1}", to, this.Name);
}
}
class Case1 : BaseClass
{
protected override string Name { get { return "Case 1"; } }
public override void DoSomething()
{
base.DoSomething();
}
}
class Case2 : BaseClass
{
protected override string Name { get { return "Case 2"; } }
public void DoSomething(string to)
{
this.SayHello(to);
base.DoSomething();
}
}
class Program
{
static void Main(string[] args)
{
var c1 = new Case1();
var c2 = new Case2();
c1.DoSomething();
c2.DoSomething("Jane");
}
}
然後UML捕獲Program.Main
時發生的情況的序列圖可能如下所示:
我將抽象類繪製爲與具體類實例共享生命期(以及大部分內存)的隱式友元對象。實際上,在某些語言中實現類繼承是如何實現的,所以這種情況並非完全「組合」。
但是,詳細程度可能過於集中於實現,沒有有用的抽象。即使小代碼重新分解,該圖也不會生存
向我解釋「<
[請閱讀](http://stackoverflow.com/questions/13107893/uml-questions-about-abstract-and-stereotypes/13118076#13118076)! – ChiefTwoPencils
使用什麼工具製作上圖? – ChiefTwoPencils
- 1. 抽象類vs具體類?
- 2. 抽象類和具體類
- 3. 抽象類中的具體方法
- 4. 如何反序列化抽象類從XML的具體實現
- 5. 一個具體的類VS抽象類
- 6. 抽象類擴展的具體類
- 7. 從具體的整數類型抽象
- 8. 抽象類的序列化
- 9. 將具體對象列表投射到抽象類型
- 10. 具體類繼承自繼承自通用抽象類的抽象類
- 11. 反序列化:抽象類
- 12. De序列化XML中的抽象類
- 13. 當抽象類擴展具體類時,繼承的成員是抽象的嗎?
- 14. 抽象類型在具體類中的使用?
- 15. 抽象超類或每個具體子類中的@PersistenceContext?
- 16. 包含在具體類中的抽象類
- 17. 抽象/具體語法的序列創建(方案)
- 18. NHibernate的:獲取具體類型引用的抽象實體的
- 19. 作爲超類型的抽象基類與具體類
- 20. 使用抽象構建器vs具體類和具體構建器擴展抽象類
- 21. 在抽象基類中使用具體實現類型
- 22. 具有抽象類參數的抽象方法的Java抽象類
- 23. 具有所有具體方法的抽象類
- 24. 如何分離具有接口的抽象級別?
- 25. 具有不同屬性名稱的序列化抽象類
- 26. 使用抽象類中抽象類的引用抽象類c
- 27. 抽象類中的動態抽象類
- 28. 搜索Django中的抽象基類與具體(多表)繼承
- 29. 如何讓抽象方法返回具體實現的抽象類型?
- 30. StarUML - 無法指示抽象類中的抽象操作(斜體)
要做到這一點,方法是爲其添加單獨的生命線並顯示消息。就像你在類和現代實體關係圖中看到的標準符號一樣,我不太確定。基於我所看到的圖表,SD應該很簡單,我認爲它對於類圖更合適。 – ChiefTwoPencils
我不想添加新的生命線,除非我能夠顯示抽象類和具體類之間的關係。但是我確實認爲這更可能是類圖的關注。 –
如果你想爲兩個不同的類建模,那麼在序列圖中它將意味着兩個不同的生命線。這就對了。您可以顯示任何'<>'(包括'<>')在如本例所示的生命線頭:http://www.uml-diagrams.org/sequence-diagrams-examples.html#pluck-comments –
xmojmr