MOOC Programmation objet immersive en Pharo
Pharo est un langage à objets pur, inspiré de Smalltalk, qui offre une expérience unique de développement en constante interaction avec des objets vivants. Pharo est élégant, fun à programmer et très puissant. Il est très facile à apprendre et permet de comprendre des concepts très avancés de façon naturelle. En programmant en Pharo vous êtes immergés dans un monde d'objets vivants. Vous modifiez en live sans cesse des objets qui peuvent représenter des applications web, du code lui-même, des graphismes, du réseau…
Pharo c’est aussi un environnement libre très productif utilisé par des entreprises pour le développement d’applications Web.
À travers ce MOOC vous vous immergerez dans un environnement vivant et vivrez une expérience de programmation nouvelle.
Consultez le contenu complet de formation sur la plateforme Fun MOOC !
Week 1 : Welcome on Board and Syntax Discovery
In this first part, we will present the vision behind the Pharo community and we will do a complete overview of Pharo (syntax and object model). In the next parts, we will come back to these notions and even go further.
We also invite you to install and experiment with Pharo this first week because one of the strength of Pharo is that it can be explored!
Exercises part 1 :
Click on the exercises titles to download the instructions.
- Expressions and Messages
- Developing a Simple Counter
- [Mini-project] TinyBlog: Presentation and Model
Solutions for these exercises will be provided in the section "Exercises" of the following part.
1 : Welcome on Board and Syntax Discovery
CASSOU Damien
DUCASSE Stéphane
FABRESSE Luc
- niveau 1 niveau 2 niveau 3
- document 1 document 2 document 3
Week 2 : Pharo Syntax, Blocks and Inspector
In this second week, you will review the concept of "message", but also the one of "block" which is the cornerstone for making conditions, loops, etc. You will also discover development tools such as the Finder and GTInspector.
Finally, you will understand why developping in Pharo is a different experience through the redo video "Coding a Counter in the Debugger".
Exercises part 2 :
Click on the exercises titles to download the documents.
- Expression and Messages - Solution for part 1 exercise
- Expression Results
- [Mini-project] TinyBlog: Solution for week 1 exercise and Extending and Testing the Model
Solutions for the new exercises will be provided in the section "Exercises" of the following part.
2 : Pharo Syntax, Blocks and Inspector
CASSOU Damien
DUCASSE Stéphane
FABRESSE Luc
- niveau 1 niveau 2 niveau 3
- document 1 document 2 document 3
Week 3 : Design, Class Methods and Collections
We will discuss object-oriented design: why we code with objects and classes the way we do it. Beyond design, part 3 will present Pharo's different kinds of variables and returns as well as the collection libraries and class methods.
Exercises part 3 :
Click on the exercises titles to download the documents.
- Expression Results - Solution for week 2 exercise
- Rewriting Expressions
- [Mini-project] TinyBlog: Solution Exercise Week 2 + A Simple Teapot Web Interface
Solutions for the new exercises will be provided in the section "Exercises" of the following part.
3 : Design, Class Methods and Collections
CASSOU Damien
DUCASSE Stéphane
FABRESSE Luc
- niveau 1 niveau 2 niveau 3
- document 1 document 2 document 3
Week 4 : Inheritance and Lookup and Web Development
In this 4th part, we will discover or revisit the lookup mechanism which is (should be) at the heart of any object-oriented language. We will also dig further into web development with the Pharo Web stack through the Seaside, Magritte and Voyage frameworks.
Exercises part 4 :
Click on the exercises titles to download the documents.
- Rewriting Expressions - Solution for week 3 exercise
- [Mini-project] TinyBlog: Solution Exercise Week 3 + Data Persistency using Voyage and Mongo
- [Mini-project] TinyBlog: Building a Web Interface with Seaside
- Building a Simple Contact Book Application
Solutions for the new exercises will be provided in the section "Exercises" of the following part.
4 : Inheritance and Lookup and Web Development
CASSOU Damien
DUCASSE Stéphane
FABRESSE Luc
- niveau 1 niveau 2 niveau 3
- document 1 document 2 document 3
Week 5 : Exception, Debugging and Reflection
Last part, we dug into inheritance and lookup and we will continue on this topic this week with class methods (yes again) and exceptions.We will also describe some important activities during development such as debugging, testing, introspecting and profiling as well as Pharo tools to support them.
Then, we will also go further into web development by composing Seaside components: this is the killer feature of this framework!
Exercises part 5 :
Click on the exercises titles to download the documents.
- [Mini-project] TinyBlog: Solution Week 4 + Building an Admin Seaside Web Interface with Magritte
- TinyChat
Solutions for the new exercises will be provided in the section "Exercises" of the following part.
5 : Exception, Debugging and Reflection
CASSOU Damien
DUCASSE Stéphane
FABRESSE Luc
- niveau 1 niveau 2 niveau 3
- document 1 document 2 document 3
Week 6 : Rethink Lookup and Advanced Object-Oriented Design
In this part, we will present you some more advanced topics regarding modelisation with objects and its best practices that leads to better code reuse and more robustness against evolution. We will also give you more details on the Pharo infrastructure (VM image, ...) and some data types such as characters, strings, static and dynamic arrays.
Exercises part 6
Click on the exercise title to download the documents.
- [Mini-project] TinyBlog: Solution Week 5 + Deployment
Solutions for the new exercises will be provided in the section "Exercises" of the following week.
6 : Rethink Lookup and Advanced Object-Oriented Design
CASSOU Damien
DUCASSE Stéphane
FABRESSE Luc
- niveau 1 niveau 2 niveau 3
- document 1 document 2 document 3
Week 7 : More on Object-Oriented Design and Testing
In this last part, you will discover some advanced concepts in Pharo such as variable-size classes as well as metaclasses. You will also learn about meta-programming and some more object-oriented design guidelines.
7 : More on Object-Oriented Design and Testing
CASSOU Damien
DUCASSE Stéphane
FABRESSE Luc
- niveau 1 niveau 2 niveau 3
- document 1 document 2 document 3