件名:

Iterator patterns in Smalltalk

MLNo. [DP/ML:1010]
差出人: SHIMADA Keikiさん
送信日時: 2001/09/19 23:40
本文:
文字を小さく文字を中くらいに文字を大きく
こんにちは、Cakeと申します。

イテレータパターンを、現在入門中のSmalltalkで書いてみました。Ruby と同じ
ように、内部イテレータを使っています。メソッド名なども Smalltalk の慣習
に合わせました。

Smalltalkのソースコードはシーケンシャルなテキストファイルではないのです
が、クラス定義、インスタンスメソッド定義、メタクラス定義、クラスメソッド
定義の順番で並べてみました。メソッド定義の前には

"クラス>カテゴリ>メッセージセレクタ"

というコメントをつけています。
(Smalltalkでは二重引用符 "..." がコメントになります。)

# なにぶん入門中の身の上なので、おかしなことを書いているかもしれません。
# お気づきの点はご指摘頂ければ幸いです。


"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "
Object subclass: #Book
instanceVariableNames: 'name '
classVariableNames: ''
poolDictionaries: ''
category: 'Patterns-Example'

"Book>initialize-release>initialize:"
initialize: aString
name := aString

"Book>accessing>name"
name
^ name
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "
Book class
instanceVariableNames: ''

"Book class>instance creation>new:"
new: aString
^ self new initialize: aString
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "
Object subclass: #BookShelf
instanceVariableNames: 'books '
classVariableNames: ''
poolDictionaries: ''
category: 'Patterns-Example'

"BookShelf>initialize-release>initialize:"
initialize: anInteger
books := OrderedCollection new: anInteger

"BookShelf>accessing>add:"
add: aBook
books add: aBook

"BookShelf>accessing>at:"
at: anInteger
^ books at: anInteger

"BookShelf>accessing>size"
size
^ books size

"BookShelf>enumerating>do:"
do: aBlock
books do: [:each | aBlock value: each]
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "
BookShelf class
instanceVariableNames: ''

"BookShelf class>instance creation>new:"
new: anInteger
^ self new initialize: anInteger

"BookShelf class>examples>examples"
example
"BookShelf example."
| aBookShelf |
aBookShelf := BookShelf new: 4.
aBookShelf add: (Book new: 'Around the World in 80 Days').
aBookShelf add: (Book new: 'Bible').
aBookShelf add: (Book new: 'Cinderella').
aBookShelf add: (Book new: 'Daddy-Long-Legs').
aBookShelf do: [:each | Transcript show: each name; cr].
^ aBookShelf

--
SHIMADA, Keiki (島田慶樹)
cake-smd@…
http://www.ops.dti.ne.jp/~cake-smd/
Smalltalk allBehaviorsDo:[:each | each praise: 'Halleluja!!']


引用文表示/非表示
設定タグ:
添付:
このMLトピックに返信(レス)する!
このMLトピックは下記のMLトピックに対するレス(返信)です:
[DP/ML:0997] Iterator patterns in Ruby  (TAKAHASHI Masayoshiさん)
このMLトピックには下記のMLトピックがレス(返信)されています:
[DP/ML:1011] Re: [DP/ML:1010] Iterator patterns in Smalltalk  (Masashi Umezawaさん)
 読み込み 中...
<<1009:再利用可能性はフォースの 1つ 1011:Re: [DP/ML:1010] Iterator patterns in Smalltalk>>
MLトピック表示
切替 トピック表示 メール表示
MLトピック一覧

MLトピック検索:
MLトピックの詳細(メール表示)
MLトピック表示
  切替 トピック表示 メール表示
MLトピック一覧

メーリングリストでつながる!ひろがる!みんなのHappyコミュニティ!

詳細検索
NOEMBLEM/エンブレムが設定されていません。
デザインパターン・メーリングリスト (3966)
 
27 28 29 30 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
メンバーリストは非公開です。
メンバーの日記/フォト/動画
メンバーの投稿は非公開です。
 読み込み中...