タイトル:
それぞれのパターンを表す別の文字を入力するときに、コールバックインターフェースとその使用、単純な工場モードは、次に図は塔底体積で計算され、グラフィックオブジェクト・ファクトリ・クラスを使用することによって得られます。
第二に、コードとコメント:
1.スクエアカテゴリ:
// *四角辺長*シークの領域の長さの方法でインターフェイス、継承する正方形クラスを定義する@ パッケージccut.lyqと、 パブリック クラス実装の形{zhengfangxing ダブル;長 ダブルエリア; zhengfangxing(ダブル長さ){ この = .LENGTH 長; } 公共 ダブルのgetArea(){ 戻り面積*長さ= 長さ; } }
2.三角形のような:
// *三角形の辺の長さA、B、C、及び三角構成方法及び書き換え方法の面積三角形クラスがインターフェイスを継承定義@ パッケージccut.lyq、 パブリック クラスが実装をsanjiaoxing形状{ ダブルA、 ダブルB。 二重C; sanjiaoxing(ダブル A、ダブル B、ダブルC){ この II.A = A; この .B = B; この .C = C; } 公共の 二重のgetArea(){ ダブル Dは=(A + B + C) / 2 ; 戻り Math.sqrt(D *(DA)*(DB)*(D-をc)参照)。 } }
3.長方形のカテゴリ:
// *矩形クラスはポート接合を継承し、矩形の長さが定義されているチャン、クアン幅、矩形領域を*計算される定義@ パッケージccut.lyqと、 パブリック クラスは、実装に形{Juxing ダブル;クアン ダブルチャン; Juxing(ダブルクアン、ダブルチャン){ この .chang = チャン; この .kuan = クアン; } 公共の 二重のgetArea(){ リターンクアン* チャン; } }
4.台形:
// *インタフェースを継承台形クラス定義@ パッケージccut.lyqと、 パブリック クラス Juxing 実装形{ ダブル;上地 ダブルxiadi; ダブルガオ; Juxing(ダブル上地、ダブル xiadi、ダブルガオを){ この .xiadi = xiadi ; この .shangdi = 上地; この .gao = ガオ; } 公共 ダブルのgetArea(){ リターン(+ xiadi上地)*ガオ/ 2 ; } }
5.ラウンドカテゴリ:
// *クラス継承円形定義されたインタフェース、丸いエッジ長r、及びラウンド構成および*領域を書き換える方法@ パッケージccut.lyq; パブリック クラスサークル実装形{ ダブルR< 最終ダブル PI = 3.14 ; サークル(ダブルR&LT){ この .R = R< } 公共 ダブルのgetAreaは(){ 戻り * R&LT * PIを、R&LT } }
6つの気筒のカテゴリ:
// *クラス定義シリンダ、*下、高精細シリンダ、及びパターン領域を変化させる方法定義@ パッケージccut.lyqと、 パブリック クラスコーン{ 形形状、 ダブルハイ; 公共コーン(形状形状、ダブルハイ) { この .shape = シェイプ; この .high = 高; } 公共 ダブルgetVolume(){ 戻り)(shape.getAreaを* ハイ; } 公共 ボイドsetShape(形状状){ この .shapeは= シェイプ; } }
7.ファクトリクラス:
// *作成するファクトリクラス、switch文とシリンダーの底のオブジェクト選択パターン形状が*空で、// パッケージccut.lyq; インポート java.utilのクラス*。; 公開 クラスファクトリーの{ 形形状 = ヌル; スキャナ入力 = 新しい新しいスキャナ(System.in); 公共 Factoryの(ダブル高さ){ コーンコーン = 新しい新しいコーン(この.getShape()、高さ) のSystem.out.println(cone.getVolume()); } 公共形状getShape(){ System.out.println( "ボトムパターンを選択してください:矩形:T R&LTと、正方形:S;丸:C;:;三角形、台形V"); チャー A = input.next()のcharAt(0 )、 スイッチ(A){ ケース 'R&LT':のSystem.out.println( "シリンダ容積の底部に矩形:");シェイプ= 新しい新しい長方形(3,6); BREAK ; ケース 'S':のSystem.out.println( "シリンダ容積の底部に四角:");シェイプ= 新しい新しい正方形(5); BREAK ; ケース 'C':システム。 out.printlnを(「円筒容積の底:」);シェイプ= 新しい新しいサークル;(8)BREAK ; ケース:カラム容量の底部でのSystem.out.println(「三角形「V」 :「);形状= 新しい新しいトライアングル(その5、3); BREAK ; ケース 'T':システム。out.printlnを(「シリンダの容積として梯子の底:」);形状=新しい台形(3,5,7); 破ります; } 戻り形状と、 } }
8.グラフィックスクラス:
// *塔底のために使用されるインタフェースの形状を定義する@ パッケージccut.lyq、 パブリック インターフェイス形状{ 抽象 ダブルのgetArea(); }
9.主なカテゴリ:
// *主类* // パッケージccut.lyq。 パブリック クラステキスト{ 公共 静的 ボイドメイン(文字列[]引数){ ダブル高さ= 6 。 工場出荷時 = 新工場(高さ); } }
第三の結果: