第1回 Smalltalk の概要(4月12日)

今日の課題

■ Squeakの操作

準備

起動

squeak -plugins /usr/local/squeak/ MySqueak.image
(注 パスの設定ができなかった人は以下の方法で実行可能)
/usr/local/squeak/squeak -plugins /usr/local/squeak/ MySqueak.image

よく使うウインドウやスイッチ

  1. Workspace:Smalltalk のプログラムを実行することのできるウインドウ
  2. Transcript:Smalltalk の実行結果を表示することのできるウインドウ
  3. System Browser:Smalltalk のオブジェクトを定義するためのウインドウ
  4. ナビゲータ:便利なスイッチ群
  5. 「新しく作る」:Morphic(モーフィック) プロジェクトという「ウインドウの集合体のインタフェース」を作るスイッチ
  6. 「前へ」:Morphic プロジェクトから戻るスイッチ

ウインドウの出し方

  1. 「ワールド」の出し方:背景のところにマウスカーソルを移動させ,「コントロールキーを押しながら右クリック」
  2. 「Workspace」の出し方:「ワールド」のウインドウの中の「デスクトップメニュー…」の中の「開く…」の中の「workspace (k)」を選択
  3. 「Transcript」の出し方:「ワールド」のウインドウの中の「デスクトップメニュー…」の中の「開く…」の中の「transcript (t)」を選択
  4. 「System Browser」の出し方:「ワールド」のウインドウの中の「デスクトップメニュー…」の中の「開く…」の中の「browser (b)」を選択

終了

  1. 「ワールド」の中の「デスクトップメニュー…」の中の「保存して終了」あるいは「終了」を選択

その他

  1. 無限ループの停止:ALTキーを押しながらピリオドを押すと,無限ループしている処理を止めることができる.
  2. イニシャルの入力:初めてクラスやメソッドを定義するとき,作成者のイニシャルが問われる.自分のイニシャルの入力を忘れずにしておくこと.

■ メッセージを送る

例題1

「Hello World!」を表示させよう.

  1. Transcript を出す.
  2. Workspace を出す.
  3. 以下のコードを入力する.
    Transcript show: 'Hello World!'.
    Transcript cr
    
  4. コードをハイライトする(緑色にする).Workspace の文字の無いところで左クリックをするか,マウスでドラックをする.
  5. コントロールキーを押しながら左クリックをする.
  6. メニューの中から「式を評価 (d)」を選択する.

ソースコードの解釈:Transcript というオブジェクトは,Transcript ウインドウと結び付いている.1行目では,Transcript に show というメッセージを送っている.show の後のコロンは引数が続くことを表す.シングルコーテーションで囲まれたところは文字列を表す.したがって,show のメッセージは引数付きで送られており,その結果,Transcriptウインドウに文字列が表示される.行末のピリオドは,プログラムが次に続くことを表す.2行目では,cr というメッセージを送っている.cr は Transcript ウインドウに改行文字の表示を命令するメッセージである.


図1.操作の様子

■ もっとオブジェクトにさわってみよう

例題2

コードをハイライトして,「評価して表示(p)」を選択すると,オブジェクトを実行した結果を,より簡単に表示することができる.

以下のコードを1行ずつハイライトして,「評価して表示」をやってみよう.

数のオブジェクト
-123 abs
123.456 rounded

文字列のオブジェクト
'abcdefg' size
'abcdefg' capitalized

配列のオブジェクト
#( 123 456 'abc' 'def') size
#( 4 3 1 5 9 3 2 ) sort
#( 123 456 'abc' 'def') at: 3
(#( 123 456 'abc' 'def') at: 3) capitalized

時間のオブジェクト
Time now

日付のオブジェクト
Date today

例題3

練習する場所を作ろう.

  1. Morphic Project を作る
  2. 「Unnamed1」を左クリックして,ハイライトする.
  3. 名前を付ける.たとえば,「Prac01」として,Enterキーを押す.
  4. Prac01のウインドウを左クリックする.
  5. (新しい場所ができるので,そこに,WorkspaceやTranscriptを作ることができる.元に戻るには,ナビゲータの「前へ」を押す.)

ひみつ:「ワールド」などのウインドウの右上には,画鋲マークがある.そのマークをクリックすると….

■ オブジェクトを定義する

System Browserのウインドウ

System Browser のウインドウは,大きくみると,4つの枠が上段に並び,1つの枠が下段が存在している.この枠のことを「ペイン」という.上段の左端から順に,「カテゴリ」,「クラス」,「プロトコル」,「メソッド」をそれぞれ表示するペインである.下段のペインは,選択した項目の本体が表示され,編集することができる.

例題4

「Hello World!」を表示するオブジェクト(HelloWorld)とメソッド(say)を定義しよう.

  1. System Browser のカテゴリペインにマウスカーソルを移動する.
  2. コントロールキーを押しながら左クリックをする.
  3. 「項目を追加…」を選択する.
  4. カテゴリ名を付ける.たとえば,「MyObject」として「了解」を押す.スクロールバーを使って最下行を参照すると,作成したカテゴリ名が存在する.
  5. 編集のペインで,「#NameOfSubclass」のところを「#HelloWorld」と書き換える.
  6. コントロールキーを押しながら左クリックをする.
  7. 「了解 (s)」を選択する.
  8. 「プロトコル」のペインで「-- all --」をクリックする.
  9. 編集のペインを全て消して,以下のコードを記入する.
    say
        Transcript show: 'Hello World!'.
        Transcript cr
    
  10. コントロールキーを押しながら左クリックをする.
  11. 「了解 (s)」を選択する.
  12. (Transcript を出しておく)
  13. Workspace で以下を実行する.
    HelloWorld new say
    

「HelloWorld new say」の解釈は,次のとおりである.「HelloWorld」はクラス名である.new はクラスからインスタンスを生成することを指示するメッセージである.say はそのインスタンスに送られるメッセージであり,インスタンスの持つメソッド say の実行を促す.

練習1

「Hello Squeak」を表示するオブジェクト(HelloSqueak)とメソッド(say)を定義しよう.

HelloSqueak に,「Good Bye」を表示するメソッド(bye)を追加定義しよう.

例題5

「Hello ○○ san」と表示するメソッド(greetFriend)をオブジェクト HelloSqueak に定義しよう。

greetFriend: name
  Transcript show: 'Hello '.
  Transcript show: name.
  Transcript show: 'san'.
  Transcript cr

練習2

Workspace から greetFriend を使って、「Hello ドラえもん san」と Transcript 上に表示させよう。

伝達事項

小レポートの採点後は,いったん返却します.返却されたレポートは各自 がファイルに綴じておいて下さい.最終レポートと同時にそのファイルを提出 してもらいます.その後,ファイルは返却しません.


2007.4.5 by tokuhisa