I am working in a purchasing system where we take calls:
public class Call
{
public List<CallItem> CallItems { get; set; }
}
The calls can be turned into quotes, where call items become quote lines:
public class Quote
{
public List<QuoteSegment> QuoteSegments { get; set; }
}
public class QuoteSegment
{
public List<QuoteLine> QuoteLines { get; set; }
}
And quotes can be accepted and turned into orders, where the quote lines become order lines:
public class Order
{
public List<OrderSegment> OrderSegments { get; set; }
}
public class OrderSegment
{
public List<OrderLine> OrderLines { get; set; }
}
There are many transitions like this in our system, where one item can become another. The relationships between their attributes is not always obvious. It becomes time-consuming to read the code and try to trace through the flow of information.
Is there a suitable type of diagram, UML or otherwise, that can be used to show the in-depth relationships between two classes? So that I can show exactly which Call attributes map to which Quote attributes, which Quote attributes map to which Order attributes, and so on?
CallItem
,QuoteLine
andOrderLine
could share a superclass? Maybe theCall
,Quote
andOrder
classes could be combined into a single class but with aStatus
attribute (mutable or immutable variations of this)? Or maybe the different classes have to be separate but all of the attributes which map could be named identically?