6-1 sdust-Java-模擬主板、USB口、TypeC口、PS2口設備 (30 分))

@[TOC](6-1 sdust-Java-模擬主板、USB口、TypeC口、PS2口設備 (30 分))

題目描述

使用Java編碼設計實現模擬計算機硬件中的主板、USB口、TypeC口、PS2口及其組合方式。通常,計算機主板中提供了各種不同類型的對外接口,可以對接不同類型的設備。例如,可以接USB口的U盤、鼠標等,可以接口TypeC口的鼠標、鍵盤,可以接PS2口的鍵盤。要求:通過下面Main類中main方法給出的代碼及其註釋,設計相關的類、抽象類或接口(具體需要的類、接口或抽象類,根據程序樣例給出的代碼和註釋來編寫),使得main方法中的代碼能夠正確運行,且能夠實現樣例所示的輸入輸出功能。

Main類的main方法測試程序樣例:

import java.util.Scanner;
public class Main{
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String mainBoardModel = scan.next();//用戶輸入主板的型號
		String mousePS2Model = scan.next();//用戶輸入PS2口鼠標的型號
		String keyBoardPS2Model = scan.next();//用戶輸入PS2口鍵盤的型號
		String flashDiskModel = scan.next();//用戶輸入U盤的型號
		
		MainBoard mainboard = new MainBoard(mainBoardModel);//生成主板對象
		
		KeyBoardPS2 keyboard = new KeyBoardPS2(keyBoardPS2Model);//生成PS2口鍵盤對象
		mainboard.setPs2(keyboard);//將鍵盤接入主板的PS2口
		mainboard.inputFromPS2();//獲取從鍵盤錄入的數據(注意:是模擬從鍵盤錄入數據,不需要編碼利用Scanner接收數據)
		mainboard.setPs2(null);//拔出PS2口鍵盤
		
		MousePS2 mouse = new MousePS2(mousePS2Model);//生成PS2口的鼠標對象
		mainboard.setPs2(mouse);//將鼠標接入主板的PS2口
		mainboard.inputFromPS2();//獲取從鍵盤錄入的數據
		//////////////////////////////////////////////////////////
		FlashDisk flashdisk = new FlashDisk(flashDiskModel);//生成U盤對象
		mainboard.setUsb(flashdisk);//在主板上插入U盤的USB口
		mainboard.read();//從外接設備(USB或TypeC口設備上讀取數據,只要接入相關設備,則從該設備讀取數據)
		mainboard.setUsb(null);//拔下U盤:flashdisk
		
		mainboard.setTypeC(flashdisk);//將U盤:flashdisk插入主板的TypeC口(FlashDisk的對象同時支持USB和TypeC口)
		mainboard.read();//從外接設備(USB或TypeC口設備上讀取數據,只要接入相關設備,則從該設備讀取數據)
		
		MouseUSB mouseUSB = new MouseUSB();//生成USB鼠標
		mainboard.setUsb(mouseUSB);//在主板上插入USB鼠標的USB口
		
	    scan.close();
	}
}

/* 
答案
*/

輸入樣例:

MicroStar
A4TECH
Logitech
Kingston

輸出樣例:

MicroStar MainBoard:Get data from Logitech PS2 keyboard
MicroStar MainBoard:Get data from A4TECH PS2 Mouse
MicroStar MainBoard:Read data through Kingston USB U盤
MicroStar MainBoard:Read data through Kingston TypeC U盤

參考答案1

interface PCI{
	void start();
}

class MainBoard {
	private String mainBoardModel;
	private PCI o = null;
	
	public MainBoard(String mainBoardModel) {
		super();
		this.mainBoardModel = mainBoardModel;
	}
	
	public void setPs2(PCI o) {
		this.o = o;
	}
	
	public void setUsb(Object o) {
		if(o instanceof FlashDisk)
		{
			((FlashDisk) o).usb = true;
		}
		this.o = (PCI)o;
	}
	
	public void setTypeC(Object o) {
		if(o instanceof FlashDisk)
		{
			((FlashDisk) o).usb = false;
		}
		this.o = (PCI)o;
	}
	
	public void inputFromPS2() {
		System.out.print(mainBoardModel + " MainBoard:");
		o.start();
	}
	
	public void read() {
		System.out.print(mainBoardModel + " MainBoard:");
		o.start();
	}
}

class KeyBoardPS2 implements PCI{
	
	private String keyBoardPS2Model;

	public KeyBoardPS2(String keyBoardPS2Model) {
		super();
		this.keyBoardPS2Model = keyBoardPS2Model;
	}

	@Override
	public void start() {
		// TODO Auto-generated method stub
		System.out.println("Get data from " + keyBoardPS2Model + " PS2 keyboard");
	}	
}

class MousePS2 implements PCI{
	private String mousePS2Model;

	public MousePS2(String mousePS2Model) {
		super();
		this.mousePS2Model = mousePS2Model;
	}

	@Override
	public void start() {
		// TODO Auto-generated method stub
		System.out.println("Get data from " + mousePS2Model + " PS2 Mouse");
	}	
}

class FlashDisk implements PCI{
	private String flashDiskModel;
	public boolean usb = false;

	public FlashDisk(String flashDiskModel) {
		super();
		this.flashDiskModel = flashDiskModel;
	}

	@Override
	public void start() {
		// TODO Auto-generated method stub
		if(usb) {
			System.out.println("Read data through " + flashDiskModel + " USB U盤");
		}
		else {
			System.out.println("Read data through " + flashDiskModel + " TypeC U盤");
		}
	}	
}

class MouseUSB implements PCI{

	@Override
	public void start() {
		// TODO Auto-generated method stub
		
	}
}

參考答案2

interface PCI{
	void start();
}



class MainBoard {
	private String mainBoardModel;
	private PCI o = null;

	public MainBoard(String mainBoardModel) {
		super();
		this.mainBoardModel = mainBoardModel;
	}
	
	public void setPs2(PCI o) {
		this.o = o;
	}
	
	public void setUsb(PCI o) {
		if(o instanceof FlashDisk)
		{
			((FlashDisk) o).usb = true;
		}
		this.o = o;
	}
	
	public void setTypeC(PCI o) {
		if(o instanceof FlashDisk)
		{
			((FlashDisk) o).usb = false;
		}
		this.o = o;
	}
	
	public void inputFromPS2() {
		System.out.print(mainBoardModel + " MainBoard:");
		o.start();
	}
	
	public void read() {
		System.out.print(mainBoardModel + " MainBoard:");
		o.start();
	}
}

class KeyBoardPS2 implements PCI{
	
	private String keyBoardPS2Model;

	public KeyBoardPS2(String keyBoardPS2Model) {
		super();
		this.keyBoardPS2Model = keyBoardPS2Model;
	}

	@Override
	public void start() {
		// TODO Auto-generated method stub
		System.out.println("Get data from " + keyBoardPS2Model + " PS2 keyboard");
	}

	
	
}

class MousePS2 implements PCI{
	private String mousePS2Model;

	public MousePS2(String mousePS2Model) {
		super();
		this.mousePS2Model = mousePS2Model;
	}

	@Override
	public void start() {
		// TODO Auto-generated method stub
		System.out.println("Get data from " + mousePS2Model + " PS2 Mouse");
	}
	
	
}

class FlashDisk implements PCI{
	private String flashDiskModel;
	public boolean usb = false;

	public FlashDisk(String flashDiskModel) {
		super();
		this.flashDiskModel = flashDiskModel;
	}

	@Override
	public void start() {
		// TODO Auto-generated method stub
		if(usb) {
			System.out.println("Read data through " + flashDiskModel + " USB U盤");
		}
		else {
			System.out.println("Read data through " + flashDiskModel + " TypeC U盤");
		}
		
	}	
}

class MouseUSB implements PCI{

	@Override
	public void start() {
		// TODO Auto-generated method stub
		
	}
	
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章