この問題を解くためには…
 → 応用編第4日目参照

問題4:インターフェース

prob4-1.(難易度:★)

以下のプログラムが、期待された実行結果通りにプログラムが動くように、インターフェースICellPhone、IComputer、IMailerを実装しなさい。

probex4-1:CellPhone.java
package problemex4;

public class CellPhone implements IPhone,IMailer,IComputer{
	//	メールを送信する
	public void sendMail(){
		System.out.println("メールを送る");
	}
	//	メールを受信する
	public void recieveMail(){
		System.out.println("メールを受信する");
	}
	//	webを閲覧する
	public void borwseWeb(){
		System.out.println("ウェブを閲覧する");
	}
	//	ゲームをする
	public void playGame(){
		System.out.println("ゲームをする");
	}
	//	電話をかける
	public void callPhone(){
		System.out.println("電話を掛ける");
	}
	//	電話を受ける
	public void recievePhone(){
		System.out.println("電話を受ける");
	}

}
Problemex4_1.java
package problemex4;

public class Problemex4_1 {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		CellPhone cp = new CellPhone();
		funcPhone(cp);
		funcMailer(cp);
		funcComputer(cp);
	}
	//	電話としての処理
	public static void funcPhone(IPhone phone){
		phone.callPhone();		//	電話を掛ける
		phone.recievePhone();	//	電話を受ける
	}
	//	メーラーとしての処理
	public static void funcMailer(IMailer mailer){
		mailer.sendMail();		//	メールを送信する
		mailer.recieveMail();	//	メールを受信する
	}
	//	コンピュータとしての処理
	public static void funcComputer(IComputer computer){
		computer.playGame();	//	ゲームをする
		computer.borwseWeb();	//	ウェブを閲覧する
	}

}

期待される実行結果
電話を掛ける
電話を受ける
メールを送る
メールを受信する
ゲームをする
ウェブを閲覧する

prob4-2.(難易度:★)

以下のプログラムが、期待された実行結果通りにプログラムが動くように、インターフェースIAlarm、IClockおよび、Problemex4_2のmainメソッド内を実装しなさい。

probex4-2:AlarmClock.java
package problemex4;

//	アラームつき時計クラス
public class AlarmClock implements IClock,IAlarm{
	public void alarm(){
		System.out.println("アラームを鳴らす");
	}
	public void setAlarm(){
		System.out.println("アラームをセットする");
	}
	public void stopAlarm(){
		System.out.println("アラームを止める");
	}
	public void showTime(){
		System.out.println("時刻を知る");
	}
	public void adjustTime(){
		System.out.println("時刻を修正する");
	}

}

Problemex4_2.java
package problemex4;

public class Problemex4_2 {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		AlarmClock ac = new AlarmClock();	//	アラーム付き時計クラスのインスタンスを生成
	}
	//	アラームとしての処理
	public static void funcAlarm(IAlarm alarm){
		alarm.setAlarm();	//	アラームのセット
		alarm.alarm();		//	アラームを鳴らす
		alarm.stopAlarm();	//	アラームを止める
	}
	//	時計としての処理
	public static void funcClock(IClock clock){
		clock.adjustTime();	//	時間を調整する
		clock.showTime();	//	時間を表示する
	}

}
期待される実行結果の例
アラームをセットする
アラームを鳴らす
アラームを止める
時刻を修正する
時刻を知る