インタフェースに関する問題です。

1.インタフェースの作成

次のアウトプットとソースコードに整合するようにインタフェース、IPhone,IBrouser,ICamera,IMusicPlayerを作りなさい。

SmartPhoneクラスは各々のインタフェースの抽象メソッドをオーバーライドしているものとします。

<アウトプット>

音楽を再生する
Webを見る
電話を受ける
電話をかける
写真を撮影する
写真を表示する

<ソースコード>

2.オリジナルクラスの作成

IPhoneをimplementsしたMyPhoneクラス、

IBrouserをimplementsしたMyBrouserクラス、

ICameraをimplementsしたMyCameraクラス、

IMusicPlayerをimplementsしたMyMusicPlayerクラスをそれぞれ作りなさい

3.Comparableインタフェースの実装

以下のクラスを作成しなさい。

スーパークラス abstract Figure

役割:図形を表現する抽象クラス。 java.lang.Comparableインタフェースを実装する。

フィールド
フィールド名アクセス修飾子役割
areaprotecteddouble図形の面積を保持する(面積は少数第2位四捨五入1位表示)
メソッド
メソッド名アクセス修飾子戻り値の型役割
compareTo(Object o)publicintComparableインタフェースの同名メソッドの実装(オーバーライド)

サブクラス1 Rectangle extends Figure

役割:図形の一種である四角形を表現する。

フィールド
フィールド名アクセス修飾子役割
xprivatedouble四角形の横幅を保持する
yprivatedouble四角形の縦幅を保持する
コンストラクタ

役割:全てのフィールドを適切に初期化する

メソッド
メソッド名アクセス修飾子戻り値の型役割
toString()publicStringRectangle{area=xx.x}という文字列表現を返す。(オーバーライド)

サブクラス2 Circle extends Figure

役割:図形の一種である円を表現する。

フィールド
フィールド名アクセス修飾子役割
rprivatedouble円の半径を保持する
コンストラクタ

役割:全てのフィールドを適切に初期化する

メソッド
メソッド名アクセス修飾子戻り値の型役割
toString()publicStringCircle{area=xx.x}という文字列表現を返す。(オーバーライド)

 

<テストクラスの例>

<結果の例>

Circle{area=78.5}のほうがRectangle{area=70.0}より大きいです。

4.移譲を使って依存性を無くす

MyOs version2を搭載したMyPad、MyMac、MyPhoneがある。(以下、各機器と略す)

各機器のクラスは以下の通りである。

以下は、上記クラスのテストクラスである。

このとき、OSをバージョンアップして以下のMyOsV3にしたい。

しかし、今のままでは、OSと各機器が密結合してしまっており、OSを替えるにはそれぞれの機器のコードを修正する必要がある。

そこで、以下のクラス図を参考に、依存性を無くしてほしい。

つまり、OSのバージョンが3,4,5と上がったとしても各機器のクラスを変更する必要がないようにしてほしいのである。

移譲を使って依存性を無くす

<Q04のソースコード>

<結果>

MyOs version2を起動します。
MyPad特有の機能を実行.
MyOs version2を起動します。
MyMac特有の機能を実行..
MyOs version2を起動します。
MyPhone特有の機能を実行...

MyOs version3を起動します。
MyPad特有の機能を実行.
MyOs version3を起動します。
MyMac特有の機能を実行..
MyOs version3を起動します。
MyPhone特有の機能を実行...

5.オリジナルインタフェースの作成

あなたの理想の機能を抽象メソッドとして持つインタフェース達を作成しなさい。

インタフェース名は自由とします。

あなたの理想のインタフェース達をimplementsした理想のクラスを作成しなさい。

JavaSEの問題集トップページに戻る