Advanced object oriented design and development with Pharo
Advanced Object-Oriented Design from a programming perspective. In particular it stresses Test-Driven Design (TDD).
17 juin 2024
40 hours
English
CC BY NC
Course description
This MOOC is about Advanced Object-Oriented Design. You will get to know and understand the key mechanisms and the essence of OOD. Either you are a beginner or an expert in object-oriented programming, this MOOC immerses you in advanced object-oriented design. We are sure that you will not develop the same way after following this unique lecture. It is built on more than 60 years of expert teaching object-oriented design. This MOOC invites you to a journey around 10 modules (with over 60 videos) covering the following topics:
- Understanding messages
- Test-Driven Design
- Hooks: support for evolution
- Objects: state and behavior
- Elementary design patterns
- Double dispatch
- Object creation
- Sharing objects
- Inversion of control
- About types
The MOOC proposes several design exercises ranging from little interpreters to games and quizzes.
Course objectives
At the end of this course, you will know:
- elementary concepts around self, super, and the power of dispatching to dedicated objects.
- how to test applications and how to take advantage of test driven design.
- how to design abstractions that are extensible using hooks.
- to make the difference between data, objects and classes, based on basic principles.
- important design patterns such as composite and state.
- how to compare usage versus inheritance a way to understand the forces in presence in a design.
- the double dispatch mechanism and the visitor design pattern which is based on it.
- patterns to create and initialize objects.
- different techniques and design patterns to share objects.
- the law of demeter and different techniques to achieve Inversion of control.
- typing and its relation with object-oriented design.
Who is this course for?
- Students, beginners and experienced developers
- IT teachers
- Anyone interested in agile methods
Having a first knowledge on object-oriented programming is better to fully understand the advanced topics of this MOOC.
To understand the Pharo syntax, start by taking Module 0: Warm up. If you want to learn more, you can follow the MOOC "Live Object Programming in Pharo" in speed mode.
Course outline
- Module 0: Little Warm up with Pharo
- Module 1: Understanding messages
- Module 2: Test-Driven Design
- Module 3: Hooks: support for evolution
- Module 4: Objects: state and behavior
- Module 5: Elementary design patterns
- Module 6: About double dispatch
- Module 7: Object creation
- Module 8: Sharing objects
- Module 9: About Inversion of control / Registration
- Module 10: About Types
Educational team
Authors:
- Stéphane Ducasse, Research director, University of Lille, Inria
- Luc Fabresse, Professor, University of Lille, IMT Nord Europe, Inria
- Guillermo Polito, permanent researcher, University of Lille, Inria
- Pablo Tesone, engineer, University of Lille, Inria
Pedagogical support:
- Sherazade Djeballah, Learning Designer, Inria Learning Lab
- Sabah Khalfa, Learning Designer, Inria Learning Lab
- Marie Collin, Learning Designer, Inria Learning Lab
Additional resources
- YouTube playlist of Advanced Design MOOC videos
- Advanced Design MOOC videos & slides
- Advanced Design MOOC on github
- Pharo Discord Channel