fork(1) download
  1. Object subclass: Animal [
  2. | name |
  3. Animal class >> new: name [^super new value: name; yourself]
  4. value: n [name := n]
  5. play [^name]
  6. ].
  7.  
  8. Animal subclass: Dog [
  9. play [^'わんわん!', name, 'だよ']
  10. ].
  11.  
  12. Animal subclass: Cat [
  13. | sleep |
  14. Cat class >> new: name new: sleep [^super new value: name; valueFlag: sleep; yourself]
  15. valueFlag: f [sleep := f]
  16. play [
  17. sleep = 1
  18. ifTrue: [^'にゃあ!', name, 'だよ', '...でも寝る']
  19. ifFalse: [^'にゃあ!', name, 'だよ']
  20. ]
  21. ].
  22.  
  23. pets := Array new: 2.
  24. pets at: 1 put: (Dog new: 'ぽち').
  25. pets at: 2 put: (Cat new: 'たま' new: 1).
  26. pets do: [:pet | pet play printNl].
  27.  
Success #stdin #stdout 0.01s 8032KB
stdin
Standard input is empty
stdout
'わんわん!ぽちだよ'
'にゃあ!たまだよ...でも寝る'