是不是oo好像关系不大,
你的书目肯定是要存在数据库里面的
以书目编号为主键设计数据库
表BookProperty
字段
property ----char类型,A:旧书,B:新书,C:促销,D:特价
ratio ----折扣(折扣率或打折数额)。
discounttype ----1:乘折扣率打折,0:减折扣打折。折扣率表
A 0.3
B 1
C 5
D null
先对BookProperty做初始化,输入相应的费率,打折方式。
交易时根据书目property决定打折方式,为D时,跳出打折方式设置,让操作员输入。
你的书目肯定是要存在数据库里面的
以书目编号为主键设计数据库
表BookProperty
字段
property ----char类型,A:旧书,B:新书,C:促销,D:特价
ratio ----折扣(折扣率或打折数额)。
discounttype ----1:乘折扣率打折,0:减折扣打折。折扣率表
A 0.3
B 1
C 5
D null
先对BookProperty做初始化,输入相应的费率,打折方式。
交易时根据书目property决定打折方式,为D时,跳出打折方式设置,让操作员输入。
但是信息还是要用数据库来存放的。
产品类->子产品类->可能统一改变价格的同类产品
当然,每一个产品实例应该都可以override一个折扣方法
{
class class1
{
public void GetValue(Book b) //使用接口
{
Console.WriteLine(b.ReBate().ToString());
}
[STAThread]
static void Main(string[] args)
{
class1 c = new class1();
ComputerBook cb = new ComputerBook();
cb.Price = 50;
c.GetValue(cb); NewBook nb = new NewBook();
nb.Price = 50;
c.GetValue(nb); HotBook hb = new HotBook();
hb.Price = 50;
c.GetValue(hb); Console.ReadLine();
}
}
interface Book //定义接口
{
double ReBate();
}
class ComputerBook : Book //定义接口的实现
{
public int Price;
public double ReBate()
{
double result;
return result = Price * 0.75;
}
}
class NewBook : Book //定义接口的实现
{
public int Price;
public double ReBate()
{
double result;
return result = Price * 0.8;
}
}
class HotBook: Book //定义接口的实现
{
public int Price;
public double ReBate()
{
double result;
return result = Price * 0.9;
}
}
}
但根本不实用。
客户的需求肯定会变的,打折方式变了你的代码就去改一次么?
最好的方式当然是去让用户通过界面去改变数据库中的设置。
写实用的程序,不要总惦记oo。