インタフェース 練習問題

記事上広告

今回の練習問題は第4章のインタフェース(4-12)の内容となっています。

examフォルダ内にファイルは保存してください。(階層→c:\work\exam)

インタフェース練習問題

【Java】インタフェース練習問題

以下の指示に従ってプログラミングを行ってください。また、プログラム内にもコメントで指示がありますので、コメントの下にプログラミングを行ってください。examフォルダ内に「Human.java」「ICharacter.java」「Exam1009.java」で保存してください。
保存後、「Exam1009.java」をコンパイルおよび実行を行ってください。

なお、HumanはICharacterを実装して記述して下さい。

指示1 ICharacterインタフェースは以下の表を参考に作成してください

インタフェース名
ICharacter
修飾子 メソッド名 戻り値の型 引数 処理内容
public abstract setName void String name 抽象メソッドの為なし
public abstract getName String なし 抽象メソッドの為なし
public abstract getType String なし 抽象メソッドの為なし
public abstract speedCorrection void int value 抽象メソッドの為なし
public abstract printStatus void なし 抽象メソッドの為なし

※public abstractは記述しなくても自動的に付加されます

指示2 Human.javaは以下のように記述し、コメントを参考にxxxxxxの部分を埋めてください

指示3 Exam1009.javaは以下のように記述

実行結果

C:\work\exam>javac Exam1009.java

C:\work\exam>java Exam1009
タイプ:人間
名前:ななしさん
職業:なし
速度:16km/h
タイプ:人間
名前:鈴木さん
職業:陸上選手
速度:28km/h

ヒント

Human.javaのメソッドxxxxxxの部分を一部紹介します

練習問題の参考図解

練習問題は以下のイメージを元にインタフェースとクラスを作成しています。

HumanクラスはICharacterインタフェースを実装することにより、4つのメソッドの処理を記述しなければなりません。言い換えると、インタフェースで用意された設計(メソッドのシグネチャ)を元にクラスを作成することになります。

インタフェース練習問題 追加

以下の指示に従ってプログラミングを行ってください。また、プログラム内にもコメントで指示がありますので、コメントの下にプログラミングを行ってください。examフォルダ内に「Human.java(作成済み)」「ICharacter.java(新しく作成)」「Exam1009.java(作成済み)」で保存してください。
保存後、「Exam1009.java」をコンパイルおよび実行を行ってください。

なお、HumanはIWearを実装して記述して下さい。

指示1 IWearインタフェースは以下の表を参考に作成してください

インタフェース名
IWear
修飾子 メソッド名 戻り値の型 引数 処理内容
public abstract wearClothes void String type 抽象メソッドの為なし
public abstract wearShoes void String type 抽象メソッドの為なし
public abstract wearGlasses void String type 抽象メソッドの為なし

※public abstractは記述しなくても自動的に付加されます

指示2 HumanクラスにIWearインタフェース実装し、以下のようなフィールドと実装メソッドを追加してください

追加するフィールドおよび実装メソッド
クラス名
Human
修飾子 フィールド名 初期値
private clothesType String なし
private shoesType String なし
private glassesType String なし
修飾子 メソッド名 戻り値の型 引数 処理内容
public wearClothes void String type 引数で指定された服の種類をclothesTypeフィールドに設定
public wearShoes void String type 引数で指定された靴の情報をshoesTypeフィールドに設定
public wearGlasses void String type 引数で指定された靴の情報をglassesTypeフィールドに設定
public printWear void なし 服、靴、眼鏡のなかで、身に着けているものだけを表示する

全て身に着けている場合の表示例は以下のようになります。

※それぞれのフィールドは「着物」「下駄」「サングラス」

着物を着ています

下駄を履いています

サングラスをかけています

※printWear()がどのように表示されるかは実行結果を参照のこと

指示3 Exam1009.javaは以下のように追加記述

実行結果

C:\work\exam>javac Exam1009.java

C:\work\exam>java Exam1009
タイプ:人間
名前:ななしさん
職業:なし
走る速度:16km/h
タイプ:人間
名前:鈴木さん
職業:陸上選手
走る速度:28km/h
タイプ:人間
名前:加藤さん
職業:なし
走る速度:16km/h
着物を着ています
下駄を履いています

※wearGlasses()メソッドは実行されていない為、「眼鏡をかけています」とは表示されません。

ヒント

printWear()メソッドの処理(一部)は以下のようになります。

練習問題【追加】の問題意図

例えば、今回追加で作成したIWearインタフェースは「服、履物、眼鏡」等を身に着けるメソッドが抽象メソッドとして定義されています。

IWearインタフェースを実装しているクラスは抽象メソッドを実装していますので、言い換えると「服、履物、眼鏡」等を身に着けられることとなります。

さらに、IWearインタフェースを実装していないクラスでは「服、履物、眼鏡」等を身に着けることができないという意味を持たせることもできます。

以下は図解での例です。

HumanクラスではIWearを実装していることから「服、履物、眼鏡」等を身に着けられること分かります。

しかし、Catクラス(作成していない)ではIWearは実装していない為、「服、履物、眼鏡」等を身に着けられないことが分かります。

インタフェースを自身で作成すると分かりずらいかもしれませんが、既存のインタフェースやそれを実装しているクラスを利用すると、そのメリットにも段々理解できるようになります。(第5章の記事で紹介)

スポンサーリンク
レクタングル