next up previous contents
Next: 15 クラスの継承 Up: algorism_out Previous: 13 クラスの練習

Subsections


14 クラスの取り込み方法

\includegraphics[width=8cm]{/home/nisimiya/Bunsho/Daigaku_and_Jimu/Lesson/Subject/Algorism/Fig/class_req.eps}

作成したクラスを別のプログラムで利用する方法を学ぶこととする。

14.1 クラスの読み込み

一度作成した ``class''は、ファイルとして保存しておけば、別のプロラムで使 用することができる。 具体的にはプログラムの先頭に
require 'ファイル名'
と記入する。 但し、ファイル名は拡張子をのぞいた部分を記入する。 以下で練習を行う。

セクション 13.3 で作成したプログラムを以下に表記する。 ファイル名を``ennClass.rb''として保存することとする。

---------------------------- Program Start ----------------------------
class Enn
  Pi = 3.141592
  def enshu(r)      # 円周を求めるメソッド
    enshuu = 2 * Pi * r
    return enshuu
  end

  def menseki(r)    # 面積を求めるメソッド
    menseki = Pi * r**2
    return menseki
  end
 
  def hms(r)        # 球の表面積を求めるメソッド
    hyomen = 4 * Pi * r**2
    return hyomen
  end

  def tai(r)       # 球の体積を求めるメソッド
    taiseki = 4/3 * Pi * r**3
    return taiseki
  end  

end

if $0 == __FILE__    # 新たに付け加えた部分
   
 a = Enn.new
 puts a.enshu(5)
 puts a.menseki(2)
 puts a.hms(5)
 puts a.tai(3)

end                   # 新たに付け加えた部分
---------------------------- Program End ------------------------------

このプログラムを例えば ``ennClass.rb'' と言うファイル名で保存する。 上記リストの

if $0 == __FILE__ 
 -------------------
 | プログラムリスト|
 -------------------
end
の部分は、別のプログラムに読み込んだとき、読み飛ばされる部分である。 つまり、この部分は読み込まれない。

では、ここで作成したクラスを利用して、円柱の体積(円柱の体積は $(底面積)\times (高さ)$)や、円錐の体積(円錐の体積は $(底面積)\times (高さ)/3$)を 求めるプログラムを作成する。

プログラムを作成する前に ``クラスシート''を作成しておくと良い。 特に書式が決まっている訳ではない。 サンプルを示す。

◎クラスシート例
   
  ファイル名    ennClass.rb
      クラス名    Enn  
         メソッド
            (1)  enshu(r)
                 機能 : 円周を求める
                 変数 : r --> 円の半径

            (2)  menseki(r)
                 機能 : 円の面積を求める
                 変数 : r --> 円の半径

            (3)  hms(r)
                 機能 : 球の表面を求める
                 変数 : r --> 円の半径

            (4)  tai(r)
                 機能 : 球の体積を求める
                 変数 : r --> 円の半径
上記はあくまでもサンプルである。 どのようにクラスをシートを書くかは、色々な考え方がある。 既に様々なクラスが作成され、ホームページ等で公開されている。

それでは、この「クラスシート」を見ながら、円柱の体積や円錐の体積を作るプ ログラムを作成する。

---------------------------- Program Start ----------------------------
require 'ennClass'   # 先ほどのプログラムを読み込んでいる。

class Taiseki
 def enchu(r,h)      # 円柱の体積を求めるためのメソッド定義
   a = Enn.new         # 読み込んだプログラムの "Enn" クラスのインスタンスを  
                       # 生成している。
   b = a.menseki(r)
   v = b * h
   return v   

 end
end


if $0 == __FILE__    # 今回も付け加えるとよい。

a = Taiseki.new
printf("円柱の体積は %f です。\n", a.enchu(2,5))

end
---------------------------- Program End ------------------------------

14.1.1 練習

それでは、上記プログラムに円錐の体積を求めるメソッドを付け加えてみよ。




平成22年12月28日