
External
Pharo by Example 5.0
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.
- Author
- Ducasse, Zagidulin, Hess, and Chloupis
- Publisher
- LibreTexts
- Source
- LibreTexts
- License
- CC BY-SA
- Language
- EN
- Category
- Information Technology
Contents· 160 sections
- 01: Preface
- 1.01: What is Pharo
- 1.02: Who Should Read This Book
- 1.03: A Word of Advice
- 1.04: An Open Book
- 1.05: The Pharo Community
- 1.06: Examples and Exercises
- 1.07: Acknowledgments
- 1.08: Hyper Special Acknowledgments
- 02: A Quick Tour of Pharo
- 2.01: Installing Pharo
- 2.02: Pharo File Components
- 2.03: Launching Pharo
- 2.04: PharoLauncher
- 2.05: The World Menu
- 2.06: Sending Messages
- 2.07: Saving Quitting and Restarting a Pharo Session
- 2.08: Playgrounds and Transcripts
- 2.09: Keyboard Shortcuts
- 2.10: The System Browser
- 2.11: Finding Classes
- 2.12: Finding Methods
- 2.13: Defining a New Method
- 2.14: Chapter Summary
- 03: A First Application
- 3.01: The Lights Out Game
- 3.02: Creating a New Package
- 3.03: Defining the Class LOCell
- 3.04: Adding Methods to a Class
- 3.05: Inspecting an Object
- 3.06: Defining the Class LOGame
- 3.07: Organizing Methods into Protocols
- 3.08: Finishing the Game
- 3.09: Lets Try Our Code
- 3.10: Saving and Sharing Pharo Code
- 3.11: Chapter Summary
- 04: Syntax in a Nutshell
- 4.01: Syntactic Elements
- 4.02: Pseudo-Variables
- 4.03: Message Sends
- 4.04: Method Syntax
- 4.05: Block Syntax
- 4.06: Conditionals and Loops in a Nutshell
- 4.07: Primitives and Pragmas
- 4.08: Chapter Summary
- 05: Understanding Message Syntax
- 5.01: Identifying Messages
- 5.02: Three Types of Messages
- 5.03: Message Composition
- 5.04: Hints for Identifying Keyword Messages
- 5.05: Expression Sequences
- 5.06: Cascaded Messages
- 5.07: Chapter Summary
- 06: The Pharo Object Model
- 6.01: The Rules of the Model
- 6.02: Everything Is an Object
- 6.03: Every Object Is an Instance of a Class
- 6.04: Instance Structure and Behavior
- 6.05: The Instance Side and the Class Side
- 6.06: Every Class Has a Superclass
- 6.07: Everything Happens by Sending Messages
- 6.08: Method Lookup Follows the Inheritance Chain
- 6.09: Shared Variables
- 6.10: Internal Object Implementation Note
- 6.11: Chapter Summary
- 07: Some of the Key Tools of the Pharo Environment
- 7.01: Pharo Environment Overview
- 7.02: The Main Code Browser
- 7.03: The Inspector
- 7.04: The Debugger
- 7.05: The Process Browser
- 7.06: Finding Methods
- 7.07: Chapter Summary
- 08: Sharing Code and Source Control
- 8.01: Packages Groups of Classes and Methods
- 8.02: Source Control
- 8.03: The File List Browser
- 8.04: In Pharo You Cant Lose Code
- 8.05: Chapter Summary
- 09: SUnit
- 9.01: Introduction
- 9.02: Why Testing Is Important
- 9.03: What Makes a Good Test
- 9.04: SUnit by Example
- 9.05: The SUnit Cookbook
- 9.06: The SUnit Framework
- 9.07: Advanced Features of SUnit
- 9.08: Continuing After a Failure
- 9.09: SUnit Implementation
- 9.10: A Piece of Advices on Testing
- 9.11: Chapter summary
- 10: Basic Classes
- 10.01: Object
- 10.02: Numbers
- 10.03: Characters
- 10.04: Strings
- 10.05: Booleans
- 10.06: Chapter Summary
- 11: Collections
- 11.01: Introduction
- 11.02: The Varieties of Collections
- 11.03: Collection Implementations
- 11.04: Examples of Key Classes
- 11.05: Collection Iterators
- 11.06: Some Hints for Using Collections
- 11.07: Chapter Summary
- 12: Streams
- 12.01: Two Sequences of Elements
- 12.02: Streams vs. Collections
- 12.03: Streaming over Collections
- 12.04: Using Streams for File Access
- 12.05: Chapter Summary
- 13: Morphic
- 13.01: The History of Morphic
- 13.02: Manipulating Morphs
- 13.03: Composing Morphs
- 13.04: Creating and Drawing Your Own Morphs
- 13.05: Interaction and Animation
- 13.06: Interactors
- 13.07: Drag-and-Drop
- 13.08: A Complete Example
- 13.09: More about the Canvas
- 13.10: Chapter Summary
- 14: Seaside by Example
- 14.01: Why Do We Need Seaside
- 14.02: Getting Started
- 14.03: Seaside Components
- 14.04: Rendering HTML
- 14.05: CSS - Cascading Style Sheets
- 14.06: Managing Control Flow
- 14.07: A Complete Tutorial Example
- 14.08: A Quick Look at AJAX
- 14.09: Chapter Summary
- 15: Classes and Metaclasses
- 15.01: Rules for Classes and Metaclasses
- 15.02: Revisiting the Pharo Object Model
- 15.03: Every Class Is an Instance of a Metaclass
- 15.04: The Metaclass Hierarchy Parallels the Class Hierarchy
- 15.05: Every Metaclass Inherits from Class and Behavior
- 15.06: Every Metaclass Is an Instance of Metaclass
- 15.07: The Metaclass of Metaclass Is an Instance of Metaclass
- 15.08: Chapter Summary
- 16: Reflection
- 16.01: Reflection
- 16.02: Introspection
- 16.03: Browsing Code
- 16.04: Classes Method Dictionaries and Methods
- 16.05: Browsing Environments
- 16.06: Accessing the Run-Time Context
- 16.07: Intercepting Messages Not Understood
- 16.08: Objects as Method Wrappers
- 16.09: Pragmas
- 16.10: Chapter Summary
- 17: Regular Expressions in Pharo
- 17.01: Regular Expressions in Pharo
- 17.02: Tutorial Example - Generating a Site Map
- 17.03: Regex Syntax
- 17.04: Regex API
- 17.05: Implementation Notes by Vassili Bykov
- 17.06: Chapter Summary