A.タイトル
コールバックインターフェースとその使用、単純な工場モード、異なる文字を入力次に図形が塔底体積で計算され、グラフィックオブジェクト・ファクトリ・クラスを使用して得られた対応するパターンを示します。
II。コードと注意事項
/ ** Shapeクラス、インターフェイスを作成、抽象クラスを定義* /
パッケージccut.cn。 インタフェース形{ 抽象 二重のgetArea()。 }
/ **長方形のタイプ、長さ、および作成する幅、施工方法、矩形領域を計算します* /
パッケージccut.cn。 パブリック クラス長方形は実装形{ ダブル高さ; ダブル幅; 矩形(二重高さ、ダブル幅){ この .height = 高; この .width = 幅; } 公共の 二重のgetArea(){ 二重面積=高さ* 幅。 リターンエリア。 } }
/ **クラス広場、作成された正方形の一辺の長さは、コンストラクタ、および四角形の面積を決定します* /
パッケージccut.cn。 パブリック クラススクエアは実装形{ ダブルサイドを。 正方形(ダブルサイド){ この .side = 側; } 公共の 二重のgetArea(){ 戻り側*の側、 } }
/ **円形のクラス、円形部材の可変半径を作成し、施工方法、及び円形の領域* /
パッケージccut.cn。 パブリック クラスサークル実装形{ ダブル半径。 円(二重半径){ この .radius = 半径。 } 公共の 二重のgetArea(){ 戻り 3.14 *半径*の半径と、 } }
/ **三角形のクラスは、三角形の3辺のメンバ変数、三角形の面積の施工方法と要件を作成します* /
パッケージccut.cn。 パブリック クラストライアングルは実装形{ ダブル。 ダブルB; ダブルC; 三角形(ダブル、ダブル B、ダブルC){ この .A = 。 この .B = B; この .C = C; } 公共の 二重のgetArea(){ 二重のS =(A + B + C)/ 2 。 ダブル S =(フロート)Math.sqrt(S×(SA)*(SB)*(S- C))。 返すSを、 } }
/ **台形型は、下にある基板との高いメンバ変数、台形の方法及び構造に必要な領域を作成します* /
パッケージccut.cn。 パブリック クラス台形は実装形{ ダブルs_heightを。 ダブルx_height; ダブル背の高いです; 台形(ダブル s_height、ダブル x_height、ダブルトール){ この .s_height = s_height。 この .x_height = x_height。 この .tall = トール。 } 公共の 二重のgetArea(){ リターン(s_height + x_height)*身長/ 2 。 } }
/ **クラスカラム、高いシリンダメンバ変数を作成し、算出シリンダ容積コンストラクタ* /
パッケージccut.cn。 パブリック クラスコーン{ ダブル長さ; シェイプシェイプ。 コーン(形状形状、二重長さ){ この .shape = 形状; この .LENGTH = 長さ。 } ダブルgetVolume(){ ダブル V = shape.getArea()* 長さ。 リターンV; } }
/ **ファクトリクラスは、ユーザーの形状は、/判断を行う必要があり、*に対応する形状の面積を返します。
パッケージccut.cn。 輸入 java.utilの。* ; パブリック クラス工場{ 静的形状形状= NULL ; 静的スキャナSE = 新しいスキャナ(System.in)。 パブリック 静的状(チャーI){ スイッチ(I){ ケース 'C':のSystem.out.printlnは( "请输入圆的半径:" )。 二重 C = se.nextDouble()。 形状 = 新しいサークル(C); 破ります; 場合'T':のSystem.out.println( "正方形の一辺を入力してください:" ); ダブル T = se.nextDouble(); 形状 = 新新広場(T); BREAK ; ケース 'R&LT':System.out.printlnは( "長方形の長さと幅を入力してください:" ); ダブル L = se.nextDouble(); ダブル K = se.nextDouble(); 形状 = 新しい新しい長方形(L、K); BREAK ; ケース 'S':のSystem.out .println(「三角形の三辺を入力してください:」); ダブル =se.nextDouble(); ダブル B = se.nextDouble()。 ダブル D = se.nextDouble()。 形状 = 新しいトライアングル(B、D)。 破ります; ケース 'X'のSystem.out.printlnは( "请输入梯形的上底、下底和高:" ); ダブル S = se.nextDouble()。 二重 X = se.nextDouble()。 ダブル H = se.nextDouble()。 形状 = 新しい台形(S、X、H)。 破ります; } 戻り形状と、 } }
/ *メインクラスは、ユーザが必要とシリンダの底部、コールファクトリクラスの所望の形状を入力し、*に対応するボリュームを決定/
パッケージccut.cn; インポート java.utilのクラス*。; パブリック クラスZhulei { / ** * @paramの引数 * / パブリック 静的な 無効メイン(文字列[] args)を{ // TODO自動生成されたスタブメソッド のSystem.out.println( "デフォルトのシリンダ10高い、底面積のパターンを入力" ;) のSystem.out.println( "円(C)、正方形(T)、矩形(R&LT)、(S)三角形、台形(X)" ) ; スキャナーSE = 新しい新しいスキャナ(System.in); チャー(= I se.next)でのcharAt(0 ); コーンコーン = 新しい新コーン(Factory.a(I)、10 )。 System.out.println(cone.getVolume())。 } }
III。業績