Subject-oriented programming: Difference between revisions

Content deleted Content added
Tag: Reverted
m Reverted edits by 103.42.251.38 (talk) (HG) (3.4.12)
Line 8:
===Relationship to aspect-oriented programming===
 
The introduction of [[aspect-oriented programming]] in 1997<ref>{{Cite conference | d oidoi = 10.1007/BF b 0053381BFb0053381| title = Aspect-oriented programming| work = Proceedings of the 11th European Conference on Object-Oriented Programming| conference = [[European Conference on Object-Oriented Programming|ECO OPECOOP]]'97| volume = 1241| pages = 220–242| series = [[Lecture Notes in Computer Science|LN C SLNCS]]| year = 1997| last 1last1 = K i c z a l esKiczales | first 1first1 = G. | author 1author1-link = GrGregor e go r K i c z ale sKiczales | last 2last2 = Lamp in gLamping | first 2first2 = J. | last 3last3 = Me n d h e k a rMendhekar | first 3first3 = A. | last 4last4 = Ma e d aMaeda | first 4first4 = C. | last 5last5 = Lopes | first 5first5 = C. | last 6last6 =Lo in gt i erLoingtier | first 6first6 = J. M. | last 7last7 = Irwin | first 7first7 = J. | is b nisbn = 3-540-63089-9| cites e e r xciteseerx = 10.1.1.115.8660| u r lurl = ht t p http://w w w www.c scs. u b c ubc.ca/~gr e g orgregor/papers/k i c z a l e skiczales-EC O O P 1997ECOOP1997-A O P AOP.p d fpdf}}</ref> raised questions about its relationship to subject-oriented programming, and about the difference between subjects and aspects. These questions were unanswered for some time, but were addressed in the patent on Aspect-oriented programming filed in 1999<ref>K i c z a l esKiczales; Gr e g orGregor J.; Lamp in gLamping; John O.; Lopes; Cristina V.; H u gun inHugunin; James J.; Hi ls daleHilsdale; Erik A.; Boy a p at iBoyapati; Chandrasekhar, Aspect Oriented Programming, United States Patent 6,467,086, October 15, 2002</ref> in which two points emerge as characteristic differences from earlier art:
* the aspect program comprises both a) a cross-cut that comprises a point in the execution where cross-cutting behavior is to be included; and b) a cross-cut action comprising a piece of implementation associated with the cross-cut, the piece of implementation comprising computer readable program code that implements the cross-cutting behavior.
* the aspect transparently forces the cross-cutting behavior on object classes and other software entities
 
In the subject-oriented view, the cross-cut may be placed separately from the aspect (subject) and the behavior is not forced by the aspect, but governed by rules of composition. Hindsight<ref>William Harrison. D eDe-constructing and Re-constructing Aspect-Orientation, Seventh Annual Workshop on Foundations of Aspect Languages, Brussels, Belgium, 1 April 2008, edited by Gary T. Leavens , A CMACM Digital Library, 2008, pp. 43-50</ref> makes it also possible to distinguish aspect-oriented programming by its introduction and exploitation of the concept of a query-like [[poi n t cu tpointcut]] to externally impose the join-points used by aspects in general ways.
 
In the presentation of subject-oriented programming, the join-points were deliberately restricted to field access and method call on the grounds that those were the points at which well-designed frameworks were designed to admit functional extension. The use of externally imposed point cutspointcuts is an important linguistic capability, but remains one of the most controversial features of aspect-oriented programming.<ref>FriedFriedrich rich St e i man nSteimann. The paradoxical success of aspect-oriented programming, Proceedings of the 21st annual A CM SI GPACM LANSIGPLAN conference on Object-oriented programming systems, languages, and applications, Portland, Oregon, USA , 2006, pp. 481 - 497</ref>
 
===Relationship to aspect-oriented software development===