"============================================================"
" 大学図書館貸出システム"
" Ideone / GNU Smalltalk用"
"============================================================"
"------------------------------------------------------------"
" Bookクラス"
"------------------------------------------------------------"
Object subclass: #Book
instanceVariableNames: 'isbn title author available'
classVariableNames: ''
poolDictionaries: ''
category: 'UniversityLibrary'!
!Book methodsFor: 'initialization'!
initializeISBN: anISBN title: aTitle author: anAuthor
isbn := anISBN.
title := aTitle.
author := anAuthor.
available := true.
^self
!
! !
!Book methodsFor: 'accessing'!
isbn
^isbn
!
title
^title
!
author
^author
!
isAvailable
^available
!
statusText
available ifTrue: [^'貸出可能'].
^'貸出中'
!
! !
!Book methodsFor: 'loan operations'!
borrow
available ifFalse: [
self error: 'この図書はすでに貸出中です'
].
available := false.
^self
!
returnBook
available ifTrue: [
self error: 'この図書は貸出されていません'
].
available := true.
^self
!
! !
!Book methodsFor: 'printing'!
printOn: aStream
aStream nextPutAll: title.
aStream nextPutAll: ' / '.
aStream nextPutAll: author.
aStream nextPutAll: ' [ISBN: '.
aStream nextPutAll: isbn.
aStream nextPutAll: '] '.
aStream nextPutAll: self statusText
!
! !
"------------------------------------------------------------"
" Memberクラス"
"------------------------------------------------------------"
Object subclass: #Member
instanceVariableNames: 'memberId memberName memberType'
classVariableNames: ''
poolDictionaries: ''
category: 'UniversityLibrary'!
!Member methodsFor: 'initialization'!
initializeId: anId name: aName type: aType
memberId := anId.
memberName := aName.
memberType := aType.
^self
!
! !
!Member methodsFor: 'accessing'!
memberId
^memberId
!
name
^memberName
!
memberType
^memberType
!
typeName