クラス SmartPhone

java.lang.Object
  上位を拡張 SmartPhone
すべての実装されたインタフェース:
Callable, Linable

public class SmartPhone
extends Object
implements Callable, Linable

スマートフォンに相当するクラス. 解答例.

作成者:
kaiya

フィールドの概要
private  Call call
          直近の通話インスタンスへの参照.リストにすれば通話履歴が残せるか.
private  int charge
          電話料金の合計量.初期値は当然0円.
private  boolean line
          Lがactivateされてるかどうかを保持.初期状態ではinactive.
private  ArrayList<Callable> list
          電話帳.初期値は空リスト.
private  int number
          電話番号
 
コンストラクタの概要
SmartPhone(int n)
          番号をもとにインスタンスを作成
 
メソッドの概要
 void activateLine()
          当該アプリを有効にする.
 boolean addAddress(Callable c)
          アドレス帳に電話cを登録する.
 void addCharge(int c)
          通話料金を加算する.
 Call call(Callable caller)
          ある電話callerからこの電話に電話をかける.
 boolean calling()
          通話中か否かのチェック.本来はCallableに定義すべきだな orz
 Callable[] getAddresses()
          この電話のアドレス帳を得る.
 Callable[] getFreeAddresses()
          アドレス帳にあるアドレスの中で無料通話可能なアドレスのリストを返す.
 int getNumber()
          電話番号を返す.
 int getTotalCharge()
          電話料金の累計.リセットの手段は無いので,シュミレーション中の全累計としてよい.
 void inactivateLine()
          当該アプリを無効化する.
 boolean isActiveLine()
          当該アプリケーションが有効か否かを照会
 boolean removeAddress(Callable c)
          アドレス帳から電話cを削除.
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

number

private int number
電話番号


line

private boolean line
Lがactivateされてるかどうかを保持.初期状態ではinactive.


charge

private int charge
電話料金の合計量.初期値は当然0円.


list

private ArrayList<Callable> list
電話帳.初期値は空リスト.


call

private Call call
直近の通話インスタンスへの参照.リストにすれば通話履歴が残せるか.

コンストラクタの詳細

SmartPhone

public SmartPhone(int n)
番号をもとにインスタンスを作成

パラメータ:
n - 電話番号,単純化のために単なる数字,例えば,256 とかを番号とみなす.
メソッドの詳細

isActiveLine

public boolean isActiveLine()
インタフェース Linable の記述:
当該アプリケーションが有効か否かを照会

定義:
インタフェース Linable 内の isActiveLine
戻り値:
有効なら真,無効もしくはインストールされていなければ偽を返す.

activateLine

public void activateLine()
インタフェース Linable の記述:
当該アプリを有効にする.

定義:
インタフェース Linable 内の activateLine

inactivateLine

public void inactivateLine()
インタフェース Linable の記述:
当該アプリを無効化する.

定義:
インタフェース Linable 内の inactivateLine

getFreeAddresses

public Callable[] getFreeAddresses()
インタフェース Linable の記述:
アドレス帳にあるアドレスの中で無料通話可能なアドレスのリストを返す. まずは自身がアプリLを有効にしていないとリストは長さゼロの配列である. 加えて,相手も同時にアプリLを有効にしていて,はじめて,無料通話可能なアドレスとなり,当該リストに追加される. アドレス帳自体,更新されるし,自身やアドレス帳にのってる人がアプリLを有効にするか,無効にするかも常時変わってくるので, そのことを考慮してね.

定義:
インタフェース Linable 内の getFreeAddresses
戻り値:
無料通話可能な電話のリスト.無料通話可能なアドレスが無い場合,長さゼロの配列を返す.決してnullは返らない.

call

public Call call(Callable caller)
インタフェース Callable の記述:
ある電話callerからこの電話に電話をかける. 双方がアプリLを有効にしてれば無料通話,それ以外は一律30円かかるものとする. 無論,電話をかける方,かけられる方のどちらかが通話中の場合は,電話はつながらない.

定義:
インタフェース Callable 内の call
パラメータ:
caller - かけたほうの電話
戻り値:
つながればCallのインスタンスが返る,つながらないとnullが返る.

addCharge

public void addCharge(int c)
通話料金を加算する. コレもcallの引数と適用が逆ならいらないメソッドだな・・・

パラメータ:
c - 加算する料金.

calling

public boolean calling()
通話中か否かのチェック.本来はCallableに定義すべきだな orz

戻り値:
通話中なら真.

getAddresses

public Callable[] getAddresses()
インタフェース Callable の記述:
この電話のアドレス帳を得る.

定義:
インタフェース Callable 内の getAddresses
戻り値:
アドレスの配列.もし空なら長さゼロの配列を返す.nullは決して返らない.

addAddress

public boolean addAddress(Callable c)
インタフェース Callable の記述:
アドレス帳に電話cを登録する. 既に登録済の電話を登録すると偽が返り,特に状態は変化しない. cがnullの場合も偽となり,特に状態は変化しない. この電話帳には自分自身の電話を登録することはできない.

定義:
インタフェース Callable 内の addAddress
パラメータ:
c - 登録する電話
戻り値:
登録に成功すれば真,それ以外は偽.

removeAddress

public boolean removeAddress(Callable c)
インタフェース Callable の記述:
アドレス帳から電話cを削除. 登録していない電話を削除しようとすると偽が返り,特に状態は変化しない. cがnullの場合も偽となり,特に状態は変化しない.

定義:
インタフェース Callable 内の removeAddress
パラメータ:
c - 削除する電話
戻り値:
成功すれば真,そうでなければ偽.

getTotalCharge

public int getTotalCharge()
インタフェース Callable の記述:
電話料金の累計.リセットの手段は無いので,シュミレーション中の全累計としてよい.

定義:
インタフェース Callable 内の getTotalCharge
戻り値:
電話料金の累計.

getNumber

public int getNumber()
インタフェース Callable の記述:
電話番号を返す.

定義:
インタフェース Callable 内の getNumber
戻り値:
単純化のため電話番号は単なる整数,例えば,256 等とする.