- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件设计模式实验3
实验三 策略模式
请用C++、Java、C#或VB.NET任意一种面向对象语言实现
一个商场收银软件,要求营业员根据客户购买商品单价和数量,
向客户收费。
参考伪代码:
商场收银系统v1.0关键伪代码如下:
//声明一个double变量total来计算总计
double?total?=?0.0d;
private?void?btnOk_Click(object?sender,?
EventArgs?e) {
double?totalPrices=Convert.ToDouble(txtPrice.Text)?*?Convert.ToDouble(txtNum.Text);
total?=?total?+?totalPrices;
? lbxList.Items.Add(“单价:”+txtPrice.Text+“?数量: +txtNum.Text+?合计:+totalPrices.ToString());
? lblResult.Text?=?total.ToString();
}
2、增加需求,可实现各种折扣的需求,如打5、6、7、8折扣等,系统如何变化?。
参考伪代码:
double?total?=?0.0d; //总计
private?void?form1_Load(object?sender,?EventArgs?e) {
cbxType.Items.Addrange(new object[] {“正常收费”, “8折”, “7折”});
cbxType.SelectedIndex=0; //初始化折扣下拉框
}
private?void?btnOk_Click(object?sender,?EventArgs?e) {
double?totalPrices=0d;
switch(cbxType.SelectedIndex){ //根据选项决定打折额度
case 0: totalPrices=Convert.ToDouble(txtPrice.Text)?*
? Convert.ToDouble(txtNum.Text); break;
case 1: totalPrices=Convert.ToDouble(txtPrice.Text)?*
? Convert.ToDouble(txtNum.Text)*0.8; break;
case 2: totalPrices=Convert.ToDouble(txtPrice.Text)?*
? Convert.ToDouble(txtNum.Text)*0.7; break;
}
total?爐otal?爐otalPrices;
ert.? lbxList.Items.Add(“单价:”+txtPrice.Text+“?数量: +txtNum.Text+?合计:+totalPrices.ToString());
? lblResult.Text?=?total.ToString();
}
3、现在需求又增加了:商场的活动加大,需要有满300返100的促销算法,应该怎么办?所以必须学会抽象。面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。简单工厂模式的实现如下。
参考伪代码:
现金收费抽象类(CashSuper)
abstract class CashSuper{
public abstract double acceptCash(double money);
}
正常收费子类(CashNormal)
class CashNormal :CashSuper{
public override double acceptCash(double money){
return money;
文档评论(0)