タイトル:異なる文字を入力するとき、インタフェースとコールバックへのインターフェース、単純な工場モードを使用して、次に図形が塔底体積で計算され、グラフィックオブジェクト・ファクトリ・クラスを使用して得られた対応するパターンを示します。
ソースコード
1、Shape.java
パッケージcn.edu.ccut.jia、 パブリック インターフェイス形状{ // インターフェースの形状定義 抽象 ダブルのgetAreaを(); }
2、Rectangle.java
パッケージcn.edu.ccut.jia; // 、矩形クラスを定義長く、幅の広い2つのメンバー変数を作成するには、求積法に定義された パブリック クラスを長方形実装形{ ダブル長さ、 ダブル幅; 公共矩形(ダブル長さ、ダブル幅){ この .LENGTH = 長さ; この .width = 幅; } 公共 ダブルのgetArea(){ 戻り 長さ* 幅; } }
3、Zheng.java
パッケージcn.edu.ccut.jia; // クラス正方形、長方形および継承クラス定義 パブリック クラス鄭が延びている長方形{ 鄭(ダブルサイド){ スーパー(サイド、側); // スーパー親クラスのメソッドを呼び出す } 公共 ダブルのgetArea (){ // 領域メソッドオーバーライド 戻り 長さ* 長さ; } }
4、Yuan.java
パッケージcn.edu.ccut.jia; // 円のクラスを定義し、メンバ変数rを作成し、定義された求積法 パブリック クラス元実装形{ ダブルR< ダブル PI = 3.14 ; 公衆元(ダブルR&LT){ この .R = R< } 公共 ダブルのgetArea(){ リターン R&LT *のR&LT * PI; } }
5、Tringle.java
パッケージcn.edu.ccut.jia; // 、三角形クラスを定義するX、Y、W 3つのメンバ変数を作成し、定義された求積法 パブリック クラス Tringle 実装はシェイプ{ ダブル; W ダブルX、 ダブルY; 公共 Tringle(ダブル W、ダブル X、ダブルY){ この .W = W; この .X = X; この .Y = Y; } 公共 ダブルのgetArea(){ ダブル Q =(W + X + Y)/ 2 ; 返す 数学。 SQRT(q個の*(QW)* (QX)*(Q-Y))。 } }
6、Tixing.java
パッケージcn.edu.ccut.jia; // 求積法定義三個のメンバ変数、B、Hを作成し、台形クラスを定義する パブリック クラスを Tixing 実装をシェイプ{ ダブルA、 ダブルB、 ダブルH; 公共 Tixing(ダブル、ダブル B、ダブルH){ この II.A = A; この .B = B; この .H = H; } 公共 ダブルのgetArea(){ リターン(A + B)* H / 2 ; } }
7、Cone.java
パッケージcn.edu.ccut.jia; // カートリッジクラスを定義し、高いインタフェースオブジェクトメンバ変数を作成し、ボリューム定義方法計算する パブリック クラスコーン{ ダブル 高いと、 シェイプ形状、 公共コーン(形状形状、ダブルハイ){ この .shape = シェイプ; この .high = 高; } ダブルgetv(){ 戻り 高* shape.getArea(); } }
8、Foctory.java
パッケージcn.edu.ccut.jia; // ファクトリクラスの作成 インポート java.utilのクラスを*。; パブリック クラスFoctory { スキャナリーダー = 新しい新しいスキャナ(System.in); 形状getShape(char型のD){ 形形状 = ヌル; スイッチ( D){ ケース 'R&LT' : のSystem.out.println( "高角形の長さを入力し、幅及び柱" ); シェイプ = 新しい新しい矩形(reader.nextDouble()、reader.nextDouble()); BREAK 。 ケース 'Z' : System.out.println(「四角柱の側面を入力してくださいハイ」); 形状 = 新新鄭(reader.nextDouble()); BREAK ; ケース「Y」: のSystem.out.println(「サークルを入力してくださいそして、高いシリンダ半径「); シェイプ = 新しい新元(reader.nextDouble()); BREAK ; ケース『S』: のSystem.out.println(」 "三角形の柱の高及び長辺に入ります)。 形状 = 新しい新しいTringle(reader.nextDouble()、reader.nextDouble()、reader.nextDouble()); BREAK 。 ケース 'T' : のSystem.out.println( "下部に下底を台形を入力してください、そして高いポストハイ" ); 形状 = 新新Tixing(reader.nextDouble()、reader.nextDouble()、reader.nextDouble( )); BREAK ; } 戻り形; } }
9、Test.java
パッケージcn.edu.ccut.jia; インポート cn.edu.ccut.jia * ; インポート java.utilのクラス*。; パブリック クラスのテスト{ 公共 静的 ボイドメイン(文字列[]引数){ ながら(真の){ スキャナリーダー = 新しい新しいスキャナ(System.in); のSystem.out.printlnは( "あなたの好みの形状を入力してください:矩形R、正方形Z、三角形S、ラウンドY、台形T" ); CHAR D = reader.next()のcharAt。 (0 ); Foctory F = 新しい新しいFoctory(); コーンC = 新しい新コーン(f.getShape(D)、reader.nextDouble())。 System.out.println(c.getV())。 } } }
第二に、ショットを実行します