Welcome
Sequences | Units |
---|---|
Course presentation |
|
How to use the FUN Plateform and the Discord forum? |
|
Evaluation and Open Badge |
|
Start-of-course survey |
Module 0: Little Warm-Up with Pharo
Sequences | Units |
---|---|
Module overview |
|
0.1 Pharo Object Model in a Nutshell |
|
0.2 Pharo Syntax in a Nutshell |
|
0.3 Class and Methods Definitions |
|
0.4 Understanding Messages |
|
0.5 Messages for Java Programmers |
|
0.6 Messages: Composition and Precedence |
|
0.7 Understanding Messages: Sequence and Cascade |
|
0.8 Introduction to Blocks |
|
To go further |
|
Module 1: Understanding messages
Sequences | Units |
---|---|
Module overview |
|
1.1 Essence of Dispatch: Taking Pharo Booleans as Example |
|
1.2 Essence of Dispatch: Let the receiver decide |
|
1.3 Inheritance Basics |
|
1.4 Inheritance and Lookup |
|
1.5 About super |
|
1.6 Reification and delegation |
|
Companion exercises |
Module 2: Test-Driven Design
Sequences | Units |
---|---|
Module overview |
|
2.1 Test 101: The minimum you should know |
|
2.2 Tests: Why testing is Important? |
|
2.3 Test-Driven Development |
|
2.4 Xtreme Test Driven Development |
|
2.5 Parametrized Tests |
|
Companion exercises |
Module 3: Hooks: support for evolution
Sequences | Units |
---|---|
Module overview |
|
3.1 An introduction to design patterns |
|
3.2 Message Sends are Plans for Reuse |
|
3.3 Hooks and Template |
|
3.4 Using well asString and printString |
|
3.5 Global to parameter |
|
Companion exercises |
Module 4: Objects: state and behavior
Sequences | Units |
---|---|
Module overview |
|
4.1 Methods: the elementary unit of reuse |
|
4.2 Objects vs. Data |
|
4.3 About global variables |
|
4.4 Fat classes are bad |
|
4.5 Singleton: a Highly Misunderstood Pattern |
|
4.6 Decorator Design Pattern |
|
Companion exercises |
Module 5: Elementary design patterns
Sequences | Units |
---|---|
Module overview |
|
5.1 Composite: a Nice and Common Design Pattern |
|
5.2 About State Design Pattern |
|
5.3 Command Design Pattern |
|
5.4 Delegation vs. Inheritance |
|
5.5 Turning Procedures to Objects |
|
5.6 Blocks vs. Objects |
|
5.7 Avoid Null Checks |
|
5.8 About Fluid APIs |
|
Companion exercises |
Module 6: About double dispatch
Sequences | Units |
---|---|
Module overview |
|
6.1 A double dispatch starter: Stone Paper Scissors |
|
6.2 Double dispatch: Does not have to be symmetrical |
|
6.3 a Die + a DieHandle |
|
6.4 Visitor: Modular and extensible first class actions |
|
6.5 Some discussions on Visitor |
|
6.6 Stone Paper Scissors: The case of results |
|
6.7 Double Dispatch: Adding numbers as a Kata |
|
Companion exercises |
Module 7: Object creation
Sequences | Units |
---|---|
Module overview |
|
7.1 About Null Check |
|
7.2 Customization degree of hooks |
|
7.3 DieHandle new vs. self class new |
|
7.4 Delegation of actions and accumulator |
|
7.5 Behavior delegation at work |
|
7.6 Builder Design Pattern |
|
7.7 Builder API variations |
|
7.8 Did You Really Understand Super? |
|
Companion exercises |
Module 8: Sharing objects
Sequences | Units |
---|---|
Module overview |
|
8.1 Shared variables: A Pharo code idiom |
|
8.2 Sharing with instance specific possibilities |
|
8.3 Shared Pools: Static sharing between hierarchies |
|
8.4 About magic literals |
|
8.5 Flyweight |
|
8.6 TypeObject |
|
8.7 A variation on sharing |
|
Companion exercises |
Module 9: About Inversion of control / Registration
Sequences | Units |
---|---|
Module overview |
|
9.1 About coupling and encapsulation |
|
9.2 Class Methods At Work |
|
9.3 About Registration |
|
9.4 Application settings: From a monolithic to a modular architecture |
|
9.5 Learning from a Sokoban implementation |
|
9.6 Class vs. Object-Oriented Programming |
|
Companion exercises |
Module 10: About Types
Sequences | Units |
---|---|
Module overview |
|
10.1 The two interfaces |
|
10.2 Subclassing vs. Subtyping |
|
10.3 About type and method lookup |
|
10.4 Polymorphic objects: Support for software evolution |
|
10.5 About defensive programming |
|
Companion exercises |
To finish the MOOC
Sequences | Units |
---|---|
Ask for your completion badge! |
|
End-of-course Survey |