实验:Java 面向接口的程序设计

您所在的位置:网站首页 硬盘接口怎么调 实验:Java 面向接口的程序设计

实验:Java 面向接口的程序设计

2023-03-22 22:57| 来源: 网络整理| 查看: 265

题目:

开发一个应用,模拟移动存储设备的读写,即计算机与U盘、MP3、移动硬盘等设备进行数据交换。包括:

1.U盘(UDis)、MP3、移动硬盘(FlashDisk)等设备类:要求每种设备类型都是一个单独的类,都能提供读、写(read、write)方法,读写方法的内容不同;MP3Player还有一个playMusic方法。(用System.out.println()输出不同内容,以标识方法内容不同)

2.Computer类:能调用移动设备的方法,进行数据读、写;

3.Work主类:包含main函数,模拟工作场景:新来一台电脑;新来上述移动设备;依次接入上述移动设备、读写数据;

 

要求1.不使用抽象类、接口,实现上述需求;2.使用接口实现上述需求;

3、假设新增一种移动设备IdeDisk,请为其编写程序,加入到上述两套程序中,并运行之;

4、尝试新增一种移动设备OldDisk,其读写方法分别为du、xie;请为其编写程序,加入到上述两套程序中,并运行之;

二、不使用抽象类、接口,实现需求

1.需求分析:因为不使用抽象类和接口,那就将需要的类都声明出来,并一一声明对象。会有Work类、Computer类、UDis类、MP3类、FlashDisk类、IdeDisk类、OldDisk类。在computer类中实现调用移动设备的方法,进行数据读、写;在work类中模拟工作场景

2.代码

//各类分别放在不同的文件中 //UDis.java public class UDis { void write() { System.out.println("U盘开始写入数据!"); System.out.println("U盘写入数据完成!"); } void read() { System.out.println("U盘开始读取数据!"); System.out.println("U盘读取数据完成!"); } } //FlashDisk.java public class FlashDisk { void write() { System.out.println("FlashDisk开始写入数据!"); System.out.println("FlashDisk写入数据完成!"); } void read() { System.out.println("FlashDisk开始读取数据!"); System.out.println("FlashDisk读取数据完成!"); } } //MP3.java public class MP3 { void write() { System.out.println("MP3开始写入数据!"); System.out.println("MP3写入数据完成!"); } void read() { System.out.println("MP3开始读取数据!"); System.out.println("MP3读取数据完成!"); } void playMusic() { System.out.println("MP3开始播放音乐!"); System.out.println("MP3结束播放音乐!"); } } //IdeDisk.java public class IdeDisk { void write() { System.out.println("IdeDisk开始写入数据!"); System.out.println("IdeDisk写入数据完成!"); } void read() { System.out.println("IdeDisk开始读取数据!"); System.out.println("IdeDisk读取数据完成!"); } } //OldDisk.java public class OldDisk { void xie() { System.out.println("OldDisk 开始写入数据!"); System.out.println("OldDisk 写入数据完成!"); } void du() { System.out.println("OldDisk 开始读取数据!"); System.out.println("OldDisk读取数据完成!"); } } //Computer.java public class Computer{ Computer(){ String str = "有一台新电脑"; System.out.println(str); } void insertUDis() { String str = "****************************************"; System.out.println(str); System.out.println("插入u盘"); } void insertMP3() { String str = "****************************************"; System.out.println(str); System.out.println("插入MP3"); } void insertFlashDisk() { String str = "****************************************"; System.out.println(str); System.out.println("插入移动硬盘"); } void insertIdeDisk() { String str = "****************************************"; System.out.println(str); System.out.println("插入IdeDisk"); } void insertOldDisk () { String str = "****************************************"; System.out.println(str); System.out.println("插入OldDisk "); } void readUDis(UDis upan) { String str = "****************************************"; System.out.println(str); upan.read(); } void writeUDis(UDis upan) { String str = "****************************************"; System.out.println(str); upan.write(); } void readMP3(MP3 mp3) { String str = "****************************************"; System.out.println(str); //mp3.write(); mp3.read(); //mp3.playMusic(); } void writeMP3(MP3 mp3) { String str = "****************************************"; System.out.println(str); mp3.write(); //mp3.read(); //mp3.playMusic(); } void playMusic(MP3 mp3) { String str = "****************************************"; System.out.println(str); //mp3.write(); //mp3.read(); mp3.playMusic(); } void readFlahDisk(FlashDisk disk) { String str = "****************************************"; System.out.println(str); //disk.write(); disk.read(); } void writeFlahDisk(FlashDisk disk) { String str = "****************************************"; System.out.println(str); disk.write(); //disk.read(); } void readIdeDisk(IdeDisk disk2) { String str = "****************************************"; System.out.println(str); //disk.write(); disk2.read(); } void writeIdeDisk(IdeDisk disk2) { String str = "****************************************"; System.out.println(str); disk2.write(); //disk.read(); } void readOldDisk (OldDisk disk3) { String str = "****************************************"; System.out.println(str); //disk.write(); disk3.du(); } void writeOldDisk (OldDisk disk3) { String str = "****************************************"; System.out.println(str); disk3.xie(); //disk.read(); } } //Work.java public class Work { public static void main(String args[]) { Computer PC = new Computer(); System.out.println("有几个新设备"); UDis upan = new UDis(); MP3 mp3 = new MP3(); FlashDisk disk = new FlashDisk(); IdeDisk disk2 = new IdeDisk(); OldDisk disk3 = new OldDisk(); PC.insertUDis(); PC.insertMP3(); PC.insertFlashDisk(); PC.insertIdeDisk(); PC.insertOldDisk(); PC.readMP3(mp3); PC.writeMP3(mp3); PC.playMusic(mp3); PC.readFlahDisk(disk); PC.writeFlahDisk(disk); PC.readUDis(upan); PC.writeUDis(upan); PC.readIdeDisk(disk2); PC.writeIdeDisk(disk2); PC.readOldDisk(disk3); PC.writeOldDisk(disk3); } }

三、使用接口实现上述需求

1.需求分析:

有work类、Computer类、UDis类、MP3类、FlashDisk类、IdeDisk类、OldDisk类。使用接口,因为UDis类、MP3类、FlashDisk类、IdeDisk类等设备具有类似的方法(write和read),则设计一个Device接口,包含write()和read()方法,各设备通过实现接口获得接口中的方法并重写接口中的方法,MP3Player类中添加PlayMusic方法。在Computer类中将实现接口的类的对象的引用赋值给接口变量,实现接口回调,实现多态。

2.原理:在Device接口中声明read()和write方法,UDis类、MP3Player类、FlashDisk类、IdeDisk类、OldDisk类会实现Device接口,并重写read()和write()方法,就比如UDis类将write()的方法体重写成--System.out.println("U盘开始写入数据!");System.out.println("U盘写入数据完成!");--,MP3Player类添加playMusic()方法。在Work类中首先声明Computer对象,再一一实现各设备对象的声明并将对象的引用传递给在Computer类中的接口变量disk,而在Computer类中利用接口变量disk实现接口回调实现多态。而对于OldDisk,由于其方法不同于其他设备

,它通过OldDiskAdapter类进行转换

3.代码:

/各类存放在同一项目的不同类文件中 //Device.java package task2; public interface Device { void read(); void write(); } //UDis.java package task2; public class UDis implements Device { public void write(){//不能省略public System.out.println("U盘开始写入数据!"); System.out.println("U盘写入数据完成!"); } public void read() { System.out.println("U盘开始读取数据!"); System.out.println("U盘读取数据完成!"); } } //FlashDisk.java package task2; public class FlashDisk implements Device { public void write() { System.out.println("FlashDisk开始写入数据!"); System.out.println("FlashDisk写入数据完成!"); } public void read() { System.out.println("FlashDisk开始读取数据!"); System.out.println("FlashDisk读取数据完成!"); } } //MP3Player.java package task2; public class MP3Player implements Device { public void write() { System.out.println("MP3Player开始写入数据!"); System.out.println("MP3Player写入数据完成!"); } public void read() { System.out.println("MP3Player开始读取数据!"); System.out.println("MP3Player读取数据完成!"); } public void playMusic(){ System.out.println("MP3开始播放音乐!"); System.out.println("MP3结束播放音乐!"); } } //IdeDisk.java package task2; public class IdeDisk implements Device{ public void write() { System.out.println("IdeDisk开始写入数据!"); System.out.println("IdeDisk写入数据完成!"); } public void read() { System.out.println("IdeDisk开始读取数据!"); System.out.println("IdeDisk读取数据完成!"); } } //OldDisk.java package task2; public class OldDisk { public void xie(){//不能省略public System.out.println("OldDisk开始写入数据!"); System.out.println("OldDisk写入数据完成!"); } public void du() { System.out.println("OldDisk开始读取数据!"); System.out.println("OldDisk读取数据完成!"); } } //OldDiskAdapter.java package task2; public class OldDiskAdapter implements Device{ private OldDisk oldDisk; OldDiskAdapter(OldDisk oldDisk1){ this.oldDisk = oldDisk1; } public void read() { oldDisk.du(); } public void write() { oldDisk.xie(); } } //Computer.java package task2; public class Computer { Computer(){ String str = "有一台新电脑"; System.out.println(str); } Device disk; public void insertDevice(Device disk) { String str = "****************************************"; System.out.println(str); System.out.println("插入一个设备"); this.disk = disk; } public void read() { disk.read(); } public void write() { disk.write(); } } //Work.java package task2; public class Work { public static void main(String args[]) { Computer PC = new Computer(); PC.insertDevice(new UDis()); PC.read(); PC.write(); PC.insertDevice(new FlashDisk()); PC.read(); PC.write(); MP3Player mp3 = new MP3Player(); PC.insertDevice(mp3); PC.read(); PC.write(); mp3.playMusic(); PC.insertDevice(new IdeDisk()); PC.read(); PC.write(); PC.insertDevice(new OldDiskAdapter(new OldDisk())); PC.write(); PC.read(); } }



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3