一个很复杂的建模的问题,请大家帮忙!!!

10-08-29 icethor
大家好,我是jdon论坛潜水人员,大概潜了能有四五年了吧,如果不是这个难题,估计我还会继续潜下去:)

是一个很复杂的费用建模的问题,简单描述如下:

货物运输费用中包括多种费用,现在要对这些费用进行报表,即:得出一段时间内、货物运输费用的“列表”与“总和”。

费用类型包括:保险费、运输费、上门送货费、仓储费。(需求非常不稳定)

所有费用都有“应付费用”、“已付费用”、“待付费用”三项(应付费用-全部的已付费用=待付费用)。

对于每次货物运输,只会对每个费用类型产生一项“应付费用”与“待付费用”。

“已付费用”的特殊性:

“已付费用”应该分清费用支付方:“发货人”与“收货人”。

“已付费用”应该分清费用收取方:“发货站”与“收货站”。

每次付费产生一条付费记录,作为历史记录。

(应付费用与待付费用可能也有特殊性,但是我目前还没有捕获到,比如计时、提醒等等。)

费用报表统计时的查询规则:

查询时必须选择应付、已付、待付费用三项其中之一

可以按某次或某几次货物运输进行查询,或者全部查询

对于已付费用:

可以按付款时间段进行查询,或者全部查询

可以按照费用类型进行查询,或者全部查询

可以按照支付方进行查询,或者全部查询

可以按照收取方进行查询,或者全部查询

没有计费公式。所以,如果不考虑未来的扩展性的话,费用类型之间(“保险费”、“运输费”等四种类型)没有本质区别。

超高难度问题,现在已经无法画出领域模型。(大家多提意见,多多益善哈,如果板桥大哥能来就最好了:P)

    

1
blackman
2010-09-02 23:35
你先谈下你的想法,如何解决等等。

icethor
2010-09-11 01:06
抱歉,公司的网莫名其妙的上不了jdon了,让我郁闷了很久。。。

“已付费用”与“历史记录”之间有着一致性关系,这个关系如果不能妥善处理,那么日后就是灾难的根源,所以我觉得这个值应该是计算出来的。

同样,“待付费用”也是与“已付费用”和“应付费用”之间有着一致性的关系,通过以上两个已知量可以得出“待付费用”,所以也应该是计算出来的。

不过这个与建模可能没有很大联系?或者是我遗漏了什么类?感觉从用户输入得到的应该是“应付费用”和“历史记录”,而“计算已付费用”和“计算待付费用”都是应该有类担负这个职责。希望高人指点。

现在如果将费用类型(“保险费”、“运输费”等等)作为简单属性的话,感觉最麻烦的地方就是在“费用”的“已付”、“待付”等属性与“保险费”、“运输费”之间的正交关系,一旦费用类型出现业务逻辑,这种建模方式将很难进行修改。

Mayday!Mayday!

banq
2010-09-11 08:01
这个需求关键是要搞清楚需求边界,可变和不可变部分。

>费用类型包括:保险费、运输费、上门送货费、仓储费。(需求非常不稳定)

你在这里说需求非常不稳定,是不是意味着费用类型会不断增加变动呢?

>所有费用都有“应付费用”、“已付费用”、“待付费用”三项

那么这一段是否可以认为是需求的不变部分呢?

有了可变和不变区分,那么依据模式教给我们的定律:可变用继承或接口拓展,不变进行封装。估计如何建模你已经大概清楚。

icethor
2010-09-17 13:01
2010年09月11日 08:01 "banq"的内容
可变用继承或接口拓展,不变进行封装 ...

可变用继承或接口拓展大概明白了,但是“不变进行封装”是怎么做?还望详细告知。

另外昨天刚刚想到的,费用类型与已付应付,应该是play role还是is a?

猜你喜欢
2Go 1 2 下一页