The Truth about OO


Details
The past couple decades has seen object-oriented programming exit its academic niche and become a dominant part of mainstream programming. Claims range from it being the one true way to obtain reusable code, to it being a way to dumb-down programming, and inferior to alternatives found in functional programming. So, how exactly do objects compare with competing methods of modularity, and what exactly are its advantages and disadvantages? You may have heard to "favor composition over inheritance," so when is inheritance useful? (Hint: It's not about dogs or trucks.) In this 2-hour workshop, we'll answer these questions by digging a little into the type theory of objects, and along the way disentangle the notions of modules, objects, subtyping, and inheritance.
Related reading:
William Cook: "On Understanding Data Abstraction, Revisited"
Jonathan Aldrich: "The Power of Interoperability: Why Objects Are Inevitable"
William Cook, Walter Hill, and Peter Canning: "Inheritance is not Subtyping"

The Truth about OO