RubyCGI.org

RubyでCGIを作ろう


3章4節 クラスを作ってみよう 更新日付: [2002-05-17]



せっかくオブジェクト指向のプログラミング言語を使っているんだからクラスを作ってみましょう。(ちなみに今回も何か表示が出るわけではないです。)


-- プログラム 始まり -- test341.cgi

class FileLockDir
def lock(lockdir)
begin
Dir.mkdir(lockdir)
lockflag = true
rescue Errno::EEXIST
lockflag = false
end
return(lockflag)
end

def unlock(lockdir)
begin
Dir.rmdir(lockdir)
lockflag = true
rescue
lockflag = false
end
return(lockflag)
end
end

-- プログラム 終わり --

今回は前回のプログラムを元にクラスを作成しました。クラスというのは関数のさらに高機能版と考えればいいでしょうか。

クラスと特徴として以下のようなものがあります。
・中にメソッドというものを収めることができる
・違うクラスで同じ名前のメソッドを持つことができる
・初期化が必要である

では解説をします。

1行目はFileLockDirというクラスを定義しています。
2行目はlockというメソッドを定義しています。その際にlockdirという変数を受け取ります。
3行目はディレクトリを作成できなかったときの例外を捕まえるためのbeginです。
4行目はlockdirを作成します。もしここで作成に失敗したら6行目に飛びます。
5行目は成功したことを示すためにlockflagにtrueを入れます。
6行目はディレクトリの作成に失敗したときの例外が起こった時にここに飛びます。
7行目は例外が発生しているので失敗したとみなして、lockflagにfalseを入れます。
8行目はbeginの終わりです。
9行目はlockflagという成功か失敗かを示した変数を帰り値にします。
10行目はlockメソッドの終わりを示しています。

12行目はunlockというメソッドを定義しています。その際にlockdirという変数を受け取ります。
13行目はディレクトリを作成できなかったときの例外を捕まえるためのbeginです。
14行目はlockdirを削除します。もしここで削除に失敗したら16行目に飛びます。
15行目は成功したことを示すためにlockflagにtrueを入れます。
16行目は削除に失敗したときの例外が起こった時にここに飛びます。
17行目は例外が発生しているので失敗したとみなして、lockflagにfalseを入れます。
18行目はbeginの終わりです。
19行目はlockflagという成功か失敗かを示した変数を帰り値にします。
20行目はlockメソッドの終わりを示しています。
21行目はFileLockDirクラスの終わりを示しています。

これは実際のプログラムの中に入れておいて関数のように呼び出して使います。まずfilelock = FileLockDir.newをいうようにしてFileLockDirのクラスを初期化します。これでFileLockDirを使うための準備ができました。filelockはFileLockDirクラスを呼び出すための変数になります。LOCKFILEというディレクトリでロックをかけたい場合はfilelock.lock(LOCKFILE)とします。帰り値がtrueなら成功、falseなら失敗なので


if filelock.lock(LOCKFILE)
#ロックをかけるのに失敗した際に行う処理
end


とします。

ロックを解除する場合はfilelock.unlock(LOCKFILE)とします。これも同様に帰り値がtrueなら成功、falseなら失敗なのです。

クラスとは以上のように使います。

クラスについてもrubyのユーザーガイドにも丁寧に解説されていますのでそちらも参照しておいてください。

Rubyユーザーガイド http://www.ruby-lang.org/ja/uguide/uguide00.html



今回始めて使った命令など
クラス定義

RubyによるCGIプログラミング
RubyによるCGIプログラミング

<− 前へ : 3.3. 四則演算など | 次へ : 3.5. 掲示板完成(バグ無し版) −>

RubyでCGIを作ろうトップ

| トップページ | 書籍「Ruby/GTKプログラミング入門」 | 書籍「RubyによるCGIプログラミング」 | RubyでCGIを作ろう | リンク集 | ツールなど | 自己紹介 |