AOP

Slides available (english version)

Object Oriented Approaches to Programming

This course on object oriented programming is divided in two different parts. The first part deals with the classical approach (class-based, static typing, single dispatch) while the second part presents a more general, multi-paradigm approach (still class-based, but also dynamically typed, functional, and with multiple dispatch and a meta-object protocol).

Chapter 0 relates the history of the paradigm, its origin and its evolution.

  • Chapter 0: Introduction (Slides)

Part One: the Classical Approach

Part one presents the “classical” approach, that is, the most commonly used today. This is the approach of languages such as C++ and Java, which are both used for illustration purposes. The characteristics of this approach are the concepts of “class” for structuring information, “message passing” (single dispatch) for modelling dynamic behavior, all of this in the general context of statically typed languages.

In this part, we present the fundamental concepts underlying this approach and the basic modelling principles that go with it. We also exhibit its limitations and emphasize on the tight connection of those limitations to the underlying languages specificities.

Part Two: a More Advanced Approach

Part two presents an alternative approach to object orientation as described in part one. Although still based on the concept of class, this approach features a number of distinctive traits, in parrticular: dynamic typing, multiple dispatch, and meta-object protocol. Our goal here is to demonstrate that there is no single view on object orientation, and also that the weaknesses of the classical approach disappear in this more expressive version.