日記帳

日記です。

Eiffel Tutorial : 4 HELLO WORLD

とりあえず1〜3はとばして4章から.内容は Hello World で Eiffel プログラムの基本を解説する感じ.プログラムは以下の通り.

indexing    
	description: "Root for trivial system printing a message" 
	author: "Elizabeth W. Brown"

class 
	HELLO 

create    
	make

feature
	make is
			-- Print a simple message.         
		do      
			io.put_string ("Hello World")
			io.put_new_line
		end

end -- class HELLO

indexing 節

indexing 節の内容は主にプログラムからドキュメントを自動生成する際使うものでプログラムの実行には影響を与えない.

create 節

create 節に書かれたメソッドは 生成手続き(creation procedure)になる.
生成手続きに指定された手続きはオブジェクト生成時に以下のような形で呼び出せるらしい.

Create <変数名>.<生成手続き>

他の OOPL のコンストラクタみたいなものかと思ったけど以下の点が違う模様.

  • 何個でも好きな名前で作れる
  • オブジェクト生成後にも普通のメソッドとして呼び出せる

なんとなく Objective-C の initXXX メソッドが一番近い気がします.

コメント

コメントは"--"から行末まで,複数行のコメントのための書式はないのかしら?

行末のセミコロン

文の終りが自明な場合,文と文の区切りのセミコロンはオプショナルになるらしい.試しに上のプログラムを以下のように変更してみるとちゃんとコンパイル,実行できたのでえらいと思った.

io.put_string("Hello World")io.put_new_line

読み難いからこんな書き方しないだろうけど.

io

とくに宣言してないけど io という変数が使える.io はどこで宣言されているんだろうか? きっと親クラスから継承してるんだろうけど一応調べてみる.

EiffelStudio には継承した feature も含めてそのクラスに展開して表示するというフラット表示機能があるのでこれを使ってみる.メニューの「View」→「Flat」とするとHello Worldのソースが一気に380行くらいに膨れあがります.feature を眺めていくと下の方にちゃんと io がありました.

io: STD_FILES
	-- Handle to standard file setup
	-- (from ANY)

ってことで io は STD_FILES クラスのインスタンスで ANY クラスから継承してるらしい. STD_FILES クラスの内容を見るときは STD_FILES 部分をマウスの右ボタンをダブルクリックすれば STD_FILES のソースが開くのでそこから使えるメソッド一覧等も全部見れるようです.

あとフラット表示はメニューの「View」→「Text」で通常の表示に戻せます.

今日学んだこと.

  • indexing 節はプログラムの実行には関係ない
  • creation 節で指定したメソッドが生成手続きとなってオブジェクト生成時に呼べる.
  • コメントは「--」から行末まで
  • 文の終りが自明な場合,文と文の区切りのセミコロンはオプショナル
  • ANY クラスからいろいろ継承してるっぽい