"1. Bookクラスの定義"
Object subclass: #Book
instanceVariableNames: 'title author isAvailable'
"Bookの初期化"
!Book methodsFor: 'initialization'!
initialize: aTitle author: anAuthor
title := aTitle.
author := anAuthor.
isAvailable := true.! !
!Book methodsFor: 'accessing'!
title ^title
isAvailable ^isAvailable
isAvailable: aBoolean isAvailable := aBoolean! !
"2. Libraryクラスの定義"
Object subclass: #Library
instanceVariableNames: 'books'
!Library methodsFor: 'initialization'!
initialize
books := OrderedCollection new.! !
!Library methodsFor: 'actions'!
addBook: aBook
books add: aBook.!
checkout: aTitle
| book |
book := books detect: [:b | b title = aTitle] ifNone: [nil].
(book notNil and: [book isAvailable])
ifTrue: [
book isAvailable: false.
Transcript show: aTitle, ' を貸出しました。'; cr]
ifFalse: [
Transcript show: '貸出できません。'; cr]! !
"3. 実行例"
| myLibrary book1 |
myLibrary := Library new.
book1 := Book new initialize: 'オブジェクト指向入門' author: '山田太郎'.
myLibrary addBook: book1.
"貸出処理の実行"
myLibrary checkout: 'オブジェクト指向入門'."your code goes here"
IjEuIEJvb2vjgq/jg6njgrnjga7lrprnvqkiCk9iamVjdCBzdWJjbGFzczogI0Jvb2sKICAgIGluc3RhbmNlVmFyaWFibGVOYW1lczogJ3RpdGxlIGF1dGhvciBpc0F2YWlsYWJsZScKCiJCb29r44Gu5Yid5pyf5YyWIgohQm9vayBtZXRob2RzRm9yOiAnaW5pdGlhbGl6YXRpb24nIQppbml0aWFsaXplOiBhVGl0bGUgYXV0aG9yOiBhbkF1dGhvcgogICAgdGl0bGUgOj0gYVRpdGxlLgogICAgYXV0aG9yIDo9IGFuQXV0aG9yLgogICAgaXNBdmFpbGFibGUgOj0gdHJ1ZS4hICEKCiFCb29rIG1ldGhvZHNGb3I6ICdhY2Nlc3NpbmcnIQp0aXRsZSBedGl0bGUKaXNBdmFpbGFibGUgXmlzQXZhaWxhYmxlCmlzQXZhaWxhYmxlOiBhQm9vbGVhbiBpc0F2YWlsYWJsZSA6PSBhQm9vbGVhbiEgIQoKIjIuIExpYnJhcnnjgq/jg6njgrnjga7lrprnvqkiCk9iamVjdCBzdWJjbGFzczogI0xpYnJhcnkKICAgIGluc3RhbmNlVmFyaWFibGVOYW1lczogJ2Jvb2tzJwoKIUxpYnJhcnkgbWV0aG9kc0ZvcjogJ2luaXRpYWxpemF0aW9uJyEKaW5pdGlhbGl6ZQogICAgYm9va3MgOj0gT3JkZXJlZENvbGxlY3Rpb24gbmV3LiEgIQoKIUxpYnJhcnkgbWV0aG9kc0ZvcjogJ2FjdGlvbnMnIQphZGRCb29rOiBhQm9vawogICAgYm9va3MgYWRkOiBhQm9vay4hCgpjaGVja291dDogYVRpdGxlCiAgICB8IGJvb2sgfAogICAgYm9vayA6PSBib29rcyBkZXRlY3Q6IFs6YiB8IGIgdGl0bGUgPSBhVGl0bGVdIGlmTm9uZTogW25pbF0uCiAgICAoYm9vayBub3ROaWwgYW5kOiBbYm9vayBpc0F2YWlsYWJsZV0pCiAgICAgICAgaWZUcnVlOiBbCiAgICAgICAgICAgIGJvb2sgaXNBdmFpbGFibGU6IGZhbHNlLgogICAgICAgICAgICBUcmFuc2NyaXB0IHNob3c6IGFUaXRsZSwgJyDjgpLosrjlh7rjgZfjgb7jgZfjgZ/jgIInOyBjcl0KICAgICAgICBpZkZhbHNlOiBbCiAgICAgICAgICAgIFRyYW5zY3JpcHQgc2hvdzogJ+iyuOWHuuOBp+OBjeOBvuOBm+OCk+OAgic7IGNyXSEgIQoKIjMuIOWun+ihjOS+iyIKfCBteUxpYnJhcnkgYm9vazEgfApteUxpYnJhcnkgOj0gTGlicmFyeSBuZXcuCmJvb2sxIDo9IEJvb2sgbmV3IGluaXRpYWxpemU6ICfjgqrjg5bjgrjjgqfjgq/jg4jmjIflkJHlhaXploAnIGF1dGhvcjogJ+WxseeUsOWkqumDjicuCm15TGlicmFyeSBhZGRCb29rOiBib29rMS4KCiLosrjlh7rlh6bnkIbjga7lrp/ooYwiCm15TGlicmFyeSBjaGVja291dDogJ+OCquODluOCuOOCp+OCr+ODiOaMh+WQkeWFpemWgCcuInlvdXIgY29kZSBnb2VzIGhlcmUi