fork download
  1. Object subclass: Book [
  2. | title borrowed |
  3.  
  4. Book class >> title: aString [
  5. ^self new initTitle: aString
  6. ]
  7.  
  8. initTitle: aString [
  9. title := aString.
  10. borrowed := false.
  11. ^self
  12. ]
  13.  
  14. title [
  15. ^title
  16. ]
  17.  
  18. isBorrowed [
  19. ^borrowed
  20. ]
  21.  
  22. borrow [
  23. borrowed := true.
  24. ]
  25.  
  26. returnBook [
  27. borrowed := false.
  28. ]
  29. ]
  30.  
  31. Object subclass: User [
  32. | name |
  33.  
  34. User class >> name: aString [
  35. ^self new initName: aString
  36. ]
  37.  
  38. initName: aString [
  39. name := aString.
  40. ^self
  41. ]
  42.  
  43. name [
  44. ^name
  45. ]
  46. ]
  47.  
  48. Object subclass: Library [
  49. | books |
  50.  
  51. Library class >> newLibrary [
  52. ^self new init
  53. ]
  54.  
  55. init [
  56. books := OrderedCollection new.
  57. ^self
  58. ]
  59.  
  60. addBook: aBook [
  61. books add: aBook.
  62. ]
  63.  
  64. borrowBook: aBook by: aUser [
  65. (aBook isBorrowed)
  66. ifTrue: [
  67. Transcript show: '貸出中'; cr.
  68. ]
  69. ifFalse: [
  70. aBook borrow.
  71. Transcript show: aUser name;
  72. show: ' が ';
  73. show: aBook title;
  74. show: ' を借りました'; cr.
  75. ].
  76. ]
  77.  
  78. returnBook: aBook [
  79. aBook returnBook.
  80. Transcript show: aBook title;
  81. show: ' を返却しました'; cr.
  82. ]
  83. ]
  84.  
  85. | library book1 user1 |
  86.  
  87. library := Library newLibrary.
  88.  
  89. book1 := Book title: 'オブジェクト指向入門'.
  90.  
  91. user1 := User name: '佐藤'.
  92.  
  93. library addBook: book1.
  94.  
  95. library borrowBook: book1 by: user1.
  96.  
  97. library returnBook: book1.
Success #stdin #stdout 0.01s 8116KB
stdin
Standard input is empty
stdout
佐藤 が オブジェクト指向入門 を借りました
オブジェクト指向入門 を返却しました