实验项目C、面向抽象和面向接口编程
一、实验目的
★专题:继承基础和面向抽象编程★
1、掌握继承的使用。
2、掌握Object 类 的基本用法。
3、理解和掌握抽象类的用法。
4、理解final关键字。
5、掌握和理解多态的运用。
★专题:接口基础和面向接口编程★
1、掌握接口的使用。
2、掌握和理解接口实现多态的运用。
3、理解和掌握匿名类的用法。
4、初步了解JDK8新特性和lambda 表达式 。
二、实验内容和主要步骤
★专题:继承基础和面向抽象编程★
继承基础实验Object类使用抽象类和抽象方法继承机制实现的多态★专题:接口基础和面向接口编程★
接口基础接口机制的多态基础面向接口编程匿名类[选做]函数式接口和lambda表达式三、实验结论和思考
1、问题:开发一个应用,模拟计算机对移动 存储 设备的读写,即移动存储设备有U盘、手机卡、移动硬盘、闪卡等设备。
作答要求:
(1)概要描述你采用何种方法来模拟该应用。采用该方案的理由是什么?
答:采用面向接口编程来模拟,通过编写接口去抽象设计数据的读与写方法,再编写不同设备的实现类去重写接口方法,节省代码。最后设计和编写计算机类,模拟调用具有数据交换的外部设备: u盘 、手机卡等,当需要再增添设备时,只需添加实现类去重写接口的读写方法,再在计算机类中调用即可,减少代码冗杂度,使得代码的实现更加灵活。
(2)在下面粘贴实现的各代码文件内容。注意标示和用文字描述清楚。
答:
import static java.lang.System.out;
interface IExtDevice{
void read();
void write();
}
class UDisk implements IExtDevice{
@Override
public void read() {
out.println("读U盘...End");
}
@Override
public void write() {
out.println("写入U盘...End");
}
}
class SIMCard implements IExtDevice{
@Override
public void read() {
out.println("读手机卡...End");
}
@Override
public void write() {
out.println("写入手机卡...End");
}
}
class MobileHDD implements IExtDevice{
@Override
public void read() {
out.println("读移动硬盘...End");
}
@Override
public void write() {
out.println("写入移动硬盘...End");
}
}
class FlashCard implements IExtDevice{
@Override
public void read() {
out.println("读闪卡...End");
}
@Override
public void write() {
out.println("写入闪卡...End");
}
}
class Mycomputer{
private IExtDevice extDev;
IExtDevice getExtDev() {
return extDev;
}
public void setExtDev(IExtDevice extDev) {
this.extDev=extDev;
}
public void readDate() {
extDev.read();
}
public void writeDate() {
extDev.write();
}
}
public class APPTest {
public static void main(String[] arg) {
Mycomputer computer=new Mycomputer();
IExtDevice UDisk=new UDisk();
IExtDevice SIMCard=new SIMCard();
IExtDevice MobileHDD=new MobileHDD();
IExtDevice FalshCard=new FlashCard();
out.println("***接入u盘");
computer.setExtDev(UDisk);
computer.readDate();
computer.writeDate();
out.println("==========");
out.println("***接入手机卡");
computer.setExtDev(SIMCard);
computer.readDate();
computer.writeDate();
out.println("==========");
out.println("***接入移动硬盘");
computer.setExtDev(MobileHDD);
computer.readDate();
computer.writeDate();
out.println("==========");
out.println("***接入闪卡");
computer.setExtDev(FalshCard);
computer.readDate();
computer.writeDate();
out.println("==========");
}
}
java
(3)给出部分模拟执行的截图(至少2张)。
答:



2、程序评价和改进。
问题背景:编程模拟和表达老虎Tiger和猫咪Cat等具体种类的生物都是一种动物。即它们都具有共同的名字属性name和运动行为run,只不过具体的名字叫法不同,运动行为的具体方式也不同。比如Tiger可以叫“一只东北虎”等,它是“在森林里猎物”,Cat可以叫“一只宠物猫”,它是“在沙发上卖萌”。为简单起见,模拟程序系统暂时只考虑运动行为run,将来该模拟程序系统可能还要扩展支持更多动物的特征。
版本0.9:下面是一个实现,暂且称为v0.9。



问题:请用 面向对象 思想和技术简单评价该版本的程序实现,并给出一个你认为更好的实现。
作答要求:
(1)用面向对象思想和技术简单评价版本0.9的程序实现,指出其不足。
答:通过建立两个类Tiger和Cat,各自定义了局部变量name和run()方法,后编写公有测试类AnimalTest去新建Tiger对象和Cat对象去调用run()方法,实现功能。不足:当添加的动物对象够多时,就得再新建很多个类,新建多个构造方法去标示name,以及多个run()方法,提高了代码的冗杂度。
(2)把你的改进版本实现的代码有条理的粘贴到下面。
答:
import static java.lang.System.*;
abstract class Animal {
public abstract String run();
}
class Cat extends Animal{
public String run(){
return ("一只猫在沙发上卖萌");
}
}
class Tiger extends Animal{
public String run(){
return ("一只东北虎在森林里猎食n" );
}
}
public class AnimalTest {
public static void main(String[] args) {
Animal animal1=new Cat();
out.println(animal1.run());
Animal animal2=new Tiger();
out.println(animal2.run());
}
}
java
(3)简述改进版本的合理性。
答:通过构建一个抽象类Animal,抽象类里构造了一个抽象方法run(),供子类Cat,Tiger去继承重写其抽象方法,若是还需要添加多个动物,直接新建个子类去继承父类Animal去重写其抽象方法即可,降低了代码量,降低了代码的冗杂度。
四、实验心得(必须填写)
在模拟计算机对移动存储设备的读写实现代码的过程中,我仔细思考了很多方法去想怎么实现功能,最后我联想到了面向接口的方法来模拟,因为通过编写接口去抽象设计数据的读与写方法,再编写不同设备的实现类去重写接口方法,节省代码。最后设计和编写计算机类,模拟调用具有数据交换的外部设备:u盘、 手机 卡等,当需要再增添设备时,只需添加实现类去重写接口的读写方法,再在计算机类中调用即可,减少代码冗杂度,使得代码的实现更加灵活。最终代码的设计和完美实现让我欢欣雀跃,获益良多。
相关知识
面向对象编程——以猫狗宠物商店出发
面向对象编程题汇总
JavaSE之面向对象编程
Java面向对象
Java接口在开发中的作用(interface)
面向对象编程答案3
java特性封装、抽象、继承、多态理论
面向对象编程:宠物与犬类的Python实现详解
Python基本思想——面向对象编程
java面向对象(推荐看一本书java编程思想)
网址: 实验项目C、面向抽象和面向接口编程 https://www.mcbbbk.com/newsview1361037.html
| 上一篇: 多多宠物翻译app |
下一篇: 如何使自己不怕猫 |
推荐分享
- 1养玉米蛇的危害 28694
- 2狗交配为什么会锁住?从狗狗生 7180
- 3我的狗老公李淑敏33——如何 6236
- 4豆柴犬为什么不建议养?可爱的 4637
- 5南京宠物粮食薄荷饼宠物食品包 4563
- 6中国境内禁养的十大鸟种,你知 4429
- 7湖南隆飞尔动物药业有限公司宠 4259
- 8自制狗狗辅食:棉花面纱犬的美 4257
- 9家养水獭多少钱一只正常 4212
- 10广州哪里卖宠物猫狗的选择性多 4122
