Schizophrenia (object-oriented programming)

[1] An object can be defined as a computing concept combining data and behavior, and having an identity.

An alternative to classes and inheritance is prototypes and delegation,[2] which is used in prototype-based programming, and is more dynamic.

Herrmann[3] reports that the term was coined by William Harrison, IBM Research, around May 1997 in a set of web pages, which discussed problems incurred by some of the common design patterns (these web pages are no longer publicly available).

Here the use of forwarding is owed to the fact that most mainstream object-oriented programming languages do not support the stronger form of delegation.

Harrison et al proposed subject-oriented programming as a solution, which by static composition avoids any issues of object schizophrenia.