Search code examples
oopprogramming-languages

OOP: class based and prototype based, are there other alternatives?


I know of class-based and protype based object oriented programming languages, are there any other alternatives? What are they?


Solution

  • These are indeed the two main approaches behind object-oriented languages, and I'm not aware of another completely different underlying principle.

    But there exists a lot of variants of both approaches, as well as a lot of other programming language constructs that tackles reuse/extensibility in either class-based or prototype-based language. Examples: traits, mixin, extension methods, partial class, generics, first-class slots, split objects, etc. A lot of such constructions are first proposed in research papers (ECOOP, OOPSLA, POPL conferences), and a few of them become mainstream in popular languages. But I would qualify them as variations and not as groundbreaking new underlying principle.

    Note though than you can mimic object-oriented programming in languages which are not object-oriented per-se. For instance, with Clojure multi-method. Object-oriented and functional programming are also slowly merging, for instance in Scala.

    EDIT

    It's actually hard to make a list of classic/seminal papers, and I don't pretend to have sufficient knowledge to do so. If there is one somewhere, I would be very interested to see it :) Still, here are a few ones that might interest you.

    Inheritance, delegation, subtyping:

    Module, composition, adaptation