Behavioral Subtyping and Composition

Not scheduled yet.

45 minutes



In OO, subclassing serves two purposes - organizing concepts in a taxonomy, and reusing code. This double purpose often becomes an issue as projects evolve, because it's not always possible

Roles allow finer grained control of both aspects - the hierarchy of concepts is looser and tends to favor polymorphism, and the mechanisms for code reuse are simpler and safer.

In this talk I will try to explain my approach to structuring code using roles and delegation, and how it's related to interfaces and embedding in Go, type classes in Haskell, and the object capability security model.