OOP之我出题、你来做——大观园的工钱

OOP之我出题、你来做——大观园的工钱_第1张图片

【编程练习】面向对象编程之行为型设计模式

大观园的工钱

作者:罗胜金【版权所有,转载请注明原作者】

大观园内,凤姐身体有恙,连日不见得好,只得把管家重任托付于探春。转眼就是月末,探春姑娘打开账本,准备给贾府上下的丫鬟、奴仆们算工钱,当她看到账本上旁注的工钱计算规则,不禁蹙眉。

你道为何?原来,大观园内,下人的工钱计算相当繁琐,大致有如下三个规则:

其一,下人计算工钱时,分别有一个例钱因子,一个打赏因子,每位下人各各不同。
例如:
晴雯的例钱因子,是逢1、3、5...单月为900钱,逢2、4、6...双月为800钱;打赏因子固定为500钱。
麝月的例钱因子,是固定为600钱;打赏因子,则是上半年为400钱,下半年为700钱。
袭人的例钱因子,则是1、3季度为一吊钱(1000钱),2、4季度为一吊钱加500钱(1500钱);打赏因子,固定是两吊钱(2000钱)。
...

其二,同一个下人,在伺候不同的主子时,所得工钱不同,每个主子分别有自己的工钱算法。
例如:
宝玉出手阔绰,每月支出工钱时,是把下人的例钱因子加上打赏因子,再乘以8倍。
老太太(贾母)也算大方,每月支出工钱时,是在下人的例钱因子和打赏因子中,取大的那个数,再乘以10倍。
王夫人比较小气,每月支出工钱时,是在下人的例钱因子和打赏因子中,取小的那个数,再乘以5倍。
贾政老爷,每月是把下人的例钱因子乘以4倍,打赏因子乘以2倍,二者相加作为工钱。
...

其三,自从贾政发现怡红院中,宝玉整天和晴雯等丫头厮混在一起、不学无术,大为光火,于是在大观园内施行新规,丫鬟、奴仆们伺候哪个主子,不再固定,而是每月随机确定。
举例说明:假如10月份,晴雯姑娘被随机抽中去伺候贾政贾老爷,那么晴雯的当月工钱是这么计算的:
例钱因子,10月份是双月,因此是800钱;打赏因子是500钱。因此结合贾老爷的算法,晴雯工钱总数是800*4+500*2=4200钱。
...

探春沉思半晌,想到每个月都要这般细算一番,好生头痛,因此决定雇你写一个软件,帮她计算每月丫鬟、奴仆们的工钱。要求如下:
1、只需给出配对的下人和主子,便可自动统计出这个下人的当月工钱。
2、新增主子或新增下人时,不可改动原有算法,也不可改动原有数据结构。
3、方式一:使用面向对象方式实现。
4、方式二(可选):使用函数组合方式实现,并比较与面向对象方式的差异、优劣。
5、使用TDD方式开发,要求有足够的自动化测试用例。

参考类图:

OOP之我出题、你来做——大观园的工钱_第2张图片
大观园的工钱-类图

你可能感兴趣的:(OOP之我出题、你来做——大观园的工钱)