Subject-oriented programming: Difference between revisions

Content deleted Content added
Added a link to a subject-oriented programming library
m clean up / dead link template normalisation to assist db scan using AWB (10310)
Line 1:
{{Programming paradigms}}
In [[computing]], '''Subject-Oriented Programming''' is an [[Object-oriented programming|object-oriented]] [[programming paradigm|software paradigm]] in which the state (fields) and behavior (methods) of objects are not seen as intrinsic to the objects themselves, but are provided by various [[Subject (programming)|subjective perceptions]] (“subjects”) of the objects. The term and concepts were first published in September 1993 in a conference paper<ref>William Harrison and Harold Ossher, Subject-Oriented Programming - A Critique of Pure Objects, Proceedings of 1993 Conference on Object-Oriented Programming Systems, Languages, and Applications, September 1993</ref> which was later recognized as being one of the three most influential papers to be presented at the conference between 1986 and 1996.<ref>{{brokenlinkdead link|date=May 2013}}http://www.sigplan.org/award-oopsla.htm</ref> As illustrated in that paper, an analogy is made with the contrast between the philosophical views of [[Plato]] and [[Immanuel Kant|Kant]] with respect to the characteristics of “real” objects, but applied to software ones. For example, while we may all perceive a tree as having a measurable height, weight, leaf-mass, etc., from the point of view of a bird, a tree may also have measures of relative value for food or nesting purposes, or from the point of view of a tax-assessor, it may have a certain taxable value in a given year. Neither the bird’s nor the tax-assessor’s additional state information need be seen as intrinsic to the tree, but are added by the perceptions of the bird and tax-assessor, and from Kant’s analysis, the same may be true even of characteristics we think of as intrinsic.
 
Subject-oriented programming advocates the organization of the [[Class (computer science)|classes]] that describe [[Object (computer science)|objects]] into “subjects”, which may be composed to form larger subjects. At points of access to fields or [[Method (computer science)|methods]], several subjects’ contributions may be composed. These points were characterized as the [[join-point]]s<ref>Harold Ossher , Peri Tarr. Operation-Level Composition: A Case in (Join) Point, in ECOOP ’98 Workshop Reader, 406–409</ref> of the subjects. For example, if a tree is cut-down, the methods involved may need to join behavior in the bird and tax-assessor’s subjects with that of the tree’s own. It is therefore fundamentally a view of the compositional nature of software development, as opposed to the algorithmic (procedural) or representation-hiding (object) nature.