Commits

Takayuki KONDO committed 7637146

add polymorphism sample sources

  • Participants
  • Parent commits 537aa21

Comments (0)

Files changed (5)

+// 作成日:2008-05-29
+// 作者 :SWAT
+// 内容 :ポリモーフィズムを利用した給与計算システム例
+//			会社クラスの親クラス(インターフェース)
+
+public interface Kaisya{
+	
+	// サブクラスに実装を依存した抽象メソッド
+	public abstract void keisan();
+}

poly/Kaisya01.java

+// 作成日:2003-03-27
+// 作者 :SWAT
+// 内容 :ポリモーフィズムを利用した給与計算システム例
+//			会社クラスの子クラス(具象クラス)
+//			会社01のクラス
+
+public class Kaisya01 implements Kaisya{
+	
+	// 親クラスの抽象メソッドを実装
+	public void keisan(){
+		System.out.println("会社01の処理を行いました");
+	}
+}

poly/Kaisya02.java

+// 作成日:2003-03-27
+// 作者 :SWAT
+// 内容 :ポリモーフィズムを利用した給与計算システム例
+//			会社クラスの子クラス(具象クラス)
+//			会社02のクラス
+
+public class Kaisya02 implements Kaisya{
+	
+	// 親クラスの抽象メソッドを実装
+	public void keisan(){
+		System.out.println("会社02の処理を行いました");
+	}
+}
+// 作成日:2003-03-27
+// 作者 :SWAT
+// 内容 :既存手続き型による給与計算システム例
+
+public class Kizon{
+	public static void main(String[] args){
+		
+		// 画面から引数が受け取れなかった場合
+		if(args.length == 0){
+			System.out.println("会社コードを入力してください");
+			return;
+		}
+		
+		// 画面からの引数を受け取る
+		String kaisya = args[0];
+		
+		// 会社コードに応じて関数を呼び出す
+		if(kaisya.equals("01")){
+			kaisya01();
+		} else if(kaisya.equals("02")){
+			kaisya02();
+		} else {
+			System.out.println("適切な会社コードを入力してください");
+		}
+	}
+	// 会社コード「01」の処理
+	public static void kaisya01(){
+		System.out.println("会社01の処理を行いました");
+	}
+	
+	// 会社コード「02」の処理
+	public static void kaisya02(){
+		System.out.println("会社02の処理を行いました");
+	}
+}
+	
+// 作成日:2003-03-27
+// 作者 :SWAT
+// 内容 :ポリモーフィズムを利用した給与計算システム例
+//			実行用メインクラス
+
+public class Tatai{
+	public static void main(String[] args){
+		
+		// 画面から引数が受け取れなかった場合
+		if(args.length == 0){
+			System.out.println("会社コードを入力してください");
+			return;
+		}
+		
+		// 画面からの引数を受け取る
+		●●● kaisya = args[0];
+		
+		// 具象会社クラスのクラス名を生成する
+		String kaisyaName = "Kaisya" + kaisya;
+		
+		try{
+		// 上記クラス名から具象会社クラスのインスタンスを生成し
+			Class company = Class.forName(kaisyaName);
+		
+		// 親クラスの抽象会社クラスへ格納する
+			●●●com = (●●●)company.newInstance();
+			
+		// 親クラスのkeisanメソッドを実行するフリをして、
+		// 実際には子クラスのkeisanメソッドを実行する
+			com.keisan();
+			
+		} catch (ClassNotFoundException e){
+			System.out.println("適切な会社コードを入力してください");
+		
+		// 基本的には↓は実行されないはず(newInstance()メソッドが
+		// 例外処理を要求する為、実装
+		}catch (Exception e){
+			System.out.println("例外が発生しました" + e);
+		}
+	}
+}