CSC/ECE 517 Fall 2012/ch2a 2w15 rr: Difference between revisions
No edit summary |
|||
Line 1: | Line 1: | ||
==Introduction== | ==Introduction== | ||
Object-oriented design is a programming model that began in the late 60's as software programs became more complex. The idea behind the approach was to build software systems by modeling them based on the real-world objects that they were trying to represent. For example, banking systems would contain customer objects, account objects, etc. Today, object-oriented design has been widely adopted <ref> [http://www.objectmentor.com/omSolutions/oops_what.html Introduction to Object Oriented Design]</ref>. When done properly, this approach leads to simple, robust, flexible and modular software. When something goes wrong, the results could be bad. Object oriented design can be seen from different perspectives. In the language-centric perspective, objects are containers of data and methods. The model-centric perspective views the objects as model elements reflecting the real world objects and Responsibility-centric perspective views objects as interacting elements each playing a role in object community. | Object-oriented design is a programming model that began in the late 60's as software programs became more complex. The idea behind the approach was to build software systems by modeling them based on the real-world objects that they were trying to represent. For example, banking systems would contain customer objects, account objects, etc. Today, object-oriented design has been widely adopted <ref> [http://www.objectmentor.com/omSolutions/oops_what.html Introduction to Object Oriented Design]</ref>. When done properly, this approach leads to simple, robust, flexible and modular software. When something goes wrong, the results could be bad. Object oriented design can be seen from different perspectives. In the language-centric perspective, objects are containers of data and methods. The model-centric perspective views the objects as model elements reflecting the real world objects and Responsibility-centric perspective views objects as interacting elements each playing a role in object community. | ||
==Background== | |||
The earliest computers were programmed in their native [http://en.wikipedia.org/wiki/Assembly_language assembly language ], which is inherently reflective as it is programmed by defining the instructions as data. Reflective functionality such as modifying the instructions or analyzing them was commonplace. As programming moved to higher level languages such as [http://en.wikipedia.org/wiki/C_(programming_language) C], this practice disappeared until programming languages with reflection in their type system appeared. Brian Cantwell Smith's 1982 doctoral dissertation<ref>[http://dspace.mit.edu/handle/1721.1/15961 Brian Cantwell, Smith, <i>"Procedural Reflection in Programming Languages, Department of Electrical Engineering and Computer Science"</i>, Massachusetts Institute of Technology, PhD Thesis, 1982]</ref><ref>[http://publications.csail.mit.edu/lcs/specpub.php?id=840 Brian C. Smith, <i>"Reflection and semantics in a procedural language"</i>, Technical Report MIT-LCS-TR-272, Massachusetts Institute of Technology, Cambridge, Mass., January 1982]</ref> introduced the notion of computational reflection in programming languages, | |||
and the notion of the meta-circular interpreter as a component of 3-Lisp<ref>[http://weblog.raganwald.com/2006/11/significance-of-meta-circular_22.html Metacircular Interpreter and Lisp]</ref>. | |||
==References== | ==References== |
Revision as of 21:36, 22 October 2012
Introduction
Object-oriented design is a programming model that began in the late 60's as software programs became more complex. The idea behind the approach was to build software systems by modeling them based on the real-world objects that they were trying to represent. For example, banking systems would contain customer objects, account objects, etc. Today, object-oriented design has been widely adopted <ref> Introduction to Object Oriented Design</ref>. When done properly, this approach leads to simple, robust, flexible and modular software. When something goes wrong, the results could be bad. Object oriented design can be seen from different perspectives. In the language-centric perspective, objects are containers of data and methods. The model-centric perspective views the objects as model elements reflecting the real world objects and Responsibility-centric perspective views objects as interacting elements each playing a role in object community.
Background
The earliest computers were programmed in their native assembly language , which is inherently reflective as it is programmed by defining the instructions as data. Reflective functionality such as modifying the instructions or analyzing them was commonplace. As programming moved to higher level languages such as C, this practice disappeared until programming languages with reflection in their type system appeared. Brian Cantwell Smith's 1982 doctoral dissertation<ref>Brian Cantwell, Smith, "Procedural Reflection in Programming Languages, Department of Electrical Engineering and Computer Science", Massachusetts Institute of Technology, PhD Thesis, 1982</ref><ref>Brian C. Smith, "Reflection and semantics in a procedural language", Technical Report MIT-LCS-TR-272, Massachusetts Institute of Technology, Cambridge, Mass., January 1982</ref> introduced the notion of computational reflection in programming languages, and the notion of the meta-circular interpreter as a component of 3-Lisp<ref>Metacircular Interpreter and Lisp</ref>.
References
<references />