メソッドの定義
2007/03/30 (Fri) 22:07:46 JST
メソッドを定義する
ブラウザの見方を覚えたところでメソッドを定義してみましょう。もうお馴染みのStringクラスに、"Hello, I am ..." と自己紹介をする sayHello
メソッドを追加します。Stringのようなシステムの基礎をなすクラスにメソッドを追加するのはあまりほめられたもんじゃありませんが、時と場合によっては必要なこともあります。
メソッドを定義する前に、メソッドの使い方を確認しておきます。このメソッドを実行するには、Stringオブジェクトに sayHello
とメッセージを送ります。
'My Name' sayHello
ブラウザでStringクラスを表示し、メソッドカテゴリから "accessing" を選択します。
下のウィンドウに次のコードを書き、続けてそのウィンドウ内でaltキー + 左クリック (以降altクリック) でメニューを開いて「了解」を選択します。"^" がSqueakのフォントの関係で上矢印になりますが、気にしないでください。
sayHello ^'Hello, I am ', self, '.'
これで sayHello
メソッドを定義できました。右端のメソッドリストに追加されています。
それではワークスぺースで次の式を表示してみましょう。'Hello, I am Tetsuya.' と表示されます。
'Tetsuya' sayHello
ここでメソッドの内容を確かめてみましょう。"^" は戻り値を表します。"," は記号ですが、文字列を連結するメッセージです。残りの "self" は名前の通りオブジェクト自身を表します。先ほどの式では 'Tetsuya' が self になります。自分のメソッドを呼びたいときは self に向けてメッセージを送ります。オブジェクトは自分で自分を操作することを思い出してください。
ここで「このメソッドはクラスに定義してあるから、selfはクラスでしょ?」と疑問に思う人もいると思います。ここまで「Stringクラス」「Stringオブジェクト」とさらっと書いてきましたが、メソッドを定義するのはクラス、メソッドを実行するのはオブジェクトです。
というわけで、メソッドが実行されるときの "self" はStringオブジェクトである 'Tetsuya' になります。
まとめ
- ブラウザでメソッドを定義する。
- クラスはメソッドを定義し、オブジェクトはメソッドを実行する。
- self はクラスではなくオブジェクト。
クラスとインスタンスに続きます。
Inverse Pages: クラスとメソッド クラスの定義 Squeakによるオブジェクト指向プログラミング入門