文档详情

软件设计模式实验3.doc

发布:2017-12-18约6.94千字共6页下载文档
文本预览下载声明
实验三 策略模式 请用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;
显示全部
相似文档