Post-object programming is related to design patternss. Many patterns can be thought of as workarounds for languages that do not support post-object techniques directly. For example, the delegation pattern is a workaround for mixins, delegation, and aspects, and the abstract factory pattern and visitor pattern are workarounds for heterogeneous groups and multimethods.
Table of contents |
2 Delegation 3 Aspects 4 Heterogeneous groups 5 Multimethods 6 Criticisms 7 Origins |
Mixins are classes that have inheritance defined to a interface, not to a class. When instantiated, an object must define its parent class.
Delegation. Delegation is one of the original object programming techniques for a model that competes with inheritance. In delegation an object pass the responsability of answering one function explicitly to other object (usually pointed by the original one).
Delegation is a very common technique in the Gang of Four book.
Aspects are a new technique, epitomized by AspectJ.
See also subject-oriented programming and separation of concerns.
Heterogeneous groups are groups where the members have different types. For example; silverware includes forks, spoons, and knives; and animals include mammals, birds, fish, reptiles, and amphibians.
What is the signature for all animals? Mammals and fish share almost no attributes. Mammals breathe air while fish breathe water. Mammals walk on land while fish swim in water. They eat different foods. Yet, it is useful to combine animals together, when feeding pets (cat, parakeet, and goldfish),
or going to the zoo.
In object languages, the signature for animals would be empty. However, this leads to problems because shoes and potatoes also match the signature for animals.
Heterogeneous groups are challenging to object languages, because they link group signatures with group membership. Programmers long ago learned that removing attributes from a signature is hard to understand.
Multimethods implement multiple downcasting directly. The alternative is to implement the visitor pattern.Mixins
Delegation
Aspects
Heterogeneous groups
Multimethods