• 検索結果がありません。

PBE1 ja Recent site activity smalltalkusers.jp

N/A
N/A
Protected

Academic year: 2018

シェア "PBE1 ja Recent site activity smalltalkusers.jp"

Copied!
348
0
0

読み込み中.... (全文を見る)

全文

(1)

Pharo by Example

Andrew P. Black Stéphane Ducasse

Oscar Nierstrasz Damien Pollet

with Damien Cassou and Marcus Denker

(2)

This book is available as a free download fromhttp://PharoByExample.org.

Copyright © 2007, 2008, 2009 by Andrew P. Black, Stéphane Ducasse, Oscar Nierstrasz and Damien Pollet.

The contents of this book are protected under Creative Commons Attribution-ShareAlike 3.0 Unported license.

You are free:

to Share — to copy, distribute and transmit the work

to Remix — to adapt the work

Under the following conditions:

Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work).

Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license.

• For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to this web page:creativecommons.org/licenses/by-sa/3.0/

• Any of the above conditions can be waived if you get permission from the copyright holder.

• Nothing in this license impairs or restricts the author’s moral rights.

Your fair dealing and other rights are in no way affected by the above. This is a human-readable summary of the Legal Code (the full license):

creativecommons.org/licenses/by-sa/3.0/legalcode

Published by Square Bracket Associates, Switzerland.http://SquareBracketAssociates.org

ISBN 978-3-9523341-4-0

(3)

Contents

Preface

ix

I

Getting Started

1

Pharo

早巡

3

1.1

入門

. . . .

3

1.2

ワー

. . . .

8

1.3

. . . .

8

1.4

Pharo

ン 保存 終了

再開

. . . 10

1.5

ワー

. . . 11

1.6

ー ー

. . . 13

1.7

. . . 15

1.8

. . . 16

1.9

. . . 19

1.10

定義

. . . 20

1.11

. . . 25

2

最初

27

2.1

Lights Out

. . . 27

2.2

作成

. . . 28

2.3

LOCell

定義

. . . 29

2.4

追加

. . . 31

(4)

2.6

LOGame

定義

. . . 34

2.7

. . . 37

2.8

実行

. . . 40

2.9

Smalltalk

保存 共有

. . . 43

2.10

. . . 48

3

文法早わ

49

3.1

文法要素

. . . 49

3.2

擬似変数

. . . 52

3.3

ー 送信

. . . 53

3.4

. . . 54

3.5

. . . 55

3.6

条件式

要点

. . . 56

3.7

. . . 58

3.8

. . . 58

4

ー 構文 理解

61

4.1

読 取

. . . 61

4.2

3

種類

. . . 63

4.3

ー 式 組 合わ

. . . 65

4.4

ーワー

切 目 見

. . . 72

4.5

式 並

. . . 73

4.6

. . . 74

4.7

. . . 74

II

Developing in Pharo

5

Smalltalk

79

5.1

規則

. . . 79

5.2

. . . 79

5.3

. . . . 80

5.4

ー ー

. . . 88

(5)

v

5.6

探索 継承 連鎖

. . . 92

5.7

共有変数

. . . 99

5.8

. . . 104

6

Pharo

ン 環境

105

6.1

概要

. . . 106

6.2

. . . 107

6.3

Monticello . . . 119

6.4

[Explore] . . . 127

6.5

. . . 129

6.6

. . . 139

6.7

検索

. . . 140

6.8

ー ー

. . . 141

6.9

. . . 143

6.10

Smalltalk

失う

. . . 145

6.11

. . . 146

7

SUnit

149

7.1

. . . 149

7.2

重要

. . . 150

7.3

良い

? . . . 151

7.4

SUnit by example . . . 152

7.5

SUnit

. . . 156

7.6

SUnit

ー ワー

. . . 157

7.7

SUnit

高度 機能

. . . 160

7.8

SUnit

内部実装

. . . 161

7.9

. . . 164

7.10

. . . 165

8

基本的

167

8.1

Object . . . 167

8.2

Number . . . 177

(6)

8.4

String . . . 181

8.5

Boolean . . . 183

8.6

. . . 184

9

187

9.1

. . . 187

9.2

ン 種類

. . . 188

9.3

ン 実装

. . . 191

9.4

主要

. . . 192

9.5

. . . 202

9.6

ン 使う

. . . 206

9.7

. . . 208

10

209

10.1

要素 並

. . . 209

10.2

ー 対

. . . 210

10.3

ン 対

ー 処理

. . . 211

10.4

使う

. . . 219

10.5

. . . 222

11

Morphic

223

11.1

Morphic

歴史

. . . 223

11.2

操作

. . . 225

11.3

組 込

. . . 226

11.4

自由

. . . 226

11.5

対話

. . . 230

11.6

対話機能

. . . 234

11.7

. . . 234

11.8

例題

. . . 237

11.9

追加情報

. . . 241

(7)

vii

12

Seaside by Example

243

12.1

Seaside? . . . 243

12.2

. . . 244

12.3

Seaside

ン ー ン

. . . 249

12.4

XHTML

. . . 252

12.5

CSS:

ン ・

・ ー

. . . 259

12.6

制御

ー 管理

. . . 261

12.7

作成

. . . 268

12.8

AJAX

利用

. . . 274

12.9

. . . 277

III

Advanced Pharo

13

283

13.1

. . . 283

13.2

Smalltalk

復習

. . . 284

13.3

. . . 286

13.4

階層

階層 並列 存在

. . . 287

13.5

Class Behavior

継承

. . . . 290

13.6

Metaclass

. . . . 292

13.7

Metaclass Metaclass

. . . 292

13.8

. . . 294

14

297

14.1

. . . 298

14.2

. . . 302

14.3

辞書

. . . 305

14.4

環境

. . . 307

14.5

実行時 ン

. . . 309

14.6

理解

ン ー

. . . 312

14.7

. . . 316

(8)

14.9

. . . 320

IV

Appendices

A

くあ 質問

325

A.1

. . . 325

A.2

. . . 325

A.3

. . . 326

A.4

Monticello

SqueakSource

使う

. . . 328

A.5

. . . 329

A.6

正規表現 構文解析

. . . 329

(9)

Preface

Pharo

?

Pharo

Smalltalk

ン 言語・環境

実装

ー ン ー

新 い処理系

Pharo

古典的

Smalltalk-80

再実装

Squeak

1

派生

Squeak

主 実験的 教育向

開発

Pharo

開発

凝縮

ー ン

ー ・

目指

動的 言語・環境 研究

開発

頑丈 安定

提供

Pharo

開発

ー ワー

Seaside

ン 実装用

使わ

Pharo

Squeak

問題 解決

Squeak

以前

Pharo

部分

MIT

寄贈

Pharo

2008

3

Squeak

3.9

最初

1.0

2009

7

31

Pharo

Squeak

取 去

一方

Squeak

機能

取 入

例え

Pharo

True Type

Pharo

本物

(

訳注

:Squeak

BlockContext

いう再帰

実装

)

ン ー

洗練

Pharo

高い移植性 持

仮想

Smalltalk

・解析・変更

Pharo

教育向

商用

開発環境

広い範囲 革新的

媒体

1Dan Ingalls  et al., Back to the Future: The Story of Squeak, a Practical Smalltalk Written in

(10)

Pharo

重要 視点 背景

Pharo

過去 単

製 あ

Smalltalk

いう

滅多 成功

Pharo

進化的

変化

方法 取

重要 新機能

開発 実験的

進化

Pharo

受 入

意味

Pharo

一度 完璧 解決

目指

気持

変化 い

積 上

Pharo

Pharo

成功

貢献

こ 本 想定

い 読者

ー ン ー

公開

Squeak

入門書

Squeak by Example

2

名 通

Pharo

Squeak

違い 反映

修正

Pharo

基本

先進的 話題

内容 多岐 わ

教え 本

本 既

ン 言語 い

い 人 向

指向

経験 役 立

Pharo

ン 環境

(

言語 関連 ー

)

紹介

一般的

実例 触

指向設計

技術 方 焦点 当

可能限 例

示 う 思い

(Alec Sharp

素晴

Smalltalk

3

)

Smalltalk

無料 本 他

Pharo

特化

参照

:

http://stephane.ducasse.free.fr/ FreeBooks.html

読者 向け

個々

Smalltalk

記述

知 必要

! Alan Knight

以下

則 表現

4

:

2http://SqueakByExample.org

3Alec Sharp, Smalltalk by Example. McGraw-Hill, 1997 hURL:http://stephane.ducasse.free.fr/

FreeBooks/ByExample/i.

(11)

xi

い う

Smalltalk

学 始

詳細

理解

い 考え 困

Transcript show: ’Hello World’

時間

いう

指向

?

いう問い 対

答え

ー ン 本

以下 意味

ー ン 本

本 内容

表示— 継承

(by-sa)

公開

以下

URL

ン 条件

尊重

本 自由 配布

改変

URL:

http://creativecommons.org/licenses/by-sa/3.0/deed.ja

Pharo

部分

解説

理想 言う

部分 他 人 寄稿

い 思

取 組

参加

い人 連絡

い 私

見 い

!

http://PharoByExample.org

Pharo

Pharo

親切 活動的

役 立

http://www.pharo-project.org

Pharo

http://www.squeaksource.com

Pharo

SourceForge

Pharo

用 追加

例 練習問題

特殊 記法 二 決

例 示

実行可能 短い

式 選択

print it

結果 示

(12)

3 + 4

−→

7 ”3+4を 選択 ’print it’を 選ぶ 7

Pharo

実際 試

(

http://PharoByExample.org

)

ー 例

ン ー

二 目 決

ン 使い

!

謝辞

Squeak

いう

Smalltalk

開発環境

ー ン ー ・

公開

開発者

感謝

Smalltalk

翻訳

許可

Hilaire

Fernandes

Serge Stinckwich

章 寄稿

Damien

Cassou

感謝

査読

Alexandre Bergel Orla Greevy Fabrizio Perin Lukas

Renggli Jorge Ressia Erwann Wernli

特 感謝

ー ン ー ・

快 援助

設置

ン大学

(

)

感謝

Squeak

感謝

(13)

Part I

(14)
(15)

Chapter 1

Pharo

早巡

Pharo

環境 親

概要 解説

Pharo

実際 試 場面

手元 置い

Pharo

い い箇所

:

印 付

Pharo

起動方法

様々

方 基本的

い 知

新 い

定義 仕方

作成

送 方法

1.1

入門

Pharo

http://pharo-project.org

自由

ン ー

ン ー

実際

4

(

1.1)

1.

(VM) Pharo

唯一

主要

ン 用意

1.1

ー 用

Pharo.exe

いう名前

2.

Pharo

頻繁

変更

い部分

1.1

SqueakV39.sources

1

3.

仮想

仮想

実行中

Pharo

1Pharo Squeak 3.9 Squeak

(16)

Figure 1.1: Pharo

ー 用

ン ー

(

.image

)

(

)

(

.changes

)

加え

変更

1.1

pharo.image

pharo.changes

Pharo

Pharo by Example

あ 仮想

使う

2

本書

Pharo

動作

Pharo

使

説明

見 目 振 舞い 違

Pharo

作業

内容 更新

書 込 可能

常 同 場所 置い

直接変

Pharo

格納

書 出

使い

ン ー

仮想

Pharo

開始

自分 書い

ン 書 込 不可

ー 間 共

(

(17)

入門 5

)

同 場所 置い

別 共有

置い

作業

合わ

一番良い方法 選

Figure 1.2:

http://PharoByExample.org

ン ー

起動

Pharo

起動 普通

ン 同

:

&

あ い

ン 名前 後

入力

使

合わ

(

ン あ

正 い ー

ン 自動 選

&

あ い

起動

方 安全

)

Pharo

起動

1

個 大

ワー

開い い

(

1.2)

ー ー

Pharo

依存

ー 使い

Pharo

赤い

(18)

最初 や

1.3 (a)

ワー

いい

背景

表示 Workspace 選択 い ワ

(a)ワー ー (b) ン ー

(c) ー

Figure 1.3:

ワー

(

)

(

)

(

)

Smalltalk

元々

3

想定

設計

ン 足

修飾 ー 押

2

十分

Pharo

使う

1

付い

2

買う

考え 方 いい

(19)

入門 7

様々

ー ー

個人設定 あ

Pharo

いう表現 避

元々

Smalltalk

ン 色 表

3

様々 修飾 ー

(

control ALT meta

)

使う

代わ

以下 用語 用い

:

:

一番

使わ

通常 修飾 ー 使わ

1

背景

ワー

(

1.3 (a))

表示

:

使わ

ー 表示

ー 表示

一覧

い 場所

;

1.3 (b)

該当

い場合 普通

control

修飾 ー

使

う 設定

:

最後

画面上 任意

表示

画面上

回転

1.3 (c)

4

ーン

機能

い 教え

Pharo

方法

依存

shift

ctrl

あ い

shift

option

Time now 入力

print it 選択

右利

(

)

設定

Macintosh

1

使

いえ

Pharo

頻繁 使う

最低

二 以上

ン 付い

投資

設定 変え

動作 望 通

Pharo

ー ー

ー 設定 変更

機能 あ

ン ・

(

System …

Preferences …

Preference Browser…

)

keyboard

swapControlAndAltKeys

ン 使う

入 替え

ン ・

様々

ー ー

設定

ン あ

3 ン 色

著者 色 ン 指 い

思い出

4Pharo 無効 ン ・

(20)

Figure 1.4:

ン ・

1.2

ワー

Pharo

背景 う一度

World

ー 表示

Pharo

右上

画面上 残

ワー

ー 使え 多

Pharo

簡単

World Tools …

(

1.3 (a))

ワー

Pharo

主要

以降 章

使う

1.3

(21)

9

BouncingAtomsMorph new openInWorld

do it (d)

選択

(

1.5)

Figure 1.5:

do it

Pharo

画面左上

原子 弾

表示

今 最初

Smalltalk

式 実行

!

BouncingAtoms-Morph new

結果

BouncingAtomsMorph

生成

openInWorld

BouncingAtomsMorph new

受 取

際 自

bam

new

探索

適切 反応

同様

BouncingAtomsMorph

openInWorld

探索

適切

ン 取

Smalltalker

手続

呼 出

表現 使わ

代わ

自身

ン 責任 持

いう思想 現

何々

代わ

い 礼儀正

(22)

1.4 Pharo

ン 保存 終了

再開

原子

適当 位置

Figure 1.6:

BouncingAtomsMorph

Figure 1.7:

save as …

World

Save as … 選択

myPharo

入力 OK

World

Save and quit 選び

場所

myPharo.image

myPharo.changes

いう

Save and quit

直前

Pharo

仮想

動作中 状態 入

上 好

場所

移動

(

)

同 場所 移動

(

あ い

)

要 あ

今作

myPharo.image

使

Pharo

起動

Pharo

終了

状態 戻

BouncingAtomsMorph

原子 弾 続

Pharo

起動

Pharo

指定

読 込

既 書

大量

(

)

Pharo

使

新 い

命 終え

割 当

(

)

Pharo

終了

普通

(23)

11

う 新

名前 付

保存

使

変更

記録

通常

意識

必要 あ

後 見

回復

保存

変更 再現

重宝

!

使

仮想

1970

年代後半 作

Smalltalk-80

仮想

子孫

仮想

何十年 生 続

!

保存 管理

仮想

基本的

使わ

思う

違い

後 見

管理

共有

良い ー

仮想

非常 便利

Monticello

使え

ン管理

共有

執着

無造作 作

(

必要 修飾

)

使 BouncingAtomsMorph 5

円 表示

BouncingAtoms-Morph

一 一

十字

;

BouncingAtomsMorph

消え

1.5

ワー

(

World

Tools ... 開け

)

位置 変え

ー 出

黄色

(

右下

)

前面 あ

使わ

ン ー

一種

5 い場合 ン ・ halosEnabled

(24)

ワー

Smalltalk

断片 入力

役立

ワー

任意

(TODO

仮想

使う人

手引

)

書 残

ワー

保存

仮想

使わ

ン ー

標準仮想

(

1.2)

入力

:

Transcript show: ’hello world’; cr.

ワー

今入力

様々 箇所

う 単語 上 文字列 終わ あ い 式全体 終わ

いう具合

単語全体 文字列全体あ い

全体 選択

確認

入力 全体 選択 do it (d) 選択

hello world

表示

(

1.8)

う一度

(

ー項目

do it (d)

(d)

do it

cmd–d

い 詳

次 節

!)

(25)

13

1.6

ー ー

式 評価

必要 あ

代わ

ー ー

使う

ー 括弧書

部分 該当

修飾 ー

(control

alt command

あ い

meta)

(

以後

cmd–

表記

)

一度ワ 評価

使 さ い

(

cmd

–d)

do it

print it inspect it explore it

気 い

う 手短

説明

3 + 4 入力

使 do it

何 起

!

3

いう数

+

いう

4

いう引数付

普通

7

ワー

答え

答え 捨

結果 見

代わ

print it

使う

必要 あ

print it

実行

結果

printString

文字列 表示

3+4 選択 print it

(

cmd

–p)

今度 期待通

結果

(

1.9)

Figure 1.9: do it

print it

3 + 4

−→

7

本 約束事

特定

Pharo

print it

(26)

選択さ 7 削除

(Pharo

7 選択

delete

)

3+4 一度選択 今度 inspect it

(

cmd

–i)

SmallInteger: 7

表示

(

1.10)

便利

用い

意味

7

SmallInteger

いう

ン 使

ン 変数

ン 変

数 値 右

ン 表示

式 書

Figure 1.10:

7 self squared 入力 print it

Object 入力 今度

explore it

(

cmd

–I

大文

i)

今度

Object

付い

(

)

root: Object

いう

三角

中身 開い

(

1.11)

似 い

複雑

ー 提供

点 異

見 い

Object

格納

い 要素

直 見

要素 内部構造

(27)

15

Figure 1.11:

Object

1.7

6

重要

後 見

Pharo

興味深い

仮想

使う場合

最 基本的

World

Class browser 選択 7

1.12

Object

一番左

ン以外

空欄

ン 全

一覧

関連

ー 化

Kernel

選択

2

番目

6紛 わ い

Pharo OmniBrowser いう 実装 使わ い OmniBrowser OB

ー 知 い 本 単 曖

昧 避 用い

7 1.12 変え 必要 あ

(28)

code of method "printString" Packages

Classes

Protocols

Methods

name of method method

comment

Figure 1.12: Object

printString

表示

Object 選択

今度 残

表示

3

番目

選択

表示

関連

扱い

い う

ー 分

何 選択

4

番目

ン 表示

printing 選択

printing

今度 文字列表示 属

4

番目

ン 表

printString 選択

今度 下

printString

表示

共有

(

ー ー

)

1.8

見 け

Pharo

方法 複数あ

一 目

今見

使

い 方法

場合

ー 名

(29)

17

二 目

browse

自身

開い

う方法

例え

Boolean

Boolean browse 入力 do it

Boolean

(

1.13)

ー ー

cmd–b (browse)

ー ー

場所

使え

名 選択

cmd–b

使 Boolean

Figure 1.13: Boolean

定義 表示

Boolean

選択

選択

代わ

定義

表示

注意

(

1.13)

定義

作成 依

いう

Smalltalk

ー 送信

Object

Boolean

いう名前

作成

う依頼

Boolean

ン 変数

変数

ー 辞書 空

Kernel-Objects

ン 下

?

専用

(

1.14)

大体 名前 検索

一番 早道

例え

日付 時間 表

cmd

–f

find class …(f) 選択

(30)

Figure 1.14:

Boolean

time

表示

(

1.15)

Time

選択

Time

表示

Time

書い あ

名前 選

cmd–b

(

実際

方法 使え

)

Figure 1.15:

名前

検索

検索

完全

(

最初 大文字

)

入力

場合

(31)

19

1.9

見 け

一部

簡単 推測

現在 時刻 知

い場合

now

いう

now

思う

?

World

Tools ...

Method finder 選択

now

入力 accept

(

return

)

now

now

移動

n

(

方法

使え

)

now

選択

右側

名前

定義

一覧 表示

(

1.16)

名 選択

Figure 1.16:

now

定義 含

存在

何 いう名前

役立

!

例え 文字列 大文字化

’eureka’ ’EUREKA’

いう具合

’eureka’ . ’EUREKA’ 入力

return

(

1.17)

8

(32)

右側

ン 行頭

結果 得

実際 使わ

今回

String asUppercase

先頭

付い い

String

定義

asUppercase

’eureka’ . ’EUREKA’

変換 使わ

付い い

単 名前 同

いう

Character

»asUppercase

実行

’eureka’ Character

Figure 1.17:

例 使

引数 あ

使う

例え 二

整数 最大公約数 求

25. 35. 5

入力

複数 例 使

検索 範囲 絞

詳 い方法 書い あ

1.10

新 く定義

駆動開発

9

(TDD)

登場

書 方法 一変

TDD

背景 あ 思想

振 舞い 期待

ー 本体

先 書

いう

TDD

書い

満足

・ ン 候補 表示 う 推奨 い 含

あ 落 着い Proceed い

(33)

定義 21

大声 強調

言う

いう課題 あ

正確

ういう意味

?

名前

わ い

?

将来

保守

確実 伝え

いい

?

以下

疑問 答え い

文字列

Don’t panic

shout

結果

DON’T PANIC!

理解

変換

Method 1.1:

shout

testShout

self assert: (’Don’’t panic’ shout = ’DON’’T PANIC!’)

Pharo

?

shout String

習慣

StringTest

内 作成

Figure 1.18:

StringTest

新規

StringTest testShout

tests - converting 選択

(

1.18)

選択さ

Smalltalk

(34)

入力

ン 赤 縁取

ン 変更

保存

い い

accept (s)

cmd–s

・保存

仮想

名前 入

う促

仮想

人 書い

作成・変更

人 記録

重要

空白

区切

入力

shout

いう

本当 意図

前 あ

う 確認

他 可能性 あ 名前

提案

(

1.20)

機能 非常 助

今回

作 う

shout 間違い

確認用

ー 一番上 項目 選択

(

1.20)

Figure 1.19:

名前 入力

今作 実行 World

SUnit

TestRunner

開い

さ い

一番左 二 並

上部

ン 少 似 い

左側

表示

(35)

定義 23

Figure 1.20:

StringTest testShout

CollectionsTests-Text 選択 右側

表示さ StringTest

う選択さ Run Selected 実行さ

実行

結果

1.21

う 表示

実行時

ー あ

ー 起

右下

ン 表示

見 わ

StringTest»#testShout

原因

(Smalltalk

StringTest testShout StringTest»#testShout

表記

)

StringTest»#testShout

再度

MessageNotUnderstood: ByteString»shout

いう

開い

Smalltalk

(

1.22)

使い方

6

解説

期待

文字列

shout

書い い い

実行

ー 発生

当然

失敗

確認

良い習慣

仕組

設定

新 い

実行

確認

ー 確認

実行

(

Abandon

)

Smalltalk

Create

使

場 書い

中 新

作成

編集

継続実行

(

Proceed

)

(36)

Figure 1.21: StringTest

実行

Figure 1.22: (

)

String 選択 converting 選択

Method 1.2

作成 accept

(

:

̂

入力

)

(37)

25

shout

self asUppercase, ’!’

文字列連結 意味

shout

String

大文字

末尾 感嘆符 付 足

Pharo

以下 式

戻 値

戻 値

大文字化

感嘆符 付い

文字列

思い通 動

?

う一度

実行

確認

Run Selected 再び 今度

失敗 実行

表示さ

ー 出

成果 保存

一休

!

Figure 1.23:

String

定義

shout

1.11

Pharo

環境 紹介

ン ー 言

主要

使い方 学

Pharo

文法

全部

実行中

Pharo

(38)

更新

実行中

記録

• Pharo

仮想

実行中

同 状態 再現

• Pharo

3

う 設計

3

ー ー

修飾 ー 使え 同

• Pharo

背景部分

表示

ワー

様々

起動

断片 書い 評価

ワー

任意

書い

評価

ワー

ー ー

使う

最 重要

do it

(cmd–d)

print it

(cmd–p)

inspect it

(cmd–i)

explore it

(cmd–I)

browse it

(cmd–b)

Pharo

書い

最 重要

実行

(39)

Chapter 2

最初

簡単

ー :

Lights Out

1

作成

作成 通

Pharo

使用

ー 群

開発者

方法

い 体験

章 扱う開発 ー

・ ン

Monticello

Smalltalk

開発

効率的

Smalltalk

簡潔

ン 言語

開発 ー

言語 非常

統合

開発 手順 手間取

時間 使う

2.1 Lights Out

Figure 2.1: Lights Out

ー 盤

盤上

Pharo

開発 ー

使い方 体験

Lights Out

う簡単

ー 盤 図

2.1

淡黄色

四角形 配列 構成

周囲

(40)

青色 変わ

う一度

淡黄

色 戻

目的

青色 変え

2.1

ー 盤

100

2

種類

構成

Pharo

実装

う一

Pharo

開発 ー

使い

定義

見 い

2.2

作成

1

紹介

仕方

定義

方法 学

作 方 学

create package

選択 2

Figure 2.2:

追加

Figure 2.3:

ー 名

(

PBE-LightsOut

)

入力

accept

(

ーン ー 押

2 ー ・ 標準 2.2

示 い場合 変更 必要 あ FAQ 5, p. 326

(41)

LOCell 定義 29

)

ー 一覧

表示

2.3 LOCell

定義

当然

新 い

い う

ン 編集

ン 自動的 表示

(

2.3

参照

)

Object NameOfSubClass

いう

作成

いう

Smalltalk

ー 式

新 い

何 変数 持

PBE-LightsOut

従来

Smalltalk

いう

違い 何

Smalltalk

関連

内 集約

関係

拡張

Monticello

ン管理

慣習

ー 名

同 名前 使い

通常 二

違い 気

必要 あ

用語 違い 重要

本書

注意深 使い分

Monticello

使い始

見 い

新 い

作成

修正

目的 合

作成

:

Object SimpleSwitchMorph

書 換え

NameOfSubClass LOCell

書 換え

ン 変数

mouseAction

追加

(42)

Class 2.1:

LOCell 定義

SimpleSwitchMorph subclass: #LOCell instanceVariableNames: ’mouseAction’ classVariableNames: ’’

poolDictionaries: ’’

category: ’PBE

-

LightsOut’

新 い

定義

SimpleSwitchMorph

いう既存

LOCell

いう

Smalltalk

(

実際

LOCell

存在

い い

名 表

#LOCell

引数 渡

)

mouseAction

ン 変数 持

いう指定 含

mouseAction

振 舞い

定義

ン 変数

時点

境界線 赤 変わ

注目

(

2.4)

変更

いこ

意味

実際

変更

accept

必要 あ

Figure 2.4:

作成 ン

定義 了解

(accept)

(43)

追加 31

実行

SimpleSwitchMorph

新 い

定義

accept

ン 表示

(

2.5)

編集

定義 表示

下 あ 小

目的 説明

う 促

3

記述

内容

目的 伝え 重要 手段

Smalltalk

重視

中 詳細

哲学

意図

ー 自身 語

いう

(

い い場合

う!

)

詳細

説明

見 い

判断

目的 簡潔 記述

LOCell

入力

accept

さ い

Figure 2.5:

LOCell

2.4

追加

追加

3訳者 確認 環境(Pharo by Example Image 1.3環境) ン あ

代わ 中 あ ? ン 押 目的 書 ン

表示 ン 書 い い場合 ? 箇所 赤

(44)

–all– 選択

編集

作成用

表示

選択

Method 2.2

内容 書 換え

Method 2.2:

LOCell 初期化 1 initialize

2 super initialize. 3 self label: ’’. 4 self borderWidth: 2.

5 bounds := 0@0 corner: 16@16. 6 offColor := Color paleYellow. 7 onColor := Color paleBlue darker. 8 self useSquareCorners.

9 self turnOff

3

行目

’’

文字

間 何 文字 挟

い引用符

二重引用符

注意

’’

空 文字列 表

定義

accept

上記

う ?

詳細

(

本 残

部分

)

簡単 内容 見 い

1

initialize

いう

注目

名前

重要

initialize

いう

慣習的

生成

直後 呼 出

LOCell new

評価

initialize

自動的 送

initialize

態 主

ン 変数 設定

使わ

ー ー

SimpleSwitchMorph initialize

実行

(2

行目

)

ー ー

initialize

実行

継承

状態 適切 初期化

いう

期待

処理

ー ー

initialize

呼 出

継承

状態 初期化

SimpleSwitchMorph initialize

実際 何

不明瞭 状態

処理

危険 冒

ー ー

initialize

呼 出

ン 変数 妥当 初期値 設定

部分

状態

設定

例え

self label: ’’

空文

字列 設定

0@0 corner: 16@16

説明 必要

0@0

x,y

座標 両方

0

設定

Point

実際

0@0

数値

0 @

引数

0

いう

ー 送信

結果 数値

0 Point

座標

(0,0)

(45)

33

0@0 16@16

角 持

Rectangle

Rectangle

ー ー

継承

bounds

変数 代入

Pharo

画面 座標系 原点

y

座標 値 増

注意

部分

い 説明 必要

Smalltalk

書 秘訣

英語

う 読

良い

名 付

自分自身 語

自分 直角 使う

!

,

自分

!

2.5

LOCell

書い

効果 確認

開い LOCell new inspect it さ い

Figure 2.6: LOCell

調

使用

inspector

左側

ン 変数

表示

(

例え

bounds

)

い 右側

ン 変数

値 表示

下側 あ

ン 小

ワー

ワー

選択中

擬似変数

self

参照

(46)

LOCell

選択 さ い self bounds: (200@200 corner: 250@250) do it

bounds 変化 self

openInWorld do it さ い

画面 左上 端

bounds

い 位置

表示

halo

右上 左隣 あ 茶色い ン

移動

右下 あ 黄色

bounds

値 変化

確認

(

bounds

値 見

refresh

必要

)

Figure 2.7:

x さ い

2.6 LOGame

定義

必要

う一

LOGame

定義 表示さ

ー 名

定義 ン

表示

以下

書い

accept

Class 2.3:

LOGame

定義

(47)

LOGame 定義 35

LOGame BorderedMorph Morph

Pharo

図形

ー ー

BorderedMorph

境界線 扱え

Morph

2

行目 あ 引用符 間

ン 変数 名前 入

LOGame initialize

定義

LOGame

Browser

accept さ い

Method 2.4:

初期化 1 initialize

2 | sampleCell width height n | 3 super initialize.

4 n := self cellsPerSide. 5 sampleCell := LOCell new. 6 width := sampleCell width. 7 height := sampleCell height.

8 self bounds: (5@5 extent: ((width*n) @(height*n)) + (2 * self borderWidth)). 9 cells := Matrix new: n tabulate: [ :i :j | self newCellAt: i at: j ].

Pharo

用語 認識

い 警告

Pharo

cellsPerSide

認識

修正

案 い

提示

Figure 2.8: Pharo

未知

検出

Figure 2.9:

新 い ン

ン 変数

宣言

cellsPerSide

い い

後 定義

選択 cellsPerSide

確認

Pharo

cells

認識

い 警告

Pharo

問題

(48)

cell 変数 扱い declare instance 選択

最後

Pharo

最終行 使わ

newCellAt:at:

い 警

同様 流

う一度

LOGame

定義 見

(

instance

)

定義 更新

ン 変数

cells

確認

initialize

中身 見 い

| sampleCell

width height n |

一時変数 宣言

変数

限定

一時変数 呼

説明的 名前 持

一時変数 使う

Smalltalk

定数 変数 区別

特別 構文 あ

宣言

変数

実際

定数 変わ あ

4-7

行目 一度

値 設定

ー 盤

必要 数

境界 表示

十分

必要

判断

cellsPerSide

いう

別 定義

数 決定

責務

委譲

定義

cellsPerSide

ー 送信

initialize

accept

Pharo

confirm, correct, or cancel

警告

定義

い い

使い

書い い

いう

良い習慣

initialize

必要

時点

意味 あ 名前

思考 中断

4

行目

使わ

Smalltalk

self cellsPerSide

cellsPerSide

self

自身 送

ー 盤 一辺 必要

n

割 当

3

LOCell

作成

ー 盤 幅 高

適切 一時変数 代入

8

行目

自身

bounds

設定

詳細 今 気

括弧内

式 原点

(

左上隅

(5,5))

右下隅

指定

十分 長方形 作

理解

最後 行

LOGame

ン 変数

cells

適切 数

行 列 持

Matrix

生成

代入

Matrix

生成

new:tabulate:

Matrix

(

)

実現

new:tabulate:

(

:

)

引数

引数

ン 後 書

引数 括弧内

一緒 書 言語

使

最初

書 方 戸惑う

Figure 1.4: ン ・ 1.2 ワー ー Pharo 背景 う 一度 う 再 World ー 表示 Pharo ー ー あ ー 右上 ン ン 画面上 残 う ワー ー 使え 多 Pharo ー 簡単
Figure 1.5: 式 do it
Figure 1.12: Object printString 表示 い
Figure 1.14: Boolean ン time 含 名 表示 (図 1.15) Time 選択 う Time 表示 Time ン 関 連 書い あ 名前 選 cmd–b (実際 ン 方法 使え ) Figure 1.15: 名前 検索 検索 完全 名 (最初 大文字) 入力 場合 候補 表示 直接開
+7

参照

関連したドキュメント

In light of his work extending Watson’s proof [85] of Ramanujan’s fifth order mock theta function identities [4] [5] [6], George eventually considered q- Appell series... I found

If you are expecting the delay of resignation certificate submission, please enclose the memorandum clarifying the reason that you cannot submit,and the approximate date when

If you have any questions regarding mixing or application rates contact your Agro-K dealer before using this product.. WARNING - Sysstem-CAL is compatible with many fertilizers and

Have the Safety Data Sheet, and if available, the product container or label with you when calling a poison control center or doctor, or going for treatment..

Maximum single application rate is 0.2 lb. oz/A) per season except in Hawaii. In Hawaii, do not apply more than 0.8 lb. oz/A) per season. Retreatment interval is 7 days. Do not

Have the product container or label with you when calling a poison control center or doctor or going for treatment.. FOR CHEMICAL EMERGENCY: Spill, leak, fire, exposure, or

The Customs Administration wishing to obtain the prior written consent of the Customs Administration of the other Contracting Party pursuant to paragraph 2 of this Article may,

If you disclose confidential Company information through social media or networking sites, delete your posting immediately and report the disclosure to your manager or supervisor,