GCM Class で最大公約数を印字

C:\DATA\Java2\Class>java GcmClass
v1=24   v2=32   gcm=8
 -- Press any key to exit (Input "c" to continue) --
Constructor で値を設定して、最大公約数を求めて印字します。
GCM(最大公約数)とは、2 つ以上の整数の全てを割り切れる数のうちで最大のものを言います。

前田稔の超初心者のプログラム入門

プログラムの作成

  1. メモ帳などでタイプして GcmClass.java の名前で保存して下さい。
    //★ GCM Class を定義する  前田 稔
    public class GcmClass
    {   public static void main(String args[])
        {
            GCM  App= new GCM(24,32);
            App.print();
        }
    }
    
    class  GCM
    {
        private int     gcm;
        private int     v1,v2;
        private int     w;
    
        // Constructor
        GCM(int a, int b)
        {   v1=w= a;
            v2=gcm= b;
            while(w!=gcm)
            {   if (w>gcm)	w-= gcm;
                else        gcm-= w;
            }
        }
        void print()
        {   System.out.println("v1=" + v1 + "   v2=" + v2 + "   gcm=" + gcm);
        }
    }
    
  2. GcmClass.java をコンパイルして class オブジェクトを実行して下さい。
    コンパイルの詳細は Java を動かす を参照して下さい。
  3. ページ先頭の画面が表示されたら完成です。

プログラムの説明

  1. main() 関数です。
    今回は main() と GCM class の順序を逆にしてみました。
    new GCM(24,32) で GCM クラスをインスタンス化(生成)して GCM を計算します。
    領域は private で宣言されているので main() から直接アクセスすることはできません。
    print() で v1, v2, gcm の値を印字します。
    public class GcmClass
    {   public static void main(String args[])
        {
            GCM  App= new GCM(24,32);
            App.print();
        }
    }
        
  2. Class とはオブジェクト指向プログラミングにおいて、 データとそのデータを扱うコードを一まとめにしたものです。
    Class 名と同じ名前のメソッドが Constructor で、Class がインスタンス化するときに呼び出されます。
    Constructor は必要なければ省略することができます。
    今回は Constructor のパラメータを通じて v1 と v2 に値を設定して、最大公約数を計算します。
    class  GCM
    {
        private int     gcm;
        private int     v1,v2;
        private int     w;
    
        // Constructor
        GCM(int a, int b)
        {   v1=w= a;
            v2=gcm= b;
            while(w!=gcm)
            {   if (w>gcm)	w-= gcm;
                else        gcm-= w;
            }
        }
        void print()
        {   System.out.println("v1=" + v1 + "   v2=" + v2 + "   gcm=" + gcm);
        }
    }
        

【演習】

2個の領域に値を設定して、和を求める プログラムを Constructor で計算するように修正して下さい。

【NOTE】

C言語では Class の後始末をする Destructer があるのですが Java では見当たりません。
領域の解放などはガベージコレクションが行ってくれるので、 Destructer は必要無いと言う事でしょうか。

超初心者のプログラム入門(Java2)