第1回 Smalltalk の概要(4月10日)
今日の課題
- Squeak の操作
- オブジェクト
- メッセージ
- クラス
■ Squeakの操作
準備
- イメージファイル: Squeak のイメージファイル(/usr/local/squeak/SqueakNihongo6.1.image)を,自分の演習用のディレクトリにコピーせよ.
たとえば,~/2008-Lect-3/Squeak/ というディレクトリを作成し,その下に MySqueak.image という名前でコピーしよう. ⇒ 具体例 1
- パスの設定: シェルの設定ファイルにおいて,変数 PATH に /usr/local/squeak/ を設定せよ.
たとえば,シェルに bash を使っているならば,.bashrc という設定ファイルがある.PATH="$PATH:"/usr/local/squeak を追加する.なお,新しい設定は,新しくコンソールを開いてから,または,source ~/.bashrc を実行してから有効になる.
起動
squeak -plugins /usr/local/squeak/ MySqueak.image
(注 パスの設定ができなかった人は以下の方法で実行可能)
/usr/local/squeak/squeak -plugins /usr/local/squeak/ MySqueak.image
よく使うウインドウやスイッチ
- ワールド: 基本操作のメニューとなるウインドウ
出し方:背景のところにマウスカーソルを移動させ,「コントロールキーを押しながら右クリック」
- Workspace: Smalltalk のプログラムを実行することのできるウインドウ
出し方:「ワールド」のウインドウの中の「デスクトップメニュー…」の中の「開く…」の中の「workspace (k)」を選択
- Transcript: Smalltalk の実行結果を表示することのできるウインドウ
出し方:「ワールド」のウインドウの中の「デスクトップメニュー…」の中の「開く…」の中の「transcript (t)」を選択
- System Browser: Smalltalk のオブジェクトを定義するためのウインドウ
出し方:「ワールド」のウインドウの中の「デスクトップメニュー…」の中の「開く…」の中の「browser (b)」を選択
- ナビゲータ: 便利なスイッチ群
- 「新しく作る」: Morphic(モーフィック)プロジェクトという「ウインドウの集合体のインタフェース」を作るスイッチ
演習課題ごとに作っておくと,実行結果の画面を整理しやすい.
- 「前へ」: Morphic プロジェクトから戻るスイッチ
画鋲のボタン:「ワールド」などのウインドウの右上には,画鋲マークがある.そのマークをクリックすると画面にウインドウが固定される.
終了
- 「ワールド」の中の「デスクトップメニュー…」の中の「保存して終了」あるいは「終了」を選択
その他
- 無限ループの停止:ALTキーを押しながらピリオドを押すと,無限ループしている処理を止めることができる.
- イニシャルの入力:初めてクラスやメソッドを定義するとき,作成者のイニシャルが問われる.自分のイニシャルの入力を忘れずにしておくこと.
■ メッセージを送る
例題1
「Hello World!」を表示させよう.
- Transcript を出す.
- Workspace を出す.
- 以下のコードを入力する.
Transcript show: 'Hello World!'.
Transcript cr
- コードをハイライトする(緑色にする).Workspace の文字の無いところで左クリックをするか,マウスでドラックをする.
- 「ALTキー」を押しながら「d」を押す.
コントロールキーを押しながら左クリックをすると,メニューが表示される.この中の「式を評価 (d)」が対応している.
ソースコードの解釈: Transcript というオブジェクトは,Transcript ウインドウと結び付いている.1行目では,Transcript に show というメッセージを送っている.show の後のコロンは引数が続くことを表す.シングルコーテーションで囲まれたところは文字列を表す.したがって,show のメッセージは引数付きで送られており,その結果,Transcriptウインドウに文字列が表示される.行末のピリオドは,プログラムが次に続くことを表す.2行目では,cr というメッセージを送っている.cr は Transcript ウインドウに改行文字の表示を命令するメッセージである.
図1.操作の様子
■ もっとオブジェクトにさわってみよう
例題2
Workspaceにて,コードをハイライトして,「評価して表示(p)」を選択する(Alt + 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
練習する場所を作ろう.
- Morphic Project を作る
- 「Unnamed1」を左クリックして,ハイライトする.
- 名前を付ける.たとえば,「Prac01」として,Enterキーを押す.
- Prac01のウインドウを左クリックする.
- (新しい場所ができるので,そこに,WorkspaceやTranscriptを作ることができる.元に戻るには,ナビゲータの「前へ」を押す.)
■ オブジェクトを定義する
System Browserのウインドウ
System Browser のウインドウは,大きくみると,4つの枠が上段に並び,1つの枠が下段が存在している.この枠のことを「ペイン」という.上段の左端から順に,「カテゴリ」,「クラス」,「プロトコル」,「メソッド」をそれぞれ表示するペインである.下段のペインは,選択した項目の本体が表示され,編集することができる.
例題4
「Hello World!」を表示するオブジェクト(HelloWorld)とメソッド(say)を定義しよう.
- System Browser のカテゴリペインにマウスカーソルを移動する.
- コントロールキーを押しながら左クリックをする.
- 「項目を追加…」を選択する.
- カテゴリ名を付ける.たとえば,「MyObject」として「了解」を押す.スクロールバーを使って最下行を参照すると,作成したカテゴリ名が存在する.
- 編集のペインで,「#NameOfSubclass」のところを「#HelloWorld」と書き換える.
- コントロールキーを押しながら左クリックをする.
- 「了解 (s)」を選択する.
- 「プロトコル」のペインで「-- all --」をクリックする.
- 編集のペインを全て消して,以下のコードを記入する.
say
Transcript show: 'Hello World!'.
Transcript cr
- コントロールキーを押しながら左クリックをする.
- 「了解 (s)」を選択する.
- (Transcript を出しておく)
- 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 上に表示させよう。
伝達事項
プリント類を綴じるための安いファイルフォルダーを準備して下さい.
情報工学演習3では,小レポートを採点した後に,いったん返却します.返却されたレポートを各自がフォルダーに綴じておいて下さい.最終課題レポートの提出時に,全ての小レポートを提出してもらいますので,それまで,大切に持っていて下さい.小レポートを無くした人は,提出無しとして扱います.
2008.4.10 by tokuhisa