@[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
}
}