"========================"
" Book クラス "
"========================"
Object subclass: Book [
| title author borrowed |
Book class >> title: t author: a [
^self new initTitle: t author: a
]
initTitle: t author: a [
title := t.
author := a.
borrowed := false.
^self
]
title [
^title
]
isBorrowed [
^borrowed
]
borrow [
borrowed
ifTrue: [ ^false ].
borrowed := true.
^true
]
returnBook [
borrowed := false.
]
printInfo [
Transcript
show: title;
show: ' / ';
show: author;
show: ' ';
show: (borrowed ifTrue:['(貸出中)'] ifFalse:['(貸出可能)']);
cr.
]
]
"========================"
" User クラス "
"========================"
Object subclass: User [
| name books |
User class >> name: n [
^self new initName: n
]
initName: n [
name := n.
books := OrderedCollection new.
^self
]
borrow: aBook [
(aBook borrow)
ifTrue: [
books add: aBook.
Transcript show: name; show:' が '; show:aBook title; show:' を借りました'; cr.
]
ifFalse: [
Transcript show:'貸出できません'; cr.
].
]
return: aBook [
books remove: aBook ifAbsent: [].
aBook returnBook.
Transcript show:name; show:' が返却しました'; cr.
]
]
"========================"
" Library クラス "
"========================"
Object subclass: Library [
| books |
Library class >> newLibrary [
^self new init
]
init [
books := OrderedCollection new.
^self
]
addBook: aBook [
books add: aBook.
]
showBooks [
books do: [:b | b printInfo ].
]
]