实验:Java 面向接口的程序设计----编写程序模拟移动存储设备的读写,即计算机与U盘、MP3、移动硬盘等设备进行数据交换。

题目:

开发一个应用,模拟移动存储设备的读写,即计算机与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();
	}
}

你可能感兴趣的:(java,开发语言,servlet)