Data, context and interaction: Difference between revisions

Content deleted Content added
WikiCleanerBot (talk | contribs)
m v2.05b - Bot T20 CW#61 - Fix errors for CW project (Reference before punctuation)
Citation bot (talk | contribs)
Alter: url, template type. URLs might have been anonymized. Add: volume, series, s2cid, isbn. | Use this bot. Report bugs. | Suggested by AManWithNoPlan | #UCB_CommandLine
Line 81:
* True object-oriented programming languages like [[Self (programming language)|Self]] attempt to break down the dichotomy between the domains of classful programming and objectful execution, which helps programmers focus on run-time objects. DCI restores the code-level knowledge about the relationships between them in Contexts and in the static relationships between Role methods.<ref name="Artima" />
* [[Dependency injection]] is a longstanding approach to change the functionality of an object at run time by allowing it to "outsource" some of its execution to an external object that can be re-bound at will. Most implementations{{which|date=October 2014}} of dependency injection lead to the [[Schizophrenia (object-oriented programming)|self schizophrenia]] problem,<ref>{{cite web |last1=Coplien |first1=James |title=Why isn't it DCI if you use a wrapper object to represent the Role? |url=https://fulloo.info/doku.php?id=why_isn_t_it_dci_if_you_use_a_wrapper_object_to_represent_the_role |publisher=DCI FAQ}}</ref> which implementations of DCI address properly. Systems such as Elmo use this approach, which brings additional complexity to resolve method ambiguity and duplicate data member names.<ref>James Leigh, Elmo User Guide, http://www.openrdf.org/doc/elmo/1.5/user-guide.html {{Webarchive|url=https://web.archive.org/web/20110721134455/http://www.openrdf.org/doc/elmo/1.5/user-guide.html |date=2011-07-21 }}</ref>{{Full citation needed|date=October 2014}}
* Multi-paradigm design<ref>James Coplien, Multi-paradigm design for C++. Addison-Wesley, 1998.</ref> attempts to separate behavior and structure by according the behavior to a procedural design and the structural component to objects, allowing free access between them, in accord with the design principles of C++. The DCI approach can improve on expressing the relationship between the procedural and structural parts of design and general cohesiveness.<ref name="Empirical Study on Code Comprehension">{{cite webbook |last1=Valdecantos |first1=Héctor Adrián |last2=Tarrit |first2=Katy |last3=Mirakhorli |first3=Mehdi |last4=Coplien |first4=James O. |title=An Empirical Study on Code Comprehension: Data Context Interaction Compared to Classical Object Oriented |url=https://www.researchgate.net/publication/345728720_An_Empirical_Study_on_Code_Comprehension_Data_Context_Interaction_Compared_to_Classical_Object_Oriented345728720 |website=2017 IEEE/ACM 25th International Conference on Program Comprehension (ICPC) |pages=275–285 |doi=10.1109/ICPC.2017.23 |date=May 2017|isbn=978-1-5386-0535-6 |s2cid=10694261 }}</ref>
 
The challenges of object-oriented programming can also be met by addressing its issues on the paradigm level.
Line 94:
concerning the possibilities of this paradigm."<ref name="Empirical Study on Code Comprehension" />
 
According to researchers Bluemke and Stepień at Institute of Computer Science, Warsaw University of Technology, "DCI based systems are very flexible much more than the traditional ones, this is due to the fact that static (Data) and dynamic (Context, Interaction) parts of the system are separated and separation of concerns is very powerful strategy to master the complexity."<ref name="Experiences with DCI Pattern">{{cite webbook |last1=Bluemke |first1=Ilona |last2=Stepień |first2=Anna |title=Experiences with DCI Pattern |website=Software Engineering in Intelligent Systems |series=Advances in Intelligent Systems and Computing |pages=87–96 |doi=10.1007/978-3-319-18473-9_9 |date=2015 |volume=349 |isbn=978-3-319-18472-2 |url=https://www.researchgate.net/publication/279199208_Experiences_with_DCI_pattern279199208}}</ref>
 
==References==