题目内容:
3.1 第一步:设计和实现以下类
(1)手机卡类 特征:卡类型、卡号、用户名、密码、账户余额、通话时长(分钟)、上网流量 行为:显示(卡号 + 用户名 + 当前余额)
(2)通话套餐类 特征:通话时长、短信条数、每月资费 行为: 显示所有套餐信息
(3)上网套餐类 特征:上网流量、每月资费 行为:显示所有套餐信息
(4)用户消费信息类 特征:统计通话时长、统计上网流量、每月消费金额
3.2 第二步:设计和实现以下枚举类 手机卡的类型总共有 3 种:大卡、小卡、微型卡
3.3 第三步:实体类的优化 将通话套餐类和上网套餐类中相同的特征和行为提取出来组成抽象套餐类。
3.4 第四步:创建并实现以下接口
(1)通话服务接口 抽象方法: 参数1: 通话分钟, 参数2: 手机卡类对象 让通话套餐类实现通话服务接口。
(2)上网服务接口 抽象方法: 参数1: 上网流量, 参数2: 手机卡类对象 让上网套餐类实现上网服务接口。
3.5 第五步:进行代码测试
编写测试类使用多态格式分别调用上述方法,方法体中打印一句话进行功能模拟即可。
思路分析:
1、首先有两个类
通话套餐类: 通话时长,通话单价,短信条数,打印套餐信息
上网套餐类:上网流量,流量单价,打印套餐信息
2、二者提取公共特征和行为做公共类,所以公共类的构成就是
特征:时长data和单价price
方法:打印套餐信息show()
由于两个子类中的show并不相同,因此将公共类中的show做抽象方法,公共类做成一个抽象类
3、这样两个子类继承了父类 中的特征,并重写show方法,分别打印自己的套餐信息
对三个类进行封装和重写
4、之后设置2个接口通话接口和上网接口,表示记录通话和上网的,动态的记录,消费还有通话上网时长等动态信息记录,有抽象方法为server
两个子类分别继承这两个接口,重写server方法,将其具体化
5、最后创建一个枚举类,表示手机卡类型,有大卡小卡和微型卡
6、此时一个抽象类,两个接口,两个具体实现的类已全部完成
7、接着创建一个手机卡的类,表示手机卡的所有属性
一个消费者类,表示消费的统计,变量有通话时长,流量,和总消费额
8、最后,将所有的类的show方法和server方法补充完整,在编写代码的过程中遇到的难点是变量值的修改,有点饶头,需要理清思路。
具体实现:
//Package.java
抽象类中,
成员变量:消费的量data 和 单价price
抽象方法:打印show方法
public abstract class Package {
//成员变量 data price 套餐的单价和个数
private int data;
private int price;
//无参构造
public Package() {
}
//有参构造
public Package(int data, int price) {
setPrice(price);
setData(data);
}
//get和set方法
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
//抽象成员方法:打印套餐信息 数据data 单价price
public abstract void show();
}
NetServer.java 和CallServer.java
接口
public interface NetServer {
//上网记录 变量有上网流量和手机卡
public abstract void server(int data,PhoneCard pc);
}
public interface CallServer {
//通话记录 变量有手机卡和通话时长
public abstract void