Passer au contenu de cette vue

Welcome

SequencesUnits

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

SequencesUnits

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

SequencesUnits

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

SequencesUnits

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

SequencesUnits

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

SequencesUnits

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

SequencesUnits

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

SequencesUnits

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

SequencesUnits

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

SequencesUnits

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

SequencesUnits

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

SequencesUnits

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

SequencesUnits

Ask for your completion badge!

End-of-course Survey