05-抽象类和接口

【程序1】
(1)定义一个接口Assaultable(可攻击的),该接口有一个
抽象方法attack()。
(2)定义一个接口Mobile(可移动的),该接口有一个抽象
方法move()。
(3)定义一个抽象类Weapon,实现Assaultable接口,但并没
有给出方法的具体实现。
(4)定义3个类:Tank,Flighter,MissileTurret都继承自
Weapon,分别给出attack()方法的不同实现。
Tank和Flighter类还实现了Mobile接口,也给出了
move()方法的不同实现。
(5)写一个类Army,代表一支军队,这个类有一个属性
Weapon数组w(用来存储该军队所拥有的所有武器)
该类还提供一个构造方法,在构造方法里通过传一个int
类型的参数来限定该类所能拥有的最大武器数量,并用这
一大小来初始化数组w。该类还提供一个方法
addWeapon(Weaponwa),表示把参数wa所代表的武器加入到
数组w中。在这个类中还定义两个方法attackAll()让w数
组中的所有武器攻击;以及moveAll()让w数组中的所有可
移动的武器移动。
(6)写一个主方法去测试以上程序。


//===================================================================
【程序2】
继承,多态,接口练习题
这道题充分体现了接口的意义,

实现以下功能:
这是一个关于装配汽车的问题,我们这里只研究何如通过程
序来模拟汽车装配发动机。
1. 设计一个发动机接口(IEngine),需要提供如下功能:
(1).启动(start)
(2)停止(stop)
(3)加速(speedup)
提示:设计接口的意义在于只要发动机实现了这些功能就
可以装在我的汽车上

2. 设计两个发动机满足以上功能.
第一个发动机叫"YAMAHA",实现功能:
a. 启动方法中显示"YAMAHA启动,速度60"。
b. 停止方法中显示"YAMAHA停止,速度0".
c. 加速方法中显示"YAMAHA加速,速度80".

第二个发动机叫"HONDA",实现功能:
a. 启动方法中显示"HONDA启动,速度40"。
b. 停止方法中显示"YAMAHA停止,速度0".
c. 加速方法中显示"YAMAHA加速,速度120".

3. 设计一个汽车类(Car),汽车应该有一个属性是代表发动机的
(也就是成员变量是发动机,想一下应该用IEngine,YAMAHA还
是HONDA作为成员变量). 然后有一个方法用来测试发动机的
性能,叫testEngine().

这个方法里主要有以下内容:
测试发动机启动
测试发动机加速
测试发动机停止
(提示:也就是在方法中调用发动机的三个方法)

4. 在现实生活中,我买了一辆车(提示:main中新建了一个汽车类),
然后我首先把一个YAMAHA的发动机装在了我的汽车上(提示:新建了
一个YAMAHA对象,),然后测试一下发动机(提示:调用testEngine())。
然后我发现我不喜欢YAMAHA的发动机,于是

我换了一个HONDA的发动机,
然后重新测试一下。

思考以下问题:
1. 如果发动机类不采用接口的方式,该怎么设计这样一个模型。
2. 同学们自己尝试着给自己的汽车装上不同样子的车门。


//===================================================================
【程序3】
使用面向对象的思想设计一个即时战略游戏的类结构
主要的类和接口如下:
1. 人口类: 抽象类,实现可移动接口和可进攻的接口
属性:生命值,攻击力,占用人口个数,消耗资源数
子类: 农民 -- 可以创建建筑
机枪兵
坦克
飞机

2. 资源类
属性:封装了一个整形的数组,包含两个元素,分别代表水晶资源和油矿资源
方法: int getDiamond() ;void setDiamond() ; void setOil() ; int getOil()

3. 建筑类(抽象类)
属性:生命值,销毁资源
子类: 指挥中心--创建农民,实现可以升降的接口
兵营--创建机枪兵,实现可升降的接口
工厂--创建坦克,实现可升降接口
飞机场--创建飞机,实现可升降的接口
供应站--每个供应站可以供应8个人口

4. 玩家类
属性:玩家的名称,玩家的最大人口数,玩家的当前人口数,玩家的资源值

5. 可移动接口
方法:move()

6. 可进攻接口
方法: attack();

7. 可升降接口
方法:uprising()
downLanding()

相关文档
最新文档