Pharo by Example 5.0

by Ducasse, Zagidulin, Hess, and Chloupis

Pharo by Example 5.0, intended for both students and developers, will guide you gently through the Pharo language and environment by means of a series of examples and exercises. In Pharo everything is an object, and anything can change at run-time under your fingers. Pharo is written in itself so you can explore a complete world. You can feel and talk to objects.

Description from LibreTexts.

Subjects
Engineering, Computer Science
Licence
CC BY-SA 3.0, as LibreTexts states it
Who can read
Tweens profiles and older, judged from its title and subjects

Contents

LibreTexts writes equations in TeX, and here they show as TeX; the PDF has them typeset.

  1. Front Matter
  2. TitlePage
  3. InfoPage
  4. Table of Contents
  5. Licensing
  6. 1: Preface
  7. 1.1: What is Pharo?
  8. 1.2: Who Should Read This Book?
  9. 1.3: A Word of Advice
  10. 1.4: An Open Book
  11. 1.5: The Pharo Community
  12. 1.6: Examples and Exercises
  13. 1.7: Acknowledgments
  14. 1.8: Hyper Special Acknowledgments
  15. 2: A Quick Tour of Pharo
  16. 2.1: Installing Pharo
  17. 2.2: Pharo — File Components
  18. 2.3: Launching Pharo
  19. 2.4: PharoLauncher
  20. 2.5: The World Menu
  21. 2.6: Sending Messages
  22. 2.7: Saving, Quitting and Restarting a Pharo Session
  23. 2.8: Playgrounds and Transcripts
  24. 2.9: Keyboard Shortcuts
  25. 2.10: The System Browser
  26. 2.11: Finding Classes
  27. 2.12: Finding Methods
  28. 2.13: Defining a New Method
  29. 2.14: Chapter Summary
  30. 3: A First Application
  31. 3.1: The Lights Out Game
  32. 3.2: Creating a New Package
  33. 3.3: Defining the Class LOCell
  34. 3.4: Adding Methods to a Class
  35. 3.5: Inspecting an Object
  36. 3.6: Defining the Class LOGame
  37. 3.7: Organizing Methods into Protocols
  38. 3.8: Finishing the Game
  39. 3.9: Let’s Try Our Code
  40. 3.10: Saving and Sharing Pharo Code
  41. 3.11: Chapter Summary
  42. 4: Syntax in a Nutshell
  43. 4.1: Syntactic Elements
  44. 4.2: Pseudo-Variables
  45. 4.3: Message Sends
  46. 4.4: Method Syntax
  47. 4.5: Block Syntax
  48. 4.6: Conditionals and Loops in a Nutshell
  49. 4.7: Primitives and Pragmas
  50. 4.8: Chapter Summary
  51. 5: Understanding Message Syntax
  52. 5.1: Identifying Messages
  53. 5.2: Three Types of Messages
  54. 5.3: Message Composition
  55. 5.4: Hints for Identifying Keyword Messages
  56. 5.5: Expression Sequences
  57. 5.6: Cascaded Messages
  58. 5.7: Chapter Summary
  59. 6: The Pharo Object Model
  60. 6.1: The Rules of the Model
  61. 6.2: Everything Is an Object
  62. 6.3: Every Object Is an Instance of a Class
  63. 6.4: Instance Structure and Behavior
  64. 6.5: The Instance Side and the Class Side
  65. 6.6: Every Class Has a Superclass
  66. 6.7: Everything Happens by Sending Messages
  67. 6.8: Method Lookup Follows the Inheritance Chain
  68. 6.9: Shared Variables
  69. 6.10: Internal Object Implementation Note
  70. 6.11: Chapter Summary
  71. 7: Some of the Key Tools of the Pharo Environment
  72. 7.1: Pharo Environment Overview
  73. 7.2: The Main Code Browser
  74. 7.3: The Inspector
  75. 7.4: The Debugger
  76. 7.5: The Process Browser
  77. 7.6: Finding Methods
  78. 7.7: Chapter Summary
  79. 8: Sharing Code and Source Control
  80. 8.1: Packages — Groups of Classes and Methods
  81. 8.2: Source Control
  82. 8.3: The File List Browser
  83. 8.4: In Pharo, You Can’t Lose Code
  84. 8.5: Chapter Summary
  85. 9: SUnit
  86. 9.1: Introduction
  87. 9.2: Why Testing Is Important
  88. 9.3: What Makes a Good Test?
  89. 9.4: SUnit by Example
  90. 9.5: The SUnit Cookbook
  91. 9.6: The SUnit Framework
  92. 9.7: Advanced Features of SUnit
  93. 9.8: Continuing After a Failure
  94. 9.9: SUnit Implementation
  95. 9.10: A Piece of Advices on Testing
  96. 9.11: Chapter summary
  97. 10: Basic Classes
  98. 10.1: Object
  99. 10.2: Numbers
  100. 10.3: Characters
  101. 10.4: Strings
  102. 10.5: Booleans
  103. 10.6: Chapter Summary
  104. 11: Collections
  105. 11.1: Introduction
  106. 11.2: The Varieties of Collections
  107. 11.3: Collection Implementations
  108. 11.4: Examples of Key Classes
  109. 11.5: Collection Iterators
  110. 11.6: Some Hints for Using Collections
  111. 11.7: Chapter Summary
  112. 12: Streams
  113. 12.1: Two Sequences of Elements
  114. 12.2: Streams vs. Collections
  115. 12.3: Streaming over Collections
  116. 12.4: Using Streams for File Access
  117. 12.5: Chapter Summary
  118. 13: Morphic
  119. 13.1: The History of Morphic
  120. 13.2: Manipulating Morphs
  121. 13.3: Composing Morphs
  122. 13.4: Creating and Drawing Your Own Morphs
  123. 13.5: Interaction and Animation
  124. 13.6: Interactors
  125. 13.7: Drag-and-Drop
  126. 13.8: A Complete Example
  127. 13.9: More about the Canvas
  128. 13.10: Chapter Summary
  129. 14: Seaside by Example
  130. 14.1: Why Do We Need Seaside?
  131. 14.2: Getting Started
  132. 14.3: Seaside Components
  133. 14.4: Rendering HTML
  134. 14.5: CSS - Cascading Style Sheets
  135. 14.6: Managing Control Flow
  136. 14.7: A Complete Tutorial Example
  137. 14.8: A Quick Look at AJAX
  138. 14.9: Chapter Summary
  139. 15: Classes and Metaclasses
  140. 15.1: Rules for Classes and Metaclasses
  141. 15.2: Revisiting the Pharo Object Model
  142. 15.3: Every Class Is an Instance of a Metaclass
  143. 15.4: The Metaclass Hierarchy Parallels the Class Hierarchy
  144. 15.5: Every Metaclass Inherits from Class and Behavior
  145. 15.6: Every Metaclass Is an Instance of Metaclass
  146. 15.7: The Metaclass of Metaclass Is an Instance of Metaclass
  147. 15.8: Chapter Summary
  148. 16: Reflection
  149. 16.1: Reflection
  150. 16.2: Introspection
  151. 16.3: Browsing Code
  152. 16.4: Classes, Method Dictionaries and Methods
  153. 16.5: Browsing Environments
  154. 16.6: Accessing the Run-Time Context
  155. 16.7: Intercepting Messages Not Understood
  156. 16.8: Objects as Method Wrappers
  157. 16.9: Pragmas
  158. 16.10: Chapter Summary
  159. 17: Regular Expressions in Pharo
  160. 17.1: Regular Expressions in Pharo
  161. 17.2: Tutorial Example - Generating a Site Map
  162. 17.3: Regex Syntax
  163. 17.4: Regex API
  164. 17.5: Implementation Notes by Vassili Bykov
  165. 17.6: Chapter Summary
  166. Back Matter
  167. Index
  168. Glossary
  169. Detailed Licensing