オブジェクト指向、インターフェイスの問題。

Q1
usb接続ができることを意味するインターフェイスUsbConnectable、
それを実装するクラスMouse、Memory、CardReaderを作成する。
そして、PCクラスを作成し、アプリケーションクラスにて実行例となるようなプログラムを作成する。

■インタフェース:UsbConnectable

<抽象メソッド>
usbConnect()

■一般クラス:Mouse(実装:UsbConnectable)

<実装メソッド>
public void usbConnect() {
System.out.println(“USB接続にてマウス操作ができます。”);
}
■一般クラス:Memory(実装:UsbConnectable)

<実装メソッド>
public void usbConnect() {
System.out.println(“USB接続にてデータを保存できます。”);
}
■一般クラス:CardReader(実装:UsbConnectable)

<実装メソッド>
public void usbConnect() {
System.out.println(“USB接続にてSDカードの読み書きができます。”);
}
■一般クラス:PC

<フィールド変数>
UsbConnectable device;

<メソッド>
public void execApp(){
System.out.println(“アプリケーションを実行する”);
}
public void usb(){
this.device.usbConnect();
}
public void setDevice(UsbConnectable device){
this.device=device;
}

 ■アプリケーションクラス:PCApp
実行例の処理ができるよう記述する。

[実行例]

0.アプリ実行,1.USBデバイス接続,2.終わり>0
アプリケーションを実行する
0.アプリ実行,1.USBデバイス接続,2.終わり>1
どのデバイスを接続しますか0.マウス、1.メモリー、2.カードリーダー>0
USB接続にてマウス操作ができます。
0.アプリ実行,1.USBデバイス接続,2.終わり>1
どのデバイスを接続しますか0.マウス、1.メモリー、2.カードリーダー>1
USB接続にてデータを保存できます。
0.アプリ実行,1.USBデバイス接続,2.終わり>1
どのデバイスを接続しますか0.マウス、1.メモリー、2.カードリーダー>2
USB接続にてSDカードの読み書きができます。
0.アプリ実行,1.USBデバイス接続,2.終わり>2
アプリケーションを終了します。

一般クラス,インターフェイス

public interface UsbConnectable {
	void usbConnect();
}
class Mouse implements UsbConnectable{
	@Override
	public void usbConnect() {
		System.out.println("USB接続にてマウス操作ができます。");	
	}
}
class Memory implements UsbConnectable{
	@Override
	public void usbConnect() {
		System.out.println("USB接続にてデータを保存できます。");
	}	
}
class CardReader implements UsbConnectable{
	@Override
	public void usbConnect() {
		System.out.println("USB接続にてSDカードの読み書きができます。");
	}	
}
class PC{
	private UsbConnectable device;
	public void execApp(){
		System.out.println("アプリケーションを実行する");
	}
	public void usb(){
		this.device.usbConnect();
	}
	public void setDevice(UsbConnectable device){
		this.device=device;
	}	
}

アプリケーションクラス

import java.util.Scanner;
public class PCApp {
	public static void main(String[] args) {
		Scanner s=new Scanner(System.in);
		UsbConnectable[] devices={
				new Mouse(),
				new Memory(),
				new CardReader()
			};
		PC pc=new PC();
		while(true){
			System.out.print("0.アプリ実行,1.USBデバイス接続,2.終わり>");
			int select=s.nextInt();
			switch(select){
			case 0:
				pc.execApp();
				break;
			case 1:
				System.out.print("どのデバイスを接続しますか0.マウス、1.メモリー、2.カードリーダー>");
				int num=s.nextInt();
				pc.setDevice(devices[num]);
				pc.usb();
				break;
			case 2:
				System.out.println("アプリケーションを終了します。");
				s.close();
				return;
			}
		}
	}
}