fork download
  1. Object subclass: Book [
  2. | title borrowed |
  3.  
  4. Book class >> title: aTitle [
  5. ^self new initializeTitle: aTitle
  6. ]
  7.  
  8. initializeTitle: aTitle [
  9. title := aTitle.
  10. borrowed := false.
  11. ]
  12.  
  13. borrow [
  14. borrowed
  15. ifTrue: [Transcript show: title , ' is already borrowed'; cr.]
  16. ifFalse: [
  17. borrowed := true.
  18. Transcript show: title , ' borrowed'; cr.
  19. ].
  20. ]
  21.  
  22. returnBook [
  23. borrowed := false.
  24. Transcript show: title , ' returned'; cr.
  25. ]
  26. ]
  27.  
  28. Object subclass: User [
  29. | name |
  30.  
  31. User class >> name: aName [
  32. ^self new initializeName: aName
  33. ]
  34.  
  35. initializeName: aName [
  36. name := aName.
  37. ]
  38.  
  39. borrowBook: aBook [
  40. Transcript show: name , ' borrows a book'; cr.
  41. aBook borrow.
  42. ]
  43. ]
  44.  
  45. Object subclass: Library [
  46. | books |
  47.  
  48. Library class >> newLibrary [
  49. ^self new initialize
  50. ]
  51.  
  52. initialize [
  53. books := OrderedCollection new.
  54. ]
  55.  
  56. addBook: aBook [
  57. books add: aBook.
  58. ]
  59. ]
  60.  
  61. | library book user |
  62.  
  63. library := Library newLibrary.
  64. book := Book title: 'Smalltalk Programming'.
  65. user := User name: 'Sato'.
  66.  
  67. library addBook: book.
  68. user borrowBook: book.
  69. book returnBook.
Success #stdin #stdout #stderr 0.02s 6984KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
ERROR: /home/XYNsRB/prog:1:7: Syntax error: Operator expected
ERROR: /home/XYNsRB/prog:11:4: Syntax error: Illegal start of term
ERROR: /home/XYNsRB/prog:18:27: Syntax error: Operator expected
ERROR: /home/XYNsRB/prog:19:12: Syntax error: Illegal start of term
ERROR: /home/XYNsRB/prog:20:4: Syntax error: Illegal start of term
ERROR: /home/XYNsRB/prog:24:19: Syntax error: Operator expected
ERROR: /home/XYNsRB/prog:25:4: Syntax error: Illegal start of term
ERROR: /home/XYNsRB/prog:37:4: Syntax error: Illegal start of term
ERROR: /home/XYNsRB/prog:41:14: Syntax error: Operator expected
ERROR: /home/XYNsRB/prog:42:4: Syntax error: Illegal start of term
ERROR: /home/XYNsRB/prog:54:4: Syntax error: Illegal start of term
ERROR: /home/XYNsRB/prog:58:4: Syntax error: Illegal start of term
ERROR: /home/XYNsRB/prog:64:13: Syntax error: Operator expected
ERROR: /home/XYNsRB/prog:65:13: Syntax error: Operator expected
ERROR: /home/XYNsRB/prog:67:8: Syntax error: Operator expected
ERROR: /home/XYNsRB/prog:68:5: Syntax error: Operator expected
ERROR: /home/XYNsRB/prog:69:5: Syntax error: Operator expected
ERROR: '$runtoplevel'/0: Undefined procedure: program/0
   Exception: (3) program ? EOF: exit