Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
oop-concordance.rtf
Скачиваний:
6
Добавлен:
10.02.2016
Размер:
2.04 Mб
Скачать

2052 - Naming - network implementation of X.500 directory

2082 2 V1.X. Development

2175 - CCITT X.500

2182 Functionality than specified by the X.500 standard. Because dome goes

z

14 At ETH Z?rich, Niklaus Wirth and his colleagues had also been investigating such topics as data abstraction and modular programming (although this had been in common use in the 1960s or earlier). Modula-2 (1978) included both, and their succeeding design, Oberon, included a distinctive approach to object orientation, classes, and such. The approach is unlike Smalltalk, and very unlike C++.

1720 electra.ps.Z

2603 papers. Get "toop.ps.Z" for A4 paper and "toopus.ps.Z" for

2615 papers. Get "tools.ps.Z" for A4 paper formatting or get

2616 "toolsus.ps.Z" for US letter formatting.

2626 papers. Get "guide.ps.Z" for A4 paper formatting or get

2627 "guideus.ps.Z" for US letter formatting.

2637 papers. Get toopinht.ps.Z" for A4 paper formatting or get

2638 "toopinhtus.ps.Z" for US letter formatting.

2707 etet1.10.1.tar.Z". They are looking for

ability

457 More specifically, dynamic inheritance refers to the ability to add, delete,

912 Polymorphism is the ability of an object (or reference) to assume (be replaced

1023 "Polymorphism" means the ability to take several forms. In object-oriented

1024 programming, this refers to the ability of an entity to refer at run-time to

1037 oriented programming". Furthermore, the ability to call a variety of

1210 Generics (or Templates in C++) refer to the ability to parameterize types

1321 as well as the ability to have a strong equivalence with object-oriented

1810 -- easier deployment, with the ability to run multiple HP

1943 With Orbix Version 1.2 IONA has added the ability to dynamically load objects

2178 provides the ability to find an object, register an object, register

added

15 Object-oriented features have been added to many existing languages during that time, including Ada, BASIC, Fortran, Pas cal, and others. Adding these features to languages that were not initially designed for them often led to problems with compatibility and maintainability of code.

138 approach with an added layer of indirection to Smalltalk's handles is found

173 variants to be added without modifying client code (which causes higher defect

203 parents (as any other member) can be added or changed dynamically, providing

623 number of new mechanisms added to COMMON LISP" [Kim ch 4, p70 (D. Moon)].

1091 Dynamic binding allows new objects and code to be interfaced with or added to

1249 object can be added to the delegate list, giving dynamic inheritance (of a

1251 inheritance" in which fields and methods can be added and deleted from objects.

1943 With Orbix Version 1.2 IONA has added the ability to dynamically load objects

2439 to the Software section. Also a couple of articles added to the

al

55 Challenges of object-oriented design are addressed by several methodologies. Most common is known as the design patterns codified by Gamma et al.. More broadly, the term "design patterns" can be used to refer to any general, repeatable solution to a commonly occurring problem in software design. Some of these commonly occurring problems have implications and solutions particular to object-oriented development.

738 underlying theory, and emerging technology within the domain." - Kang et al.

1416 Rumbaugh et al. [Rumbaugh 91]

1420 Wirfs-Brock et al. [Wirfs-Brock 90]

1447 [van den Goor et.al., 1992]

1453 [Hong et.al. 1992]

1467 Wasserman et al, Rumbaugh, Reenskaug et al, and Colbert.

1482 Rumbaugh, J. et.al. - Object-oriented modeling and design, 1991.

1485 Wirfs-Brock, R. et.al. - Designing object-oriented software, 1990.

approaches

63 Both object-oriented programming and relational database management systems (RDBMSs) are extremely common in software today. Since relational databases don't store objects directly (though some RDBMSs have object-oriented features to approximate this), there is a general need to bridge the two worlds. The problem of bridging object-oriented programming accesses and data patterns with relational databases is known as Object-Relational impedance mismatch. There are a number of approaches to cope with this problem, but no general solution without downsides.[20] One of the most common approaches is object-relational mapping, as found in libraries like Java Data Objects and Ruby on Rails' ActiveRecord.

74 A study by Potok has shown no significant difference in productivity between OOP and procedural approaches.

134 based, capability-based, and simple static-based approaches. Descriptor-

135 based approaches (e.g. Smalltalk handles) allow powerful dynamic typing, as

136 do the capability-based approaches which are typically found in object-

140 objects [Kim 89, ch 19 and Yaoqing 93]. Simple static approaches are found in

144 Descriptor-based approaches can have pointer semantics and can be statically

293 upon unsatisfactory results, and finally the latter if the first two approaches

1119 statically-typed OO languages provide polymorphism. Some approaches provide

classification

54 ECMAScript language. JavaScript is perhaps the best known prototype- based programming language, which employs cloning from prototypes rather than inheriting from a class. Another scripting language that takes this approach is Lua. Earlier versions of ActionScript (a partial superset of the ECMA-262 R3, otherwise known as ECMAScript) also used a prototype-based object model. Later versions of ActionScript incorporate a combination of classification and prototype-based object models based largely on the currently incomplete ECMA-262 R4 specification, which has its roots in an early JavaScript 2 Proposal. Microsoft's JScript.NET also includes a mash-up of object models based on the same proposal, and is also a superset of the ECMA-262 R3 specification.

206 classification where any object can be inherited from or cloned to serve as a

268 A class is a general term denoting classification and also has a new meaning

278 Original Aristotlean classification defines a "class" as a generalization of

289 [Booch 94, 4.2] proposes 3 views of classification as useful in OO analysis and

367 Inheritance provides a natural classification for kinds of objects and allows

370 classification, and generalization to understand and deal with the complexities

525 use of inheritance for typical classification. Representation "roles" can be

927 ad-hoc. Cardelli and Wegner followup with another classification scheme,

1012 perhaps IP could be further divided in C+W's above classification.]

complexity

113 driven design. Jacobson also calls for managing complexity with specialized

172 and program complexity (fewer nested programming constructs) and allowing

482 by reducing the real-world's inherent complexity.

638 and cohesion, multiple-polymorphism reduces program complexity by avoiding

640 complexity, as code complexity doesn't grow linearly with lines of code per

1095 program complexity by replacing a nested construct (switch statement) with a

1097 and loose coupling. Another benefit is that code complexity increases not

1099 methods reduces program complexity considerably, even further that removing

1762 reduces the complexity of developing distributed applications so programmers

components

4 Objects are used in software development to implement abstract data structures, by bringing together the data components with the procedures that manipulate them. Objects in object- oriented programming are key in the concept of inheritance; thereby improving program reliability[attribution needed], simplification of software maintenance[attribution needed], the management of libraries, and the division of work in programmer teams. Object-oriented programming languages are generally designed to exploit and enforce these potential advantages of the object model. Objects can also make it possible to handle very disparate objects by the same piece of code, as long as they all have the proper method. Simple, non-OOP programs may be one "long" list of statements (or commands). More complex programs will often group smaller sections of these statements into functions or subroutines each of which might perform a particular task. With designs of this sort, it is common for some of the program's data to be 'global', i.e. accessible from any part of the program. As programs grow in size, allowing any function to modify any piece of data means that bugs can have wide-reaching effects.

875 processing system and software products development as integrated components.

972 components."

1747 HP ORB Plus and HP Distributed Smalltalk are major components of HP's

1773 HP ORB Plus consists of several components: the Distributed Object

2218 DOME Software System Components

2356 Program components frequently need knowledge of an entire program to

2392 manually managed components and libraries often use incompatible memory

2405 Any components or libraries that use containers with different memory

2647 components such as windows, cursors, or scroll bars. The filein

cs

82 Carnegie-Mellon University Professor Robert Harper in March 2011 wrote: "This semester Dan Licata and I are co-teaching a new course on functional programming for first-year prospective CS majors... Object-oriented programming is eliminated entirely from the introductory curriculum, because it is both anti-modular and anti-parallel by its very nature, and hence unsuitable for a modern CS curriculum. A proposed new course on object- oriented design methodology will be offered at the sophomore level for those students who wish to study this topic."

131 **There is a patterns mailing list, email: patterns-request@cs.uiuc.edu,

1489 Sjaak Brinkkemper (sjbr@cs.utwente.nl), which we will forward to the

1698 > CS Dept. University of Zurich, Switzerland. maffeis@ifi.unizh.ch

1706 CS Dept. University of Zurich, Switzerland. maffeis@ifi.unizh.ch

1846 From: rcbc@cs.cornell.edu (Robert Cooper)

2335 anonymous ftp (cs.utexas.edu:pub

2520 are dhoffman@csr.uvic.ca and pstropp@cs.uq.oz.au. Describes an

2654 TreeLW1.1" from st.cs.uiuc.edu.

defines

71 Responsibility-driven design defines classes in terms of a contract, that is, a class should be defined around a responsibility and the information that it shares. This is contrasted by Wirfs-Brock and Wilkerson with data-driven design, where classes are defined around the data-structures that must be held. The authors hold that responsibility-driven design is preferable.

98 in depth. [Martin 92, p 241] defines: "An "object" is anything to which a

100 to certain objects in our awareness". [Rumbaugh 91] defines: "We define an

102 the problem at hand." [Shlaer 88, p 14] defines: "An object is an abstraction

228 [Booch 91, p. 45] defines: "Encapsulation is the process of hiding all of the

230 [Coad 91, 1.1.2] defines: "Encapsulation (Information Hiding). A principle,

278 Original Aristotlean classification defines a "class" as a generalization of

559 Stroustrup's first edition of [Stroustrup 91, '86 p. 37] defines object based

1371 Ouverture Project (ESPRIT funded OMG IDL defines inter-module interfaces)

2028 - defines and implements a comprehensive enterprise

descriptions

291 (conceptual descriptions), and prototype theory (resemblance to an exemplar).

1703 CORBA Implementation Descriptions: The ELECTRA Toolkit

1724 CORBA Implementation Descriptions: HD_DOMS

1737 CORBA Implementation Descriptions: HP ORB Plus and HP Distributed Smalltalk

1845 CORBA Implementation Descriptions: Iris RDOM

1866 CORBA Implementation Descriptions: Object-Oriented Technologies DOME

1918 CORBA Implementation Descriptions: ORBELINE - The SMART Object Request Broker

1929 CORBA Implementation Descriptions: Orbix

2008 CORBA Implementation Descriptions: NCR 'Cooperative Frameworks' -- a Distributed Object Foundation

2120 CORBA Implementation Descriptions: SUITESOFTWARE (SuiteDOME)

details

168 [Stroustrup 90] covers the implementation details of virtual member functions

229 details of an object that do not contribute to its essential characteristics."

663 handling, like C++ friends, usually by allowing representation details of more

718 behavior and adding details needed for actual computer system implementation,

719 including human interaction, task management, and data management details."

780 life-cycle models and their use. Humphrey also details Worldy and Atomic

988 extensional view and set union with an intensional view. Details are left as

1562 details are given at the end of this paper.

1772 HP ORB PLUS DETAILS

1818 TECHNICAL DETAILS AND AVAILABILITY

dispatch

21 Dynamic dispatch – when a method is invoked on an object, the object itself determines what code gets executed by looking up the method at run time in a table associated with the object. This feature distinguishes an object from an abstract data type (or module), which has a fixed (static) implementation of the operations for all instances. It is a programming methodology that gives modular component development while at the same time being very efficient.

26 Similarly, in his 2003 book, Concepts in programming languages, John C. Mitchell identifies four main features: dynamic dispatch, abstraction, subtype polymorphism, and inheritance.Michael Lee Scott in Programming Language Pragmatics considers only encapsulation, inheritance and dynamic dispatch.[16]

36 abstract data types (which have existential types) allow the definition of modules but these do not support dynamic dispatch

642 dispatch, a fancy name for single dispatch after a call, which only provides

644 ignoring the inherent type of parameters in messaging. Double dispatch is

653 type of "one" would be used with double dispatch! In the author's opinion,

654 this is a serious shortcoming. Further, double dispatch would only allow

660 dominate and double dispatch can be suffered, or an embedded dynamic typing

dynamically

11 The Smalltalk language, which was developed at Xerox PARC (by Alan Kay and others) in the 1970s, introduced the term object-oriented programming to represent the pervasive use of objects and messages as the basis for computation. Smalltalk creators were influenced by the ideas introduced in Simula 67, but Smalltalk was designed to be a fully dynamic system in which classes could be created and modified dynamically rather than statically as in Simula 67.[9] Smalltalk and with it OOP were introduced to a wider audience by the August 1981 issue of Byte Magazine.

148 in more conventional languages to fully emulate this style of dynamically typed

175 Virtual members in dynamically typed languages are more flexible because

203 parents (as any other member) can be added or changed dynamically, providing

610 if done dynamically (true dynamic binding). Statically typed dynamic binding

1032 as found in several dynamically typed OO languages such as Actors, CLOS,

1053 dynamically typed languages, polymorphic objects are passed messages and will

1077 lookup is performed (bound) at run-time (dynamically). This is often desired

1943 With Orbix Version 1.2 IONA has added the ability to dynamically load objects

2179 the message interface to an object, and dynamically invoke an object.

file

1390 as well as basic OS i ssues such as memory, file, tasking management.

1570 help (how to use file server)

1572 get <file> (get files returned by index)

1576 size <segment size> (max file size to send)

1946 traditional flat file databases, relational databases or object oriented

2138 and file systems; access and distribute data; guarantee system

2311 length, include file nesting and macro stack depth. This causes

2319 are the Interviews C++ graphics library and the Unix file system (the

2541 Copies of the postscript file can be obtained by sending email

2650 4.1 and VisualWorks 1.0). To get it ftp the file

implemented

3 "Objects" are the foundation of object-oriented programming, and are fundamental data types in object-oriented programming languages. These languages provide extensive syntactic and semantic support for object handling, including a hierarchical type system, special notation for declaring and calling methods, and facilities for hiding selected fields from client programmers. However, objects and object-oriented programming can be implemented in any language.

56 It is intuitive to assume that inheritance creates a semantic "is a" relationship, and thus to infer that objects instantiated from subclasses can always be safely used instead of those instantiated from the superclass. This intuition is unfortunately false in most OOP languages, in particular in all those that allow mutable objects. Subtype polymorphism as enforced by the type checker in OOP languages (with mutable objects) cannot guarantee behavioral subtyping in any context. Behavioral subtyping is undecidable in general, so it cannot be implemented by a program (compiler). Class or object hierarchies need to be carefully designed considering possible incorrect uses that cannot be detected syntactically. This issue is known as the Liskov substitution principle.

299 picture Meta-Classes. Classes must be implemented in some way; perhaps with

363 systems, which often refer to systems implemented in terms of themselves, or

974 Implicit parametric polymorphism can be implemented with type inferencing

1061 typed subtype polymorphism, as provided in Emerald, can be implemented

1118 implemented with tables of function pointers and offsets), and is how

1395 ETHOS was implemented as an operating system for the Ceres computers

1898 implemented to user-specific requirements.

2089 object services can be implemented directly in C++)

mechanism

77 Paul Graham has suggested that the purpose of OOP is to act as a "herding mechanism" that keeps mediocre programmers in mediocre organizations from "doing too much damage". This is at the expense of slowing down productive programmers who know how to use more powerful and more compact techniques.

216 message passing mechanism (as with dynamic scoping) than inheritance, which

245 mechanism with public, private and protected members. Public members (member

524 hierarchy "creation" mechanism, however this loses polymorphism and loses the

884 powerful dynamic typing mechanism (although these existed to some extent in

1759 the Open Software Foundation(tm) as its transport mechanism. DCE is

1776 object-communication mechanism across heterogeneous networks by using the

1803 storage mechanism to facilitate the reuse of objects.

2064 - Dynamic Service Location - provides a mechanism for

2068 - Dynamic Service Activation - provides a mechanism for

meyer

65 OOP can be used to associate real-world objects and processes with digital counterparts. However, not everyone agrees that OOP facilitates direct real-world mapping (see Negative Criticism section) or that real-world mapping is even a worthy goal; Bertrand Meyer argues in Object-Oriented Software Construction that a program is not a model of the world but a model of some part of the world; "Reality is a cousin twice removed". At the same time, some principal limitations of OOP had been noted. For example, the Circle-ellipse problem is difficult to handle using OOP's concept of inheritance.

887 [Meyer 88] contains a brief summ

902 Author, Strachey, Cardelli and Wegner, Booch, Meyer, Stroustrup, and Rumbaugh.

1022 > Meyer's Definition [Meyer 88, sect. 10.1.5 Polymorphism]:

1027 [The Author notes Meyer has a following section 10.1.7 on Static Type,

1030 Meyer is clear between the concept and the Eiffel realization in his

1191 Abstract classes ([Stroustrup 91] and [Meyer 88]) in typing provide a facility

1422 Meyer [Meyer 88]

2327 [1] "Object-Oriented Software Construction" by Meyer puts the argument

modules

8 Object-oriented programming has roots that can be traced to the 1960s. As hardware and software became increasingly complex, manageability often became a concern. Researchers studied ways to maintain software quality and developed object-oriented programming in part to address common problems by strongly emphasizing discrete, reusable units of programming logic[citation needed]. The technology focuses on data rather than processes, with programs composed of self-sufficient modules ("classes"), each instance of which ("objects") contains all the information needed to manipulate its own data structure ("members"). This is in contrast to the existing modular programming that had been dominant for many years that focused on the function of a module, rather than specifically the data, but equally provided for code reuse, and self-sufficient reusable units of programming logic, enabling collaboration through the use of linked modules (subroutines). This more conventional approach, which still persists, tends to consider data and behavior separately.

33 Decoupling refers to careful controls that separate code modules from particular use cases, which increases code re-usability. A common use of decoupling in OOP is to polymorphically decouple the encapsulation (see Bridge pattern and Adapter pattern) - for example, using a method interface which an encapsulated object must satisfy, as opposed to using the object's class.

36 abstract data types (which have existential types) allow the definition of modules but these do not support dynamic dispatch

46 Languages called "pure" OO languages, because everything in them is treated consistently as an object, from primitives such as characters and punctuation, all the way up to whole classes, prototypes, blocks, modules, etc. They were designed specifically to facilitate, even enforce, OO methods. Examples: Scala, Smalltalk, Eiffel, JADE, Emerald.

1196 for loosely coupled modules and in distributed programming [Black 87].

2298 modules must co-operate closely. This leads to a tight binding

2299 between supposedly independent modules.

2468 optimizations, etc. This means that testing modules must be

2469 constructed in a way which is recognized as correct and the modules

network

1771 make requests and receive responses across a distributed network.

1906 - network monitoring & analysis,

1912 and network security; however, DOME does allow stream operators

2033 over a network

2049 systems and network operating systems

2052 - Naming - network implementation of X.500 directory

2074 - Network Configuration Tools - simplifies creation of

2076 in a multiple domain heterogeneous network.

2127 systems, applications, databases, network protocols, and the like.

2137 differences between operating systems, network protocols, databases,

objective-c

13 Object-oriented programming developed as the dominant programming methodology in the early and mid 1990s when programming languages supporting the techniques became widely available. These included Visual FoxPro 3.0, C++[citation needed], and Delphi[citation needed]. Its dominance was further enhanced by the rising popularity of graphical user interfaces, which rely heavily upon object-oriented programming techniques. An example of a closely related dynamic GUI library and OOP language can be found in the Cocoa frameworks on Mac OS X, written in Objective-C, an object-oriented, dynamic messaging extension to C based on Smalltalk. OOP toolkits also enhanced the popularity of event-driven programming (although this concept is not limited to OOP). Some[who?] feel that association with GUIs (real or perceived) was what propelled OOP into the programming mainstream.

386 Objective-C, etc.), lisp-based (CLOS, Flavors, Scheme, etc.), and Pascal-based

608 considered part of the selector in Smalltalk (and hence Objective-C).

688 Objective-C, and etc.) and several possible known selectors together with the

1128 Many languages provide dynamic typing: Smalltalk, Self, Objective-C, and etc.

1256 Next's NextStep OS provides delegation using Objective-C, providing an example

1305 Objective-C (http:

1309 Objective-C

1856 Objective-C, and C++, and runs on most Unix workstations. RDOM is currently

1860 the Smalltalk and Objective-C language interfaces is expected in June.

requirements

176 static typechecking requirements are dropped. See section 2.5.

548 following requirements:

746 (from its requirements, domain and environment) from a user-oriented or domain

750 of OOA specifies a complete system and a complete set of requirements and

1443 Bailin OO requirements specification, Coad-Yourdon OOA, Shlaer-Mellor OOA,

1554 3) End-User Requirements;

1898 implemented to user-specific requirements.

2261 Configuration Requirements

2262 Disk space and memory requirements are dependent on the installation

2264 determine configuration requirements for particular computer systems.

server

1563 3.8.3) Mail Server Access (OMG

1567 Information via Mail Server:

1568 Send the following commands in a letter to the mail server.

1569 mail omg_server@omg.org

1570 help (how to use file server)

1573 log <info> (logs info on server)

1584 mail omg_server@omg.org

2054 - Logging - provides local and server based error

2086 server system

2230 to know the physical location of data, the server of access, or the

service

1728 storage, a Kerberos-based authentication service, a location service, a

2053 provides object naming service

2064 - Dynamic Service Location - provides a mechanism for

2066 system and invoking targeted services based on service

2068 - Dynamic Service Activation - provides a mechanism for

2071 - Event Service (Release 3.1) - Implements an OMG

2073 compliant event service

2181 (ORB) and contains a directory and name service that provides more

2195 - Different levels of messaging service for positive

specialized

9 An object-oriented program may thus be viewed as a collection of interacting objects, as opposed to the conventional model, in which a program is seen as a list of tasks (subroutines) to perform. In OOP, each object is capable of receiving messages, processing data, and sending messages to other objects. Each object can be viewed as an independent "machine" with a distinct role or responsibility. The actions (or "methods") on these objects. The terms "objects" and "oriented" in something like the modern sense of object- oriented programming seem to make their first appearance at MIT in the late 1950s and early 1960s. In the environment of the artificial intelligence group, as early as 1960, "object" could refer to identified items (LISP atoms) with properties (attributes); Alan Kay was later to cite a detailed understanding of LISP internals as a strong influence on his thinking in 1966.[3] Another early MIT example was Sketchpad created by Ivan Sutherland in 1960-61; in the glossary of the 1963 technical report based on his dissertation about Sketchpad, Sutherland defined notions of "object" and "instance" (with the class concept covered by "master" or "definition"), albeit specialized to graphical interaction. Also, an MIT ALGOL version, AED-0, linked data structures ("plexes", in that dialect) directly with procedures, prefiguring what were later termed "messages", "methods" and "member functions".

113 driven design. Jacobson also calls for managing complexity with specialized

328 of specialized Meta-Classes for classes. There is still a Meta-Class as in

329 a 3 Level System, but as a class it also has a specialized Meta-Class, the

509 operations available (set operations are quite common in specialized systems).

534 specialized behavior. All routines in Smalltalk are overridable and non-

625 Multiple-polymorphism allows specialized functions or methods to be defined to

634 The above functions are specialized to each of the cases required allowing

966 where each instantiation creates a specialized version of the code allowing

1057 overrode the virtual method from its base class, providing specialized behavior

storage

1526 the logical modeling and physical storage of objects; and

1728 storage, a Kerberos-based authentication service, a location service, a

1803 storage mechanism to facilitate the reuse of objects.

2287 Without GC programmers must explicitly deallocate dynamic storage when

2290 1: Bugs due to errors in storage deallocation are very hard to find,

2293 storage cannot be made by the programmer. Drawing editors and

2296 3: An object which is responsible for deallocating storage must be

2297 certain that no other object still needs that storage. Thus many

2306 6: Because keeping track of storage is extra work, programmers often

2323 storage deallocation is probably as high as GC. GC algorithms are

supports

264 receiver in per-object protection. This supports a subtyping model, as any

549 - It supports objects that are data abstractions with an interface of named

1366 Choices (research OS, UofI, C++, supports SVR4, See Appendix E, Papers)

1368 Mach (CMU, supports BSD 4.3, really message-based)

1549 arenas besides the distributed system problem, the Group supports Special

1605 a methodology that supports modular production of software;

1610 supports their goals. The OMA publication outlines the

1714 in C++. It supports object-groups, virtual synchrony, multithreading

1761 without modification -- on any other system that supports DCE. HP ORB Plus

2034 - supports TCP

test

1729 set of base classes to speed development, and a test script language.

1859 RDOM has been at beta test sites since January. General release of

2471 As soon as one major class library vendor starts to ship real test code

2611 execution of test cases for OOP. These tools assume a

2645 specific classes that test non-interactive objects such as trees,

2681 *Graphical test coverage to highlight any code not executed during test runs

2682 *Intuitive GUI for easy test analysis

2699 A group of volunteers is building a C++ test harness for the automated

2701 Test Environment Toolkit). To join the group of volunteers, send email to

typical

115 Ordinary Objects - Typical OOPL objects

118 Frameworks*(Typical) - Abstract MO meant for reuse and extension

119 Patterns** (Typical) - Framework-like, crsp. classes and comm patterns only

199 concept, will result. Typical 1 Level objects can contain any number of

202 thus performing the classical role of a class. In typical prototyping systems,

525 use of inheritance for typical classification. Representation "roles" can be

540 any member to be redefined and not just methods, as is typical.

1123 Static typing is more efficient and reliable, but loses power. Typical

1176 (subclass polymorphism), as is typical in most OOPLs. Dropping this

1224 While generics have many advantages, typical limitations include a static

university

82 Carnegie-Mellon University Professor Robert Harper in March 2011 wrote: "This semester Dan Licata and I are co-teaching a new course on functional programming for first-year prospective CS majors... Object-oriented programming is eliminated entirely from the introductory curriculum, because it is both anti-modular and anti-parallel by its very nature, and hence unsuitable for a modern CS curriculum. A proposed new course on object- oriented design methodology will be offered at the sophomore level for those students who wish to study this topic."

1450 Center of Telematics and Information Technology, University of Twente,

1452 State University, Atlanta, USA, 1992, 163 pages.

1559 Any company, university

1698 > CS Dept. University of Zurich, Switzerland. maffeis@ifi.unizh.ch

1706 CS Dept. University of Zurich, Switzerland. maffeis@ifi.unizh.ch

2596 Engineering and Computer Sciences (SECS), University of Durham,

2609 Computer Science (SECS), University of Durham, Durham,

2621 University of Durham, Durham, England. Discusses different

2631 Engineering and Computer Science (SECS), University of Durham,

unix

1805 modification on HP, Sun and IBM UNIX(R) system-based workstations. They

1856 Objective-C, and C++, and runs on most Unix workstations. RDOM is currently

1875 UNIX, Windows, Windows NT, OS

1878 SunOs, Solaris, HP-UX, SGI Unix, Stratus FTX,

2077 NCR Cooperative Frameworks run on multiple UNIX platforms,

2078 including HP-UX, Sun Solaris, NCR 3000 UNIX and NCR

2079 StarServer UNIX SVR4; and on MS Windows 3.1. Cooperative

2215 DOME runs on the major UNIX platforms as well as in other interactive

2319 are the Interviews C++ graphics library and the Unix file system (the

2448 I work for a Unix software house, Qualix Group, in the US. Here is

user

13 Object-oriented programming developed as the dominant programming methodology in the early and mid 1990s when programming languages supporting the techniques became widely available. These included Visual FoxPro 3.0, C++[citation needed], and Delphi[citation needed]. Its dominance was further enhanced by the rising popularity of graphical user interfaces, which rely heavily upon object-oriented programming techniques. An example of a closely related dynamic GUI library and OOP language can be found in the Cocoa frameworks on Mac OS X, written in Objective-C, an object-oriented, dynamic messaging extension to C based on Smalltalk. OOP toolkits also enhanced the popularity of event-driven programming (although this concept is not limited to OOP). Some[who?] feel that association with GUIs (real or perceived) was what propelled OOP into the programming mainstream.

1079 programming and user interaction (e.g. GUIs). Examples can be found in

1219 or user defined type, or even a Stack of Stacks of ... Another example is

1332 interactive user interface facilities, as found in a fully supported OODBMS.

1597 commentaries from software industry leaders, informative user

1689 Windows 3.1, 12 user license: $99.

2229 distributed data management transparent, so that the user never needs

2382 execution to make a compile-time determination of the last user of an

2385 different threads) makes it impossible to statically determine the last user

2646 collections, or numbers. It is not suitable for testing user interface

yourdon

754 adds OO techniques to the traditional structured analysis principles of Yourdon

759 [Yourdon 92] provides a critique, although may only refer to their earlier

779 See [Humphrey 89] and [Yourdon 92] for a few of many discussions on software

863 See also [Yourdon 92], [Wilkie 93], and [Booch 94] for discussions on this

876 [Yourdon 92] even calls for "global modeling"!

1403 Yourdon [Coad 91]

1442 OOA, OOD, conventional analysis, conventional design, DeMarco SA, Yourdon SA,

1466 Hood, Coad and Yourdon, Winter Partners, Shlaer and Mellor, Jacobson,

1472 Coad, P., and Yourdon, E. - Object-oriented analysis (2nd edition), 1991a.

1473 Coad, P., and Yourdon, E. - Object-oriented design, 1991b.

abstraction

1 Object-oriented programming (OOP) is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction, encapsulation, messaging, modularity, polymorphism, and inheritance. Many modern programming languages now support OOP, at least as an option. In computer science, an object is any entity that can be manipulated by the commands of a programming language, such as a value, variable, function, or data structure. (With the later introduction of object-oriented programming the same word, "object", refers to a particular instance of a class)

14 At ETH Z?rich, Niklaus Wirth and his colleagues had also been investigating such topics as data abstraction and modular programming (although this had been in common use in the 1960s or earlier). Modula-2 (1978) included both, and their succeeding design, Oberon, included a distinctive approach to object orientation, classes, and such. The approach is unlike Smalltalk, and very unlike C++.

16 More recently, a number of languages have emerged that are primarily object-oriented yet compatible with procedural methodology, such as Python and Ruby. Probably the most commercially important recent object-oriented languages are Visual Basic.NET (VB.NET) and C#, both designed for Microsoft's .NET platform, and Java, developed by Sun Microsystems. Both frameworks show the benefit of using OOP by creating an abstraction from implementation in their own way. VB.NET and C# support cross-language inheritance, allowing classes defined in one language to subclass classes defined in the other language. Developers usually compile Java to bytecode, allowing Java to run on any operating system for which a Java virtual machine is available. VB.NET and C# make use of the Strategy pattern to accomplish cross-language inheritance, whereas Java makes use of the Adapter pattern[citation needed].

26 Similarly, in his 2003 book, Concepts in programming languages, John C. Mitchell identifies four main features: dynamic dispatch, abstraction, subtype polymorphism, and inheritance.Michael Lee Scott in Programming Language Pragmatics considers only encapsulation, inheritance and dynamic dispatch.[16]

32 Abstraction

101 object as a concept, abstraction or thing with crisp boundaries and meaning for

102 the problem at hand." [Shlaer 88, p 14] defines: "An object is an abstraction

571 Abstraction

894 encapsulation and abstraction (higher cohesion

accessible

4 Objects are used in software development to implement abstract data structures, by bringing together the data components with the procedures that manipulate them. Objects in object- oriented programming are key in the concept of inheritance; thereby improving program reliability[attribution needed], simplification of software maintenance[attribution needed], the management of libraries, and the division of work in programmer teams. Object-oriented programming languages are generally designed to exploit and enforce these potential advantages of the object model. Objects can also make it possible to handle very disparate objects by the same piece of code, as long as they all have the proper method. Simple, non-OOP programs may be one "long" list of statements (or commands). More complex programs will often group smaller sections of these statements into functions or subroutines each of which might perform a particular task. With designs of this sort, it is common for some of the program's data to be 'global', i.e. accessible from any part of the program. As programs grow in size, allowing any function to modify any piece of data means that bugs can have wide-reaching effects.

5 In contrast, the object-oriented approach encourages the programmer to place data where it is not directly accessible by the rest of the program. Instead, the data is accessed by calling specially written functions, commonly called methods, which are either bundled in with the data or inherited from "class objects." These act as the intermediaries for retrieving or modifying the data they control. The programming construct that combines data with a set of methods for accessing and managing those data is called an object. The practice of using subroutines to examine or modify certain kinds of data, however, was also quite commonly used in non-OOP modular programming, well before the widespread use of object-oriented programming.

247 Pop methods will be public. Private members are only accessible from within

249 private. Protected members are accessible from within a class and also from

255 For another example, Smalltalk's class instance variables are not accessible

314 All Objects are instances of a Class but Classes are not accessible to

350 Meta-Classes accessible to users [Kiczales 92, Paepcke 93]. In CLOS

580 In C++ no, because C++ classes are not instances of an accessible class (a

581 Meta-Class) and because C++ classes are not accessible to programs. Classes

assignment

143 in 1989 through the notion of assignment attempt, also known as type narrowing.

379 for differential programming. Inheritance can also double for assignment

499 which is a member of (inherits from) a class is polymorphically assignment

501 class. Such assignment can result in the loss of an object's dynamic type in

998 polymorphism with respect to assignment (and initialization, or replacement if

1000 assignment is based on actual object membership in that type (often of the CLOS

1049 object (pointer or reference (or such parameter)) is assignment compatible with

1147 types during assignment (and hence for parameters) and therefore provides

1166 used for assignment compatibility forcing an assigned object to inherit

author's

514 but in the author's opinion many of their complaints are easily answered. In

653 type of "one" would be used with double dispatch! In the author's opinion,

657 real-world programming situations, unnecessarily. In the author's opinion,

812 [Author's note: The spiral model is often incremental and may waterfall if

911 > Author's Definition:

973 Author's Notes:

2278 written for the FAQ by Paul Johnson and the second is from the FAQ author's

2511 J. Vol 11, No 3. One author's email address is

2528 The Smalltalk Report, Vol. 1, No. 9, pp.3-7. The author's

availability

716 operational characteristics (e.g. reliability, availability, performance)".

1531 Proposals, requesting detailed technical and commercial availability

1818 TECHNICAL DETAILS AND AVAILABILITY

1977 Availability

1979 The full Orbix availability and release schedule looks like:

2012 NCR ANNOUNCES BETA AVAILABILITY

2043 applications for improved availability

2091 developers with general availability set for December, 1993;

2093 with general availability set for 2Q 1994

b

703 classified bibliography in [Booch 94] also contains entries on OOA(B), OOD(F)

796 [Coad 91b] presents the following development cycle breakdown:

1222 See [Booch 87b] for several examples in Ada and [Stroustrup xx] and [Murray

1313 See also Appendices B and E and the comp.database.object newsgroup.

1333 Appendix B also contains references for object-oriented interfaces to

1473 Coad, P., and Yourdon, E. - Object-oriented design, 1991b.

1475 Henderson-Sellers, B. and Edwards, J.M. - Methodology for Object-oriented

2349 3.9b) Why is Garbage Collection Necessary for Object-Oriented Programming? (Object-Oriented Technology)

2398 b) Switches indicating deletion. Many applications must clear the switch to

beta

539 not have to be declared. Eiffel and BETA are examples of languages allowing

886 BETA a followup to Simula (by its original designers).

1299 BETA

1859 RDOM has been at beta test sites since January. General release of

1965 3.1 is now in beta. In January 1994, IONA and SunSoft Inc. signed an

1970 just entered beta testing. Work is underway on Orbix-FT, integration with

1995 Microsoft Windows 3.1 Visual C++ In Beta

2012 NCR ANNOUNCES BETA AVAILABILITY

2709 one. This is a beta release and _should_ compile on any POSIX.1 system.

business

872 found in [Jacobson 92], and along with recent business process "reengineering"

1534 by Technical and Business committees to review these responses, the

1741 PALO ALTO, Calif.--(BUSINESS WIRE) via First! -- Hewlett-Packard Company

1754 business benefit, and offers worldwide support and training programs,

1793 applications for retailers provide the means to a competitive business edge.

1834 HP Apollo 9000 Series 700 workstations and HP 9000 Series 800 business

1839 business, engineering, science, medicine and education in approximately 110

2113 NCR, AT&T's computer business, brings computing and

2251 education. The broad technical and business systems background of our

change

421 by making a small change to a class. Creating a subclass to alter a method

452 Dynamic inheritance allows objects to change and evolve over time. Since base

458 or change parents from objects (or classes) at run-time. Actors, CLOS, and

893 OOP package, naturalness (our "object concept"), resistance to change,

896 On resistance to change, system objects change infrequently while processes

1029 of an object can ever change. Only a reference can be polymorphic: ...".

1034 change its class.]

2438 Last revised on 93.10.27. The most notable change is in the additions

coad

230 [Coad 91, 1.1.2] defines: "Encapsulation (Information Hiding). A principle,

555 [Coad 91] provides another model:

710 [Coad 91]

796 [Coad 91b] presents the following development cycle breakdown:

1402 Coad

1403 Yourdon [Coad 91]

1466 Hood, Coad and Yourdon, Winter Partners, Shlaer and Mellor, Jacobson,

1472 Coad, P., and Yourdon, E. - Object-oriented analysis (2nd edition), 1991a.

1473 Coad, P., and Yourdon, E. - Object-oriented design, 1991b.

contact

1345 addresses and contact information for ODBMS vendors, ODMG membership

1376 For the Spring Papers (free), Contact:

1493 3.8.1) Contact Information (OMG

1497 Contact Person: Richard Soley (technical director) soley@omg.com

1634 Contact documents@omg.org or omg_documents@omg.org for more of the same..

1646 Contact:

2107 Contact Name

2668 For more information contact IPL:

2691 contact Paul Townsend, townsend@mprgate.mpr.ca.

context

56 It is intuitive to assume that inheritance creates a semantic "is a" relationship, and thus to infer that objects instantiated from subclasses can always be safely used instead of those instantiated from the superclass. This intuition is unfortunately false in most OOP languages, in particular in all those that allow mutable objects. Subtype polymorphism as enforced by the type checker in OOP languages (with mutable objects) cannot guarantee behavioral subtyping in any context. Behavioral subtyping is undecidable in general, so it cannot be implemented by a program (compiler). Class or object hierarchies need to be carefully designed considering possible incorrect uses that cannot be detected syntactically. This issue is known as the Liskov substitution principle.

96 (in context, this is "outside the computer domain". A more conventional

210 prototype theory in the context of OOA and OOD.

269 in object-oriented methods. Within the OO context, a class is a specification

284 [Booch's definition in the context of OOD]

748 system and its context

1020 [The author notes Booch's definition above is clearly in the context of

1102 Yes (but be careful of context). To use C++ terminology, an object (not

1253 piece by piece at run-time, although the term "prototyping" in the context of

control

5 In contrast, the object-oriented approach encourages the programmer to place data where it is not directly accessible by the rest of the program. Instead, the data is accessed by calling specially written functions, commonly called methods, which are either bundled in with the data or inherited from "class objects." These act as the intermediaries for retrieving or modifying the data they control. The programming construct that combines data with a set of methods for accessing and managing those data is called an object. The practice of using subroutines to examine or modify certain kinds of data, however, was also quite commonly used in non-OOP modular programming, well before the widespread use of object-oriented programming.

70 OOP was developed to increase the reusability and maintainability of source code. Transparent representation of the control flow had no priority and was meant to be handled by a compiler. With the increasing relevance of parallel hardware and multithreaded coding, developer transparent control flow becomes more important, something hard to achieve with OOP.

122 Control - Introduced in design for control purposes

475 default. This allows a finer granularity of control and consistent name

834 leading to statistical (process) control and sustained improvement. Watts S.

2204 control

2387 clear order of execution. Other dynam ic control structures, such as

easy

298 must have a class (in classical OO anyway). Compilers provide an easy way to

305 timers. In Smalltalk, the situation is more complex. To make this easy, refer

1252 This makes for easy "prototyping", which allows for objects to be constructed

1768 provide a distributed computing environment that's easy to administer. The

2114 communications solutions together to provide people easy

2125 struggle to provide easy access to data while maintaining and

2429 computer programming easy enough for children. The idea was that manipulating

2659 making the tool exceptionally easy to use and productive in

2682 *Intuitive GUI for easy test analysis

extension

12 In the 1970s, Kay's Smalltalk work had influenced the Lisp community to incorporate object- based techniques that were introduced to developers via the Lisp machine. Experimentation with various extensions to Lisp (like LOOPS and Flavors introducing multiple inheritance and mixins), eventually led to the Common Lisp Object System (CLOS, a part of the first standardized object-oriented programming language, ANSI Common Lisp), which integrates functional programming and object-oriented programming and allows extension via a Meta- object protocol. In the 1980s, there were a few attempts to design processor architectures that included hardware support for objects in memory but these were not successful. Examples include the Intel iAPX 432 and the Linn Smart Rekursiv.

13 Object-oriented programming developed as the dominant programming methodology in the early and mid 1990s when programming languages supporting the techniques became widely available. These included Visual FoxPro 3.0, C++[citation needed], and Delphi[citation needed]. Its dominance was further enhanced by the rising popularity of graphical user interfaces, which rely heavily upon object-oriented programming techniques. An example of a closely related dynamic GUI library and OOP language can be found in the Cocoa frameworks on Mac OS X, written in Objective-C, an object-oriented, dynamic messaging extension to C based on Smalltalk. OOP toolkits also enhanced the popularity of event-driven programming (although this concept is not limited to OOP). Some[who?] feel that association with GUIs (real or perceived) was what propelled OOP into the programming mainstream.

118 Frameworks*(Typical) - Abstract MO meant for reuse and extension

287 The intension of a class is its semantics and its extension is its instances

377 programming by extension (as opposed to programming by reinvention

568 object facility. Separate type system support is another extension.

1140 appendixes for an experimental dynamic extension to ML, Alcool-90 and [Cardelli

1200 Owl, an experimental C++ extension (See Appendix E,

2694 that is called tcat++. It is an extension of SRI's tcat program.

http

775 .8 docs can be found online from the Rational home page, http:

846 CMM documentation is available online from: http:

1279 Java (comp.lang.java, http:

1282 http:

1291 Python (new WWW, see http:

1305 Objective-C (http:

1342 WWW: http:

1685 http:

2346 [4] Geodesic Systems provides GC for C and C++. See http:

important

16 More recently, a number of languages have emerged that are primarily object-oriented yet compatible with procedural methodology, such as Python and Ruby. Probably the most commercially important recent object-oriented languages are Visual Basic.NET (VB.NET) and C#, both designed for Microsoft's .NET platform, and Java, developed by Sun Microsystems. Both frameworks show the benefit of using OOP by creating an abstraction from implementation in their own way. VB.NET and C# support cross-language inheritance, allowing classes defined in one language to subclass classes defined in the other language. Developers usually compile Java to bytecode, allowing Java to run on any operating system for which a Java virtual machine is available. VB.NET and C# make use of the Strategy pattern to accomplish cross-language inheritance, whereas Java makes use of the Adapter pattern[citation needed].

45 Simula (1967) is generally accepted as the first language to have the primary features of an object-oriented language. It was created for making simulation programs, in which what came to be called objects were the most important information representation. Smalltalk (1972 to 1980) is arguably the canonical example, and the one with which much of the theory of object-oriented programming was developed. Concerning the degree of object orientation, following distinction can be made:

70 OOP was developed to increase the reusability and maintainability of source code. Transparent representation of the control flow had no priority and was meant to be handled by a compiler. With the increasing relevance of parallel hardware and multithreaded coding, developer transparent control flow becomes more important, something hard to achieve with OOP.

80 Steve Yegge, making a roundabout comparison with Functional programming, writes, "Object Oriented Programming puts the Nouns first and foremost. Why would you go to such lengths to put one part of speech on a pedestal? Why should one kind of concept take precedence over another? It's not as if OOP has suddenly made verbs less important in the way we actually think. It's a strangely skewed perspective."

521 latter part of section 1.9 for an example of why MI is important.

2425 and garbage collection is much too important a tool to be absent from any

2462 I just think it is important.

2464 Why is this important? If classes are really to be reused in

2590 important for OOP and describes one quality program.

kim

140 objects [Kim 89, ch 19 and Yaoqing 93]. Simple static approaches are found in

188 prototyping languages [Kim 89, ch3; Ungar 87, Sciore 89] have a more

431 [Kim 89, ch 4], make good use of mixins by invoking their methods without

462 See also [Kim 89, chs 1, 3] for a discussion and [Coplien 92] for some

566 even migrate across machines. Distributed Smalltalk's proxy objects [Kim 89,

623 number of new mechanisms added to COMMON LISP" [Kim ch 4, p70 (D. Moon)].

664 than one object to be exposed. See [Kim ch 4, pp70-71 (D. Moon)] for an

1241 See [Kim 89, ch 1,3].

1264 CLOS [Kim 89, ch 4] has a looser coupling of methods to classes and doesn't

library

13 Object-oriented programming developed as the dominant programming methodology in the early and mid 1990s when programming languages supporting the techniques became widely available. These included Visual FoxPro 3.0, C++[citation needed], and Delphi[citation needed]. Its dominance was further enhanced by the rising popularity of graphical user interfaces, which rely heavily upon object-oriented programming techniques. An example of a closely related dynamic GUI library and OOP language can be found in the Cocoa frameworks on Mac OS X, written in Objective-C, an object-oriented, dynamic messaging extension to C based on Smalltalk. OOP toolkits also enhanced the popularity of event-driven programming (although this concept is not limited to OOP). Some[who?] feel that association with GUIs (real or perceived) was what propelled OOP into the programming mainstream.

490 as library classes have already been tested and further use provides further

1894 DOME is constructed as a C++ class library, from which ORBs

2319 are the Interviews C++ graphics library and the Unix file system (the

2471 As soon as one major class library vendor starts to ship real test code

2474 about it. If you had to recommend a class library to a committee that

2476 safer with a class library that could be auto-tested in your

2549 during the first release of their initial class library.

2642 There is a smalltalk class library in the Univ. of Illinois archives

making

45 Simula (1967) is generally accepted as the first language to have the primary features of an object-oriented language. It was created for making simulation programs, in which what came to be called objects were the most important information representation. Smalltalk (1972 to 1980) is arguably the canonical example, and the one with which much of the theory of object-oriented programming was developed. Concerning the degree of object orientation, following distinction can be made:

80 Steve Yegge, making a roundabout comparison with Functional programming, writes, "Object Oriented Programming puts the Nouns first and foremost. Why would you go to such lengths to put one part of speech on a pedestal? Why should one kind of concept take precedence over another? It's not as if OOP has suddenly made verbs less important in the way we actually think. It's a strangely skewed perspective."

321 itself (really making this a 3 1

421 by making a small change to a class. Creating a subclass to alter a method

1263 variables - with subtype polymorphism making up the difference.

1684 consider making other platforms available if enough interest. See Appendix E.

2164 customer's applications, making it possible to share information

2622 methods of making class declarations and the implications of

2659 making the tool exceptionally easy to use and productive in

microsoft

1807 3.1 or Windows NT operating systems from Microsoft(R) Corp., once

1961 out versions of Orbix for Microsoft Windows NT, Silicon Graphics IRIX and

1963 UX. IONA demonstrated a version of Orbix for Microsoft Windows 3.1 at

1964 Object World in London, England last October. Orbix for Microsoft Windows

1967 demonstrated interoperability between IONA's Orbix running on Microsoft

1993 Microsoft Windows NT Visual C++ NOW

1994 Microsoft Windows NT Borland NOW

1995 Microsoft Windows 3.1 Visual C++ In Beta

2174 - OLE Microsoft

models

10 Objects as a formal concept in programming were introduced in the 1960s in Simula 67, a major revision of Simula I, a programming language designed for discrete event simulation, created by Ole-Johan Dahl and Kristen Nygaard of the Norwegian Computing Center in Oslo. Simula 67 was influenced by SIMSCRIPT and Hoare's proposed "record classes". Simula introduced the notion of classes and instances or objects (as well as subclasses, virtual methods, coroutines, and discrete event simulation) as part of an explicit programming paradigm. The language also used automatic garbage collection that had been invented earlier for the functional programming language Lisp. Simula was used for physical modeling, such as models to study and improve the movement of ships and their content through cargo ports. The ideas of Simula 67 influenced many later languages, including Smalltalk, derivatives of LISP (CLOS), Object Pascal, and C++.

54 ECMAScript language. JavaScript is perhaps the best known prototype- based programming language, which employs cloning from prototypes rather than inheriting from a class. Another scripting language that takes this approach is Lua. Earlier versions of ActionScript (a partial superset of the ECMA-262 R3, otherwise known as ECMAScript) also used a prototype-based object model. Later versions of ActionScript incorporate a combination of classification and prototype-based object models based largely on the currently incomplete ECMA-262 R4 specification, which has its roots in an early JavaScript 2 Proposal. Microsoft's JScript.NET also includes a mash-up of object models based on the same proposal, and is also a superset of the ECMA-262 R3 specification.

81 Rich Hickey, creator of Clojure, described object systems as over simplistic models of the real world. He emphasized the inability of OOP to model time properly, which is getting increasingly problematic as software systems become more concurrent.

764 models, and even DFD's. Booch, Jacobson, and Wirfs-Brock are examples of OO

780 life-cycle models and their use. Humphrey also details Worldy and Atomic

781 Process Models for finer grained analysis and design in the Defined Process

782 (see below) and discusses other alternatives to the task oriented models. He

1508 (*) development of command models and a common interface for the development

org

1292 www.python.org

1341 Gopher: gopher.odmg.org, port 2073

1343 www.odmg.org:3083

1350 ODMG, send an email message to info@odmg.org and you will receive an

1569 mail omg_server@omg.org

1584 mail omg_server@omg.org

1626 omg.org:pub

1634 Contact documents@omg.org or omg_documents@omg.org for more of the same..

passing

31 Message passing

216 message passing mechanism (as with dynamic scoping) than inheritance, which

595 and message passing.

603 (or message passing, see below):

609 If done statically, this can be referred to as invocation, and message passing

683 can occur with multiple-polymorphism (or even dynamic message passing).

909 polymorphous adj. having, assuming, or passing through many or various forms,

1247 on message passing where an object could delegate responsibility of a message

2380 3. Message Passing Leads to Dynamic Execution Paths

persistent

565 modern notion of relocatable, persistent and distributed objects that can

1324 Another way of looking at Object-Oriented Databases is as a persistent object

1330 lifetime and objects stored indefinitely in an OODB (which are persistent)

1331 having the longest. Persistent object stores do not support query or

1334 relational databases and see APPENDIX E, Papers, Persistent Operating Systems.

1382 See also APPENDIX E, PAPERS, Persistent Operating Systems entry.

1727 exercising objects, a bundled object database for persistent object

1899 Database distribution can be as simple persistent files,

2062 support object persistence. Persistent objects can be

platforms

1641 compliant implementation of CORBA and is available on these platforms:

1684 consider making other platforms available if enough interest. See Appendix E.

1780 platforms.

1784 interoperability of distributed applications across HP and IBM platforms.

1873 DOME provides heterogenous distribution across many platforms

2077 NCR Cooperative Frameworks run on multiple UNIX platforms,

2095 Cooperative Framework implementations on supported platforms

2126 updating a collection of incompatible hardware platforms, operating

2215 DOME runs on the major UNIX platforms as well as in other interactive

references

43 This section does not cite any references or sources. Please help improve this section by adding citations to reliable sources. Unsourced material may be challenged and removed. (August 2009)

145 typeless (or just "typeless", as in Smalltalk) where references (variables)

500 compatible with (can be used in place of) instances or references of that

1234 are generic. Russell and Haskel are more modern variants (references are

1333 Appendix B also contains references for object-oriented interfaces to

2303 and comparing whole objects rather than just references. This is a

2314 scheme each object keeps a count of references to it. When this count

2316 is inefficient (swapping two references will result in three

2401 c) Value semantics store objects rather than references, inhibiting data

research

1366 Choices (research OS, UofI, C++, supports SVR4, See Appendix E, Papers)

1432 Five Object Oriented Development Methods, Research report, HP Laboratories,

1461 Monarchi, David and Puhr, Gretchen I. A Research Typology for Object-Oriented

1468 Wirfs-Brock, R.J. and Johnson, R.E., "Surveying Current Research in Object-

1560 research institution or individual, whether

1712 Electra is a research project and not available yet.

2367 arrays and multiple inheritance). Intensive research [1] in garbage

2688 MicroTech Pacific Research (mpr.ca) has a C++ class testing tool called

2692 Software Research Inc. (625 Third St, San Francisco, CA 94107-1997,

solaris

1682 SunOS 4.x, Solaris 2.3, and OSF

1878 SunOs, Solaris, HP-UX, SGI Unix, Stratus FTX,

1959 IONA released Orbix for SunSoft Solaris and SunOS at the Object World

1968 Windows 3.1 and SunSoft's Distributed Objects Everywhere (DOE) on Solaris.

1987 Solaris 2.x SPARCompiler 3.0.2 NOW

1988 Solaris 2.x SPARCompiler 4.0 NOW

1989 Solaris 2.x GNU 2.5.7 NOW

2078 including HP-UX, Sun Solaris, NCR 3000 UNIX and NCR

2711 software will have the fewest problems on SunOS or Solaris releases.

standards

1550 Interest Groups for discussion of possible standards in other areas. These

1692 - an open system, standards compliance, object-oriented architecture,

2156 - standards compliance

2167 o Standards Compliant

2168 DOME is compliant with the following standards:

2183 beyond what many of the standards require, it makes the task of

2186 SUITESOFTWARE is a member of various standards groups and conforms

2187 its products to industry standards as they are adopted.

2275 [Covers CORBA standards with respect to OODBs]

subclasses

10 Objects as a formal concept in programming were introduced in the 1960s in Simula 67, a major revision of Simula I, a programming language designed for discrete event simulation, created by Ole-Johan Dahl and Kristen Nygaard of the Norwegian Computing Center in Oslo. Simula 67 was influenced by SIMSCRIPT and Hoare's proposed "record classes". Simula introduced the notion of classes and instances or objects (as well as subclasses, virtual methods, coroutines, and discrete event simulation) as part of an explicit programming paradigm. The language also used automatic garbage collection that had been invented earlier for the functional programming language Lisp. Simula was used for physical modeling, such as models to study and improve the movement of ships and their content through cargo ports. The ideas of Simula 67 influenced many later languages, including Smalltalk, derivatives of LISP (CLOS), Object Pascal, and C++.

56 It is intuitive to assume that inheritance creates a semantic "is a" relationship, and thus to infer that objects instantiated from subclasses can always be safely used instead of those instantiated from the superclass. This intuition is unfortunately false in most OOP languages, in particular in all those that allow mutable objects. Subtype polymorphism as enforced by the type checker in OOP languages (with mutable objects) cannot guarantee behavioral subtyping in any context. Behavioral subtyping is undecidable in general, so it cannot be implemented by a program (compiler). Class or object hierarchies need to be carefully designed considering possible incorrect uses that cannot be detected syntactically. This issue is known as the Liskov substitution principle.

250 within subclasses (also called derived classes). A Stack's representation

259 class. All Smalltalk instance variables can be accessed by subclasses,

445 same names for instance variables of subclasses illegal.

485 available to all subclasses throughout the diagram. All attributes available

486 in Personal computers are also available to all of its subclasses. This kind

939 subtypes and subclasses (inheritance). Strachey's parametric polymorphism is

2648 includes Tree classes, Tester itself, and subclasses of Tester that are

sunos

1644 1, SunOS, ULTRIX, Digital VAX

1682 SunOS 4.x, Solaris 2.3, and OSF

1878 SunOs, Solaris, HP-UX, SGI Unix, Stratus FTX,

1959 IONA released Orbix for SunSoft Solaris and SunOS at the Object World

1983 SunOS 4.1 SPARCompiler 2.1 NOW

1984 SunOS 4.1 SPARCompiler 3.0.2 NOW

1985 SunOS 4.1 Lucid 3.1 NOW

1986 SunOS 4.1 GNU 2.5.8 NOW

2711 software will have the fewest problems on SunOS or Solaris releases.

theory

41 Attempts to find a consensus definition or theory behind objects have not proven very successful (however, see Abadi & Cardelli, A Theory of Objects[18] for formal definitions of many OOP concepts and constructs), and often diverge widely. For example, some definitions focus on mental activities, and some on program structuring. One of the simpler definitions is that OOP is the act of using "map" data structures or arrays that can contain functions and pointers to other maps, all with some syntactic and scoping sugar on top. Inheritance can be performed by cloning the maps (sometimes called "prototyping"). OBJECT:=>> Objects are the run time entities in an object-oriented system. They may represent a person, a place, a bank account, a table of data or any item that the program has to handle.

45 Simula (1967) is generally accepted as the first language to have the primary features of an object-oriented language. It was created for making simulation programs, in which what came to be called objects were the most important information representation. Smalltalk (1972 to 1980) is arguably the canonical example, and the one with which much of the theory of object-oriented programming was developed. Concerning the degree of object orientation, following distinction can be made:

205 term "Prototype" usually refers to prototype theory, a recent theory of

210 prototype theory in the context of OOA and OOD.

291 (conceptual descriptions), and prototype theory (resemblance to an exemplar).

738 underlying theory, and emerging technology within the domain." - Kang et al.

1015 polymorphism A concept in type theory, according to which a name (such as a

viewed

9 An object-oriented program may thus be viewed as a collection of interacting objects, as opposed to the conventional model, in which a program is seen as a list of tasks (subroutines) to perform. In OOP, each object is capable of receiving messages, processing data, and sending messages to other objects. Each object can be viewed as an independent "machine" with a distinct role or responsibility. The actions (or "methods") on these objects. The terms "objects" and "oriented" in something like the modern sense of object- oriented programming seem to make their first appearance at MIT in the late 1950s and early 1960s. In the environment of the artificial intelligence group, as early as 1960, "object" could refer to identified items (LISP atoms) with properties (attributes); Alan Kay was later to cite a detailed understanding of LISP internals as a strong influence on his thinking in 1966.[3] Another early MIT example was Sketchpad created by Ivan Sutherland in 1960-61; in the glossary of the 1963 technical report based on his dissertation about Sketchpad, Sutherland defined notions of "object" and "instance" (with the class concept covered by "master" or "definition"), albeit specialized to graphical interaction. Also, an MIT ALGOL version, AED-0, linked data structures ("plexes", in that dialect) directly with procedures, prefiguring what were later termed "messages", "methods" and "member functions".

155 expanded types in Eiffel) can be viewed as instances of a record type,

309 All objects can be viewed as classes and all classes can be viewed as

959 Inclusion Polymorphism: an object can be viewed as belonging to many different

999 viewed in an almost symbolic way) occurs when object types may be specified and

1230 parametrically polymorphic implementation. Generics can also be viewed as a

1328 viewed as a hierarchy, with locals

vol

1436 21-32. Vol.5, No. 1, 3

1439 Methodologies. Computer, Oct 1992, Vol 25, No. 10, p 22-40

1457 Press, Hawaii) 1993, Vol. IV, pp. 689-698.

1464 Vol.35, No.9, pp35.

2339 Weiser. Software --- Practise and Experience vol 18(9), pp 807-820.

2511 J. Vol 11, No 3. One author's email address is

2528 The Smalltalk Report, Vol. 1, No. 9, pp.3-7. The author's

2572 Programming, June, 1991, Vol. 4, No. 3, pp. 10 - 27.

2588 Magazine, Vol. 2, No. 2, July-August 1992, pp17-18. SIGs

www

776 www.rational.com.

1283 www.sigs.com, See Anon FTP)

1291 Python (new WWW, see http:

1292 www.python.org

1306 www.marble.com

1342 WWW: http:

1343 www.odmg.org:3083

1686 www.pomoco.com

2347 www.geodesic.com

adding

15 Object-oriented features have been added to many existing languages during that time, including Ada, BASIC, Fortran, Pas cal, and others. Adding these features to languages that were not initially designed for them often led to problems with compatibility and maintainability of code.

43 This section does not cite any references or sources. Please help improve this section by adding citations to reliable sources. Unsourced material may be challenged and removed. (August 2009)

52 In recent years, object-oriented programming has become especially popular in dynamic programming languages. Python, Ruby and Groovy are dynamic languages built on OOP principles, while Perl and PHP have been adding object oriented features since Perl 5 and PHP 4, and ColdFusion since version 5.

73 Luca Cardelli wrote a paper titled "Bad Engineering Properties of Object-Oriented Languages" Richard Stallman wrote in 1995, "Adding OOP to Emacs is not clearly an improvement; I used OOP when working on the Lisp Machine window systems, and I disagree with the usual view that it is a superior way to program."

718 behavior and adding details needed for actual computer system implementation,

928 adding inclusion polymorphism for subtyping and inheritance.

938 C+W refine Strachey's definition by adding "inclusion polymorphism" to model

1348 adding more links to related sites, bibliographies, and a FAQ for ODBMSs.

additional

27 Additional concepts used in object-oriented programming include:

428 additional attributes or properties to other classes. They are intended to be

434 1.9) Does Multiple Inheritance Pose Any Additional Difficulties? (Object-Oriented Technology)

914 specifies slightly different or additional structure or behavior for an object,

915 and these more specific or additional attributes of an object of a base class

1822 writing distributed, object-oriented applications require additional

2205 - Implementation of additional protocols through a

2260 nominal additional cost.

advantage

196 However, one-le vel objects often play the role of classes to take advantage of

368 for the commonality of objects to be explicitly taken advantage of in modeling

487 of reuse takes advantage of the is-a-kind-of relationship. Class libraries

819 Seamlessness together with naturalness is a big advantage for consistency.

1163 efficiency by taking advantage of that representation wherever used. In many

1225 nature, which is an advantage for strong typechecking but a potential

1751 HP believes it is best positioned to help customers take advantage of

1792 executive officer of Information Advantage, Inc. "Our object-based

argument

643 switching on a single argument per call (but for 2 levels), consistently

677 class differentiated only by their formal argument types. This therefore

678 requires both static and dynamic typing, because no formal argument

680 actual argument differentiation is possible without dynamic types (as in C++

957 type parameter which determines the type of the argument for each

2327 [1] "Object-Oriented Software Construction" by Meyer puts the argument

2359 taking a container as an argument need to know of or make assumptions

2551 Makes the argument that testing of object-oriented software is

basic

15 Object-oriented features have been added to many existing languages during that time, including Ada, BASIC, Fortran, Pas cal, and others. Adding these features to languages that were not initially designed for them often led to problems with compatibility and maintainability of code.

16 More recently, a number of languages have emerged that are primarily object-oriented yet compatible with procedural methodology, such as Python and Ruby. Probably the most commercially important recent object-oriented languages are Visual Basic.NET (VB.NET) and C#, both designed for Microsoft's .NET platform, and Java, developed by Sun Microsystems. Both frameworks show the benefit of using OOP by creating an abstraction from implementation in their own way. VB.NET and C# support cross-language inheritance, allowing classes defined in one language to subclass classes defined in the other language. Developers usually compile Java to bytecode, allowing Java to run on any operating system for which a Java virtual machine is available. VB.NET and C# make use of the Strategy pattern to accomplish cross-language inheritance, whereas Java makes use of the Adapter pattern[citation needed].

48 Languages that are historically procedural languages, but have been extended with some OO features. Examples: Visual Basic (derived from BASIC), Fortran 2003, Perl, COBOL 2002, PHP, ABAP.

446 On the other hand, multiple-inheritance can be seen as required for basic

1390 as well as basic OS i ssues such as memory, file, tasking management.

1525 realising basic object functionality using the Object Request Broker -

2241 Powerbuilder,, Visual Basic,, and Uniface,. Among the CASE tools are

built

52 In recent years, object-oriented programming has become especially popular in dynamic programming languages. Python, Ruby and Groovy are dynamic languages built on OOP principles, while Perl and PHP have been adding object oriented features since Perl 5 and PHP 4, and ColdFusion since version 5.

731 be built so that the cost of the domain analysis can be amortized over the

751 external interface of the system to be built, often obtained from a domain

1604 integrated software systems. These systems should be built using

1804 Applications built using HP Distributed Smalltalk currently run without

1854 cooperating objects. RDOM is built on top of the Isis Distributed

1891 be built and tested on a single machine using local resources.

1956 built using Orbix. IONA has also extensively extended the number, and scope, of

client

3 "Objects" are the foundation of object-oriented programming, and are fundamental data types in object-oriented programming languages. These languages provide extensive syntactic and semantic support for object handling, including a hierarchical type system, special notation for declaring and calling methods, and facilities for hiding selected fields from client programmers. However, objects and object-oriented programming can be implemented in any language.

173 variants to be added without modifying client code (which causes higher defect

432 explicitly calling them, allowing client class code to remain unchanged [Booch

1662 UX, IBM RS-6000, Data General Aviion, MS-Windows (client

1731 (which includes support for CORBA's static client interface) is available

2085 Implementation - implementation is for client

2396 delete, placing the memory management burden on the client, who must call

2466 testable during initial evaluation by the client programmer. They must

cmm

830 (CMM), a process-based TQM model for assessing the level of an organization's

832 in the US [Humphrey 89]. The CMM also serves as a 5 level improvement process

836 version of the CMM for individuals [Humphrey 95]. Next should follow a team-

838 personnel management CMM (PM-CMM).

846 CMM documentation is available online from: http:

848 CMM and

851 cmm

867 the CMM. To join the ami mailing list email to:

commonly

5 In contrast, the object-oriented approach encourages the programmer to place data where it is not directly accessible by the rest of the program. Instead, the data is accessed by calling specially written functions, commonly called methods, which are either bundled in with the data or inherited from "class objects." These act as the intermediaries for retrieving or modifying the data they control. The programming construct that combines data with a set of methods for accessing and managing those data is called an object. The practice of using subroutines to examine or modify certain kinds of data, however, was also quite commonly used in non-OOP modular programming, well before the widespread use of object-oriented programming.

55 Challenges of object-oriented design are addressed by several methodologies. Most common is known as the design patterns codified by Gamma et al.. More broadly, the term "design patterns" can be used to refer to any general, repeatable solution to a commonly occurring problem in software design. Some of these commonly occurring problems have implications and solutions particular to object-oriented development.

510 The former is a kind of language dependent feature commonly found in object-

684 However, static analysis optimizations are commonly available in the

726 operations, objects, and structures that commonly occur in software systems

1204 pure parametric polymorphism (as is also commonly found in OO languages in

comparison

75 Christopher J. Date stated that critical comparison of OOP to other technologies, relational in particular, is difficult because of lack of an agreed-upon and rigorous definition of OOP. Date and Darwen propose a theoretical foundation on OOP that uses OOP as a kind of customizable type system to support RDBMS.

80 Steve Yegge, making a roundabout comparison with Functional programming, writes, "Object Oriented Programming puts the Nouns first and foremost. Why would you go to such lengths to put one part of speech on a pedestal? Why should one kind of concept take precedence over another? It's not as if OOP has suddenly made verbs less important in the way we actually think. It's a strangely skewed perspective."

1220 a polymorphic sort function taking a base type with a comparison operator.

1221 The function can be called with any type (containing a comparison operator).

1430 Here are some comparison studies posted to the net:

1441 and Design Methods - Comparison and Critique. IEEE-Comp, Oct, 1992, pp 22-39.

1449 A Comparison of Six Object-oriented Analysis and Design Methods. Report

1455 Comparison of Object Oriented Analysis and Design Methodologies, Hawaii

compatible

16 More recently, a number of languages have emerged that are primarily object-oriented yet compatible with procedural methodology, such as Python and Ruby. Probably the most commercially important recent object-oriented languages are Visual Basic.NET (VB.NET) and C#, both designed for Microsoft's .NET platform, and Java, developed by Sun Microsystems. Both frameworks show the benefit of using OOP by creating an abstraction from implementation in their own way. VB.NET and C# support cross-language inheritance, allowing classes defined in one language to subclass classes defined in the other language. Developers usually compile Java to bytecode, allowing Java to run on any operating system for which a Java virtual machine is available. VB.NET and C# make use of the Strategy pattern to accomplish cross-language inheritance, whereas Java makes use of the Adapter pattern[citation needed].

500 compatible with (can be used in place of) instances or references of that

1049 object (pointer or reference (or such parameter)) is assignment compatible with

1192 similar to subtype polymorphism; however, ACs require type compatible classes

1669 Object RPC compatible with OMG CORBA 1.2 spec (will compile OMG IDL and

1711 something like an Object Broker, but it is *not* CORBA compatible (yet).

2202 - Kerberos 5.4 compatible security

2370 2. Implementation Hiding is not Compatible with Manual Memory Management

compliant

1529 compliant class interfaces.

1641 compliant implementation of CORBA and is available on these platforms:

1670 generate OMG compliant code for OMG-specified languages).

1857 not CORBA compliant, but will be brought to compliance during 3Q93.

1901 DOME has a CORBA-conformant interface, and is CORBA 1.0 compliant

2073 compliant event service

2167 o Standards Compliant

2168 DOME is compliant with the following standards:

declared

251 could be declared protected allowing subclass access. C++ also allows a

301 the work of being a class. This can be declared in a class named "Meta-Class".

539 not have to be declared. Eiffel and BETA are examples of languages allowing

584 declared to be instances of a class (and class objects instances of a

676 declared in a base class may have several functions overriding it in a derived

993 parameters must still be declared and many bodies are generated.

1106 of several classes, including all of the classes its declared (or most derived)

1114 Static typing refers to types declared in a program at compile-time, so no type

difference

74 A study by Potok has shown no significant difference in productivity between OOP and procedural approaches.

541 1.15) What Is The Difference Between Object-Based And Object-Oriented? (Object-Oriented Technology)

1052 is it? To make any difference, the differing forms must have some effect. In

1101 2.4) Is There A Difference Between Being A Member Or Instance Of A Class? (Typing - Object-Oriented Technology)

1113 2.5) What Is The Difference Between Static And Dynamic Typing? (Typing - Object-Oriented Technology)

1183 difference between static and dynamic binding in OO and dynamic binding and

1263 variables - with subtype polymorphism making up the difference.

1265 distinguish a receiver, but packages can help make up the difference.

distinct

9 An object-oriented program may thus be viewed as a collection of interacting objects, as opposed to the conventional model, in which a program is seen as a list of tasks (subroutines) to perform. In OOP, each object is capable of receiving messages, processing data, and sending messages to other objects. Each object can be viewed as an independent "machine" with a distinct role or responsibility. The actions (or "methods") on these objects. The terms "objects" and "oriented" in something like the modern sense of object- oriented programming seem to make their first appearance at MIT in the late 1950s and early 1960s. In the environment of the artificial intelligence group, as early as 1960, "object" could refer to identified items (LISP atoms) with properties (attributes); Alan Kay was later to cite a detailed understanding of LISP internals as a strong influence on his thinking in 1966.[3] Another early MIT example was Sketchpad created by Ivan Sutherland in 1960-61; in the glossary of the 1963 technical report based on his dissertation about Sketchpad, Sutherland defined notions of "object" and "instance" (with the class concept covered by "master" or "definition"), albeit specialized to graphical interaction. Also, an MIT ALGOL version, AED-0, linked data structures ("plexes", in that dialect) directly with procedures, prefiguring what were later termed "messages", "methods" and "member functions".

306 to the following listing, which is based on the number of levels of distinct

317 There are 2 kinds of distinct objects: objects and classes.

324 There are 2 kinds of distinct objects (objects and classes), with a

339 C++). There are 3 distinct kinds of objects (objects, classes, and

439 distinct parents can declare a member within a multiple inheritance hierarchy,

907 crystallographically distinct forms. 3. Zool., Bot. existence of an

963 related, but are distinct enough in implementation to justify separate

enterprise

871 Object-oriented analysis now includes "Enterprise Modeling" [Martin 92], also

1745 applications that can be distributed throughout the enterprise. HP also

2028 - defines and implements a comprehensive enterprise

2140 middleware achieves this, it makes enterprise computing a reality.

2146 application in the enterprise, accessing virtually any data.

2147 DOME - Covering the Enterprise

2153 enterprise.

2232 perspective, the enterprise is a single logical database located in

faq

1348 adding more links to related sites, bibliographies, and a FAQ for ODBMSs.

1429 inclusion of other major or new methodologies should be sent to the FAQ author.

2278 written for the FAQ by Paul Johnson and the second is from the FAQ author's

2431 Other entries or suggestions are welcome, please send to the author of the FAQ.

2433 [This entry was donated by Doug Shaker and is certainly a FAQ]

2434 Testing of Object-Oriented Programming (TOOP) FAQ

2445 Software. It is kind of like an FAQ, though it isn't organized

files

1347 ODMG-93 along with ODL lex and yacc files. In the future, we will be

1571 index (return a list of all available files)

1572 get <file> (get files returned by index)

1575 list <directory> [match] (index a directory, pattern 'match' files)

1899 Database distribution can be as simple persistent files,

2063 files, relational or object databases

2257 Optical or magnetic media containing all files required to load and

2683 *Programmatic interface to output files and cumulative code coverage

gui

13 Object-oriented programming developed as the dominant programming methodology in the early and mid 1990s when programming languages supporting the techniques became widely available. These included Visual FoxPro 3.0, C++[citation needed], and Delphi[citation needed]. Its dominance was further enhanced by the rising popularity of graphical user interfaces, which rely heavily upon object-oriented programming techniques. An example of a closely related dynamic GUI library and OOP language can be found in the Cocoa frameworks on Mac OS X, written in Objective-C, an object-oriented, dynamic messaging extension to C based on Smalltalk. OOP toolkits also enhanced the popularity of event-driven programming (although this concept is not limited to OOP). Some[who?] feel that association with GUIs (real or perceived) was what propelled OOP into the programming mainstream.

121 Interface - E.g. GUI

1087 selected based on the actual type of object being cut (which in the GUI case is

1726 CORBA-compliant DOMS. Includes a GUI API driver for prototyping and

1905 - integral support for GUI development,

2240 with any number of third-party GUI and CASE tools. Among the GUIs are

2386 of an object. For example, event driven GUI programs frequently have no

2682 *Intuitive GUI for easy test analysis

handle

4 Objects are used in software development to implement abstract data structures, by bringing together the data components with the procedures that manipulate them. Objects in object- oriented programming are key in the concept of inheritance; thereby improving program reliability[attribution needed], simplification of software maintenance[attribution needed], the management of libraries, and the division of work in programmer teams. Object-oriented programming languages are generally designed to exploit and enforce these potential advantages of the object model. Objects can also make it possible to handle very disparate objects by the same piece of code, as long as they all have the proper method. Simple, non-OOP programs may be one "long" list of statements (or commands). More complex programs will often group smaller sections of these statements into functions or subroutines each of which might perform a particular task. With designs of this sort, it is common for some of the program's data to be 'global', i.e. accessible from any part of the program. As programs grow in size, allowing any function to modify any piece of data means that bugs can have wide-reaching effects.

41 Attempts to find a consensus definition or theory behind objects have not proven very successful (however, see Abadi & Cardelli, A Theory of Objects[18] for formal definitions of many OOP concepts and constructs), and often diverge widely. For example, some definitions focus on mental activities, and some on program structuring. One of the simpler definitions is that OOP is the act of using "map" data structures or arrays that can contain functions and pointers to other maps, all with some syntactic and scoping sugar on top. Inheritance can be performed by cloning the maps (sometimes called "prototyping"). OBJECT:=>> Objects are the run time entities in an object-oriented system. They may represent a person, a place, a bank account, a table of data or any item that the program has to handle.

65 OOP can be used to associate real-world objects and processes with digital counterparts. However, not everyone agrees that OOP facilitates direct real-world mapping (see Negative Criticism section) or that real-world mapping is even a worthy goal; Bertrand Meyer argues in Object-Oriented Software Construction that a program is not a model of the world but a model of some part of the world; "Reality is a cousin twice removed". At the same time, some principal limitations of OOP had been noted. For example, the Circle-ellipse problem is difficult to handle using OOP's concept of inheritance.

169 in C++, which also involve an offset for the receiver to handle multiple-

336 The "class class"es handle messages to classes, such as constructors and

626 handle various cases:

1248 it couldn't handle to objects that potentially could (its delegates). Any

2365 include failure to reclaim cycles, inability to handle stack and static

hiding

3 "Objects" are the foundation of object-oriented programming, and are fundamental data types in object-oriented programming languages. These languages provide extensive syntactic and semantic support for object handling, including a hierarchical type system, special notation for declaring and calling methods, and facilities for hiding selected fields from client programmers. However, objects and object-oriented programming can be implemented in any language.

50 Languages with abstract data type support, but not all features of object-orientation, sometimes called object-based languages. Examples: Modula-2 (with excellent encapsulation and information hiding), Pliant, CLU.

124 Component Objects - Utility and Implementation hiding objects

126 Impl. Hiding - Distr. Arch., specific DBMS, OS

228 [Booch 91, p. 45] defines: "Encapsulation is the process of hiding all of the

230 [Coad 91, 1.1.2] defines: "Encapsulation (Information Hiding). A principle,

2370 2. Implementation Hiding is not Compatible with Manual Memory Management

2371 Implementation hiding is a pillar of object-oriented programming,

implementations

1208 Short Answer: Parametric Polymorphism (although various implementations

1635 3.8.5) Implementations (Brief) (OMG

1708 Subject: ORB Implementations

1825 to use. That's why HP ORB Plus includes OMG interfaces and implementations

1966 agreement to align their implementations of CORBA. The two companies

2030 distributed implementations of C++ classes over

2095 Cooperative Framework implementations on supported platforms

2410 versions of garbage collection were merely crude implementations of

issues

518 the issues of shared bases and member conflict resolution. But most modern

616 encapsulation. These issues are orthogonal. Multiple-polymorphism implies

1100 the nested switch statement! [Martin 92] covers some of these issues.

1390 as well as basic OS i ssues such as memory, file, tasking management.

1596 Technology topics and issues. This publication features

2213 issues.

2400 multiple containers, leaving many memory management issues unaddressed.

2527 Klimas, Edward "Quality Assurance Issues for Smalltalk Based Applications",

lack

67 Steve Yegge and others noted that natural languages lack the OOP approach of strictly prioritizing things (objects

75 Christopher J. Date stated that critical comparison of OOP to other technologies, relational in particular, is difficult because of lack of an agreed-upon and rigorous definition of OOP. Date and Darwen propose a theoretical foundation on OOP that uses OOP as a kind of customizable type system to support RDBMS.

615 Multi-methods involve two primary concepts, multiple-polymorphism and lack of

617 more than one parameter can be used in the selection of a method. Lack of

1126 cases) to be available on formal objects and a lack of multiple-polymorphism

1394 on C++. [[ The lack of type-tests in C++ was a problem in other designs.]]

2313 One partial solution to a lack of GC is reference counting. In this

2366 objects, lack of polymorphism, and problems with interior pointers (e.g.

literature

18 A survey by Deborah J. Armstrong of nearly 40 years of computing literature identified a number of "quarks", or fundamental concepts, found in the strong majority of definitions of OOP.

426 may be an editable_item and a kind of literature.

685 literature, potentially providing a single static selection in many cases

1625 ftp! These are from the list of literature and periodicals listed in

2265 3.8.7) Books, Articles, And Literature (OMG

2598 Includes a survey of existing literature on testing of OO

2657 features for C++ testing. From the product literature:

2678 testing. Highlights from CenterLine literature:

mail

1563 3.8.3) Mail Server Access (OMG

1567 Information via Mail Server:

1568 Send the following commands in a letter to the mail server.

1569 mail omg_server@omg.org

1577 list mail

1584 mail omg_server@omg.org

1589 list mail

2456 mail: Qualix Group

middleware

1694 (RDA), Remote Procedure Calls (RPC), Message-Oriented Middleware (MOM),

2131 middleware - run-time system software that is layered between an

2136 To do this effectively, middleware must be able to interpret the

2140 middleware achieves this, it makes enterprise computing a reality.

2141 As a result, middleware is quickly emerging as the best solution for

2142 overcoming system incompatibilities, and middleware such as

2148 The DOME Software System is comprehensive middleware that provides

2160 Calls (RPC), Message-Oriented Middleware (MOM), and Object Request

ml

975 schemes [Aho 85]. ML is prototypical in providing this facility.

1134 2.6) What Is This I Hear About ML And Functional Programming Languages? (Typing - Object-Oriented Technology)

1135 ML, Metalanguage, is a functional programming language with a strongly typed

1139 flexibility than dynamic typing and the same applies to ML (although see the

1140 appendixes for an experimental dynamic extension to ML, Alcool-90 and [Cardelli

1141 85] for a proper placement of ML's type system). ML doesn't use inheritance

1203 Functional languages such as ML, Russell, and Haskell provide a separation with

1233 languages. One such popular functional language is ML, in which all functions

o

1628 o I would like a one year subscription to First Class

1630 o I would like to order ______ copy(s) of the Object Management

1632 o I would like to order ______ copy(s) of the CORBA for $50 each.

1633 o [Combinations]

2162 o Open System

2167 o Standards Compliant

2188 o Object-Oriented Architecture

2214 o Support for Heterogeneous Environments

odmg

1337 Subject: ODMG Gopher and Web Addresses

1339 The Object Database Management Group (ODMG) has set up Gopher and Web

1341 Gopher: gopher.odmg.org, port 2073

1343 www.odmg.org:3083

1345 addresses and contact information for ODBMS vendors, ODMG membership

1350 ODMG, send an email message to info@odmg.org and you will receive an

1353 ODMG Executive Director

order

622 (messages) equivalent. Functional syntax was chosen "in order to minimize the

1548 In order to serve OMG membership interested in other object-oriented systems

1630 o I would like to order ______ copy(s) of the Object Management

1632 o I would like to order ______ copy(s) of the CORBA for $50 each.

2231 underlying vendor in order to process requests. From the user's

2302 5: In order to avoid problems 3 and 4, programmers may end up copying

2381 Manual memory management must make assumptions about a program's order of

2387 clear order of execution. Other dynam ic control structures, such as

original

49 Languages with most of the features of objects (classes, methods, inheritance, reusability), but in a distinctly original form. Examples: Oberon (Oberon-1 or Oberon-2) and Common Lisp.

278 Original Aristotlean classification defines a "class" as a generalization of

886 BETA a followup to Simula (by its original designers).

925 many different forms. Computer Science refers to Strachey's original

929 > Strachey's Original Definition [Strachey 67]:

1007 They refer to this as "best-fitting" types [Black 86]. The original Trellis

1199 [Raj 89], original trellis

2428 Smalltalk (in its original 1972 version) was initially intended to make

overriding

260 helping with abstract classes and overriding.

529 Overriding? (Object-Oriented Technology)

532 p56]. Overriding is the term used in Smalltalk and C++ for redefining a

537 is executed overriding the base class method, if any. Overriding in Simula

672 in many cases, such as requiring overriding methods to have identical

676 declared in a base class may have several functions overriding it in a derived

1068 which case the overriding function must be called. Statically determining all

perform

4 Objects are used in software development to implement abstract data structures, by bringing together the data components with the procedures that manipulate them. Objects in object- oriented programming are key in the concept of inheritance; thereby improving program reliability[attribution needed], simplification of software maintenance[attribution needed], the management of libraries, and the division of work in programmer teams. Object-oriented programming languages are generally designed to exploit and enforce these potential advantages of the object model. Objects can also make it possible to handle very disparate objects by the same piece of code, as long as they all have the proper method. Simple, non-OOP programs may be one "long" list of statements (or commands). More complex programs will often group smaller sections of these statements into functions or subroutines each of which might perform a particular task. With designs of this sort, it is common for some of the program's data to be 'global', i.e. accessible from any part of the program. As programs grow in size, allowing any function to modify any piece of data means that bugs can have wide-reaching effects.

9 An object-oriented program may thus be viewed as a collection of interacting objects, as opposed to the conventional model, in which a program is seen as a list of tasks (subroutines) to perform. In OOP, each object is capable of receiving messages, processing data, and sending messages to other objects. Each object can be viewed as an independent "machine" with a distinct role or responsibility. The actions (or "methods") on these objects. The terms "objects" and "oriented" in something like the modern sense of object- oriented programming seem to make their first appearance at MIT in the late 1950s and early 1960s. In the environment of the artificial intelligence group, as early as 1960, "object" could refer to identified items (LISP atoms) with properties (attributes); Alan Kay was later to cite a detailed understanding of LISP internals as a strong influence on his thinking in 1966.[3] Another early MIT example was Sketchpad created by Ivan Sutherland in 1960-61; in the glossary of the 1963 technical report based on his dissertation about Sketchpad, Sutherland defined notions of "object" and "instance" (with the class concept covered by "master" or "definition"), albeit specialized to graphical interaction. Also, an MIT ALGOL version, AED-0, linked data structures ("plexes", in that dialect) directly with procedures, prefiguring what were later termed "messages", "methods" and "member functions".

300 dictionaries for methods, instances, and parents and methods to perform all

355 perform inheritance this way, etc.). Because inheritance can be used to

356 perform differential changes, intercessory protocols allow users to not

597 can access the internal state of an object of that class to perform some

1913 to perform the same function.

2325 [Further, GC can perform compaction improving locality of reference.]

pointers

41 Attempts to find a consensus definition or theory behind objects have not proven very successful (however, see Abadi & Cardelli, A Theory of Objects[18] for formal definitions of many OOP concepts and constructs), and often diverge widely. For example, some definitions focus on mental activities, and some on program structuring. One of the simpler definitions is that OOP is the act of using "map" data structures or arrays that can contain functions and pointers to other maps, all with some syntactic and scoping sugar on top. Inheritance can be performed by cloning the maps (sometimes called "prototyping"). OBJECT:=>> Objects are the run time entities in an object-oriented system. They may represent a person, a place, a bank account, a table of data or any item that the program has to handle.

195 although vtables of function pointers for dynamic binding are an exception).

611 (e.g. C++ and Eiffel) is really in between (checked function pointers).

1072 vtables of function pointers in the actual objects (C++) or equivalent,

1074 function pointers with static typechecking in the base class, and filling them

1118 implemented with tables of function pointers and offsets), and is how

2366 objects, lack of polymorphism, and problems with interior pointers (e.g.

2379 and does not contain pointers.

provided

8 Object-oriented programming has roots that can be traced to the 1960s. As hardware and software became increasingly complex, manageability often became a concern. Researchers studied ways to maintain software quality and developed object-oriented programming in part to address common problems by strongly emphasizing discrete, reusable units of programming logic[citation needed]. The technology focuses on data rather than processes, with programs composed of self-sufficient modules ("classes"), each instance of which ("objects") contains all the information needed to manipulate its own data structure ("members"). This is in contrast to the existing modular programming that had been dominant for many years that focused on the function of a module, rather than specifically the data, but equally provided for code reuse, and self-sufficient reusable units of programming logic, enabling collaboration through the use of linked modules (subroutines). This more conventional approach, which still persists, tends to consider data and behavior separately.

504 can be provided (and preferred); however, C++ provides both sliced and non-

921 provided by base classes or types (subclass and subtype polymorphism,

1038 functions using exactly the same interface - as is provided by virtual

1040 [The Author notes this is a functional view of polymorphism (as provided in

1061 typed subtype polymorphism, as provided in Emerald, can be implemented

1428 Summaries and comparisons will be provided in future FAQs. Suggestions for

2134 would have been provided by the application's native operating

rdom

1845 CORBA Implementation Descriptions: Iris RDOM

1849 Product: Isis Reliable Distributed Object Manager(tm) (RDOM)

1851 Isis RDOM(tm) is a fault tolerant distributed ORB platform for reliable

1852 multi-lingual object-oriented applications. RDOM provides an "object group"

1854 cooperating objects. RDOM is built on top of the Isis Distributed

1855 Toolkit(tm). RDOM provides interfaces from Smalltalk (Parcplace),

1856 Objective-C, and C++, and runs on most Unix workstations. RDOM is currently

1859 RDOM has been at beta test sites since January. General release of

recent

16 More recently, a number of languages have emerged that are primarily object-oriented yet compatible with procedural methodology, such as Python and Ruby. Probably the most commercially important recent object-oriented languages are Visual Basic.NET (VB.NET) and C#, both designed for Microsoft's .NET platform, and Java, developed by Sun Microsystems. Both frameworks show the benefit of using OOP by creating an abstraction from implementation in their own way. VB.NET and C# support cross-language inheritance, allowing classes defined in one language to subclass classes defined in the other language. Developers usually compile Java to bytecode, allowing Java to run on any operating system for which a Java virtual machine is available. VB.NET and C# make use of the Strategy pattern to accomplish cross-language inheritance, whereas Java makes use of the Adapter pattern[citation needed].

52 In recent years, object-oriented programming has become especially popular in dynamic programming languages. Python, Ruby and Groovy are dynamic languages built on OOP principles, while Perl and PHP have been adding object oriented features since Perl 5 and PHP 4, and ColdFusion since version 5.

205 term "Prototype" usually refers to prototype theory, a recent theory of

757 RD and represents a recent

872 found in [Jacobson 92], and along with recent business process "reengineering"

1132 also be found in recent versions of Eiffel.

1137 recent functional language and Haskell [Hudak 92] provides a more modern and

1190 behavior. [Liskov 93] provides a recent exposition.

scheme

147 pointer (such as void* in C++) and an embedded dynamic typing scheme are used

386 Objective-C, etc.), lisp-based (CLOS, Flavors, Scheme, etc.), and Pascal-based

396 definition, or both) can avoid confusion about which inheritance scheme is

661 scheme is used.

927 ad-hoc. Cardelli and Wegner followup with another classification scheme,

1129 A limited dynamic typing scheme, called RTTI (Run Time Type Identification),

2314 scheme each object keeps a count of references to it. When this count

2391 Because no memory management scheme is universal enough for all applications,

security

79 Richard Mansfield, author and former editor of COMPUTE! magazine, states that "like countless other intellectual fads over the years ("relevance", communism, "modernism", and so on—history is littered with them), OOP will be with us until eventually reality asserts itself. But considering how OOP currently pervades both universities and workplaces, OOP may well prove to be a durable delusion. Entire generations of indoctrinated programmers continue to march out of the academy, committed to OOP and nothing but OOP for the rest of their lives."[38] He also is quoted as saying "OOP is to writing a program, what going through airport security is to flying".

1909 - enhanced security;

1912 and network security; however, DOME does allow stream operators

1955 security systems providing for improved reliability of distributed systems

2139 security; and scale up to accommodate even the largest systems. When

2176 - Kerberos 5.4 (Security)

2202 - Kerberos 5.4 compatible security

2244 DOME, DOMEshell, DOME Security, DOME Data Manager, and DDM are

semantic

3 "Objects" are the foundation of object-oriented programming, and are fundamental data types in object-oriented programming languages. These languages provide extensive syntactic and semantic support for object handling, including a hierarchical type system, special notation for declaring and calling methods, and facilities for hiding selected fields from client programmers. However, objects and object-oriented programming can be implemented in any language.

56 It is intuitive to assume that inheritance creates a semantic "is a" relationship, and thus to infer that objects instantiated from subclasses can always be safely used instead of those instantiated from the superclass. This intuition is unfortunately false in most OOP languages, in particular in all those that allow mutable objects. Subtype polymorphism as enforced by the type checker in OOP languages (with mutable objects) cannot guarantee behavioral subtyping in any context. Behavioral subtyping is undecidable in general, so it cannot be implemented by a program (compiler). Class or object hierarchies need to be carefully designed considering possible incorrect uses that cannot be detected syntactically. This issue is known as the Liskov substitution principle.

152 another semantic definition of OO using functions for methods and for

395 Defining inheritance (with a thorough description or denotational semantic

480 common in the AI domain, where semantic nets use inheritance to understand

519 systems support Multiple Inheritance by employing semantic resolution

1184 subtyping seems similar. A possible loss of semantic integrity

1189 This helps to insure the semantic integrity of replacing objects and their

share

99 concept applies", and "A concept is an idea or notion we share that applies

285 "A class is a set of objects that share a common structure and a common

388 inheritance can also share parents within a class lattice (CLOS and Eiffel

467 then a potential to share that class. Only one instance of the class will

762 D, and many others, also share common ground with SA and other existing

1170 This also insures all types share a common representation, or at least a

2164 customer's applications, making it possible to share information

2473 market pressure, to do so as well, or face market share erosion. Think

structures

1 Object-oriented programming (OOP) is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction, encapsulation, messaging, modularity, polymorphism, and inheritance. Many modern programming languages now support OOP, at least as an option. In computer science, an object is any entity that can be manipulated by the commands of a programming language, such as a value, variable, function, or data structure. (With the later introduction of object-oriented programming the same word, "object", refers to a particular instance of a class)

4 Objects are used in software development to implement abstract data structures, by bringing together the data components with the procedures that manipulate them. Objects in object- oriented programming are key in the concept of inheritance; thereby improving program reliability[attribution needed], simplification of software maintenance[attribution needed], the management of libraries, and the division of work in programmer teams. Object-oriented programming languages are generally designed to exploit and enforce these potential advantages of the object model. Objects can also make it possible to handle very disparate objects by the same piece of code, as long as they all have the proper method. Simple, non-OOP programs may be one "long" list of statements (or commands). More complex programs will often group smaller sections of these statements into functions or subroutines each of which might perform a particular task. With designs of this sort, it is common for some of the program's data to be 'global', i.e. accessible from any part of the program. As programs grow in size, allowing any function to modify any piece of data means that bugs can have wide-reaching effects.

9 An object-oriented program may thus be viewed as a collection of interacting objects, as opposed to the conventional model, in which a program is seen as a list of tasks (subroutines) to perform. In OOP, each object is capable of receiving messages, processing data, and sending messages to other objects. Each object can be viewed as an independent "machine" with a distinct role or responsibility. The actions (or "methods") on these objects. The terms "objects" and "oriented" in something like the modern sense of object- oriented programming seem to make their first appearance at MIT in the late 1950s and early 1960s. In the environment of the artificial intelligence group, as early as 1960, "object" could refer to identified items (LISP atoms) with properties (attributes); Alan Kay was later to cite a detailed understanding of LISP internals as a strong influence on his thinking in 1966.[3] Another early MIT example was Sketchpad created by Ivan Sutherland in 1960-61; in the glossary of the 1963 technical report based on his dissertation about Sketchpad, Sutherland defined notions of "object" and "instance" (with the class concept covered by "master" or "definition"), albeit specialized to graphical interaction. Also, an MIT ALGOL version, AED-0, linked data structures ("plexes", in that dialect) directly with procedures, prefiguring what were later termed "messages", "methods" and "member functions".

41 Attempts to find a consensus definition or theory behind objects have not proven very successful (however, see Abadi & Cardelli, A Theory of Objects[18] for formal definitions of many OOP concepts and constructs), and often diverge widely. For example, some definitions focus on mental activities, and some on program structuring. One of the simpler definitions is that OOP is the act of using "map" data structures or arrays that can contain functions and pointers to other maps, all with some syntactic and scoping sugar on top. Inheritance can be performed by cloning the maps (sometimes called "prototyping"). OBJECT:=>> Objects are the run time entities in an object-oriented system. They may represent a person, a place, a bank account, a table of data or any item that the program has to handle.

726 operations, objects, and structures that commonly occur in software systems

2318 circular data structures. Two systems that use a reference count GC

2387 clear order of execution. Other dynam ic control structures, such as

2514 "Incremental Testing of Object-Oriented Class Structures",

suitesoftware

1691 > SUITESOFTWARE (SuiteDOME)

2120 CORBA Implementation Descriptions: SUITESOFTWARE (SuiteDOME)

2186 SUITESOFTWARE is a member of various standards groups and conforms

2243 ? 1995 SUITESOFTWARE

2245 trademarks of SUITESOFTWARE. All other products and product names are

2250 SUITESOFTWARE places particular emphasis on support and continuing

2253 to problems. SUITESOFTWARE `s support staff is available by

2263 platform. SUITESOFTWARE sales representatives are available to help

technologies

75 Christopher J. Date stated that critical comparison of OOP to other technologies, relational in particular, is difficult because of lack of an agreed-upon and rigorous definition of OOP. Date and Darwen propose a theoretical foundation on OOP that uses OOP as a kind of customizable type system to support RDBMS.

1675 > IONA Technologies, Dublin Orbix, info@iona.ie

1866 CORBA Implementation Descriptions: Object-Oriented Technologies DOME

1869 Object Oriented Technologies Ltd,

1931 Iona Technologies Ltd.

1973 Iona Technologies Ltd., fax: +353-1-6686573

2166 and its open platform structure accommodates future technologies.

2412 advanced as rapidly as most computer-related technologies and is now a robust,

terms

9 An object-oriented program may thus be viewed as a collection of interacting objects, as opposed to the conventional model, in which a program is seen as a list of tasks (subroutines) to perform. In OOP, each object is capable of receiving messages, processing data, and sending messages to other objects. Each object can be viewed as an independent "machine" with a distinct role or responsibility. The actions (or "methods") on these objects. The terms "objects" and "oriented" in something like the modern sense of object- oriented programming seem to make their first appearance at MIT in the late 1950s and early 1960s. In the environment of the artificial intelligence group, as early as 1960, "object" could refer to identified items (LISP atoms) with properties (attributes); Alan Kay was later to cite a detailed understanding of LISP internals as a strong influence on his thinking in 1966.[3] Another early MIT example was Sketchpad created by Ivan Sutherland in 1960-61; in the glossary of the 1963 technical report based on his dissertation about Sketchpad, Sutherland defined notions of "object" and "instance" (with the class concept covered by "master" or "definition"), albeit specialized to graphical interaction. Also, an MIT ALGOL version, AED-0, linked data structures ("plexes", in that dialect) directly with procedures, prefiguring what were later termed "messages", "methods" and "member functions".

71 Responsibility-driven design defines classes in terms of a contract, that is, a class should be defined around a responsibility and the information that it shares. This is contrasted by Wirfs-Brock and Wilkerson with data-driven design, where classes are defined around the data-structures that must be held. The authors hold that responsibility-driven design is preferable.

85 similar objects are defined in their common class; the terms instance and

151 It is primarily intended to introduce new terms. See [Cardelli 85] for

177 The terms method

363 systems, which often refer to systems implemented in terms of themselves, or

594 Behavior is how an object acts and reacts, in terms of its state changes

744 respectively. OOA strives to understand and model, in terms of object-oriented

versions

54 ECMAScript language. JavaScript is perhaps the best known prototype- based programming language, which employs cloning from prototypes rather than inheriting from a class. Another scripting language that takes this approach is Lua. Earlier versions of ActionScript (a partial superset of the ECMA-262 R3, otherwise known as ECMAScript) also used a prototype-based object model. Later versions of ActionScript incorporate a combination of classification and prototype-based object models based largely on the currently incomplete ECMA-262 R4 specification, which has its roots in an early JavaScript 2 Proposal. Microsoft's JScript.NET also includes a mash-up of object models based on the same proposal, and is also a superset of the ECMA-262 R3 specification.

1132 also be found in recent versions of Eiffel.

1683 1 versions of ORBeline available; will

1961 out versions of Orbix for Microsoft Windows NT, Silicon Graphics IRIX and

2258 execute DOME plus PostScriptTM versions of DOME documentation.

2259 Hardcopy versions of all DOME documentation are available for a

2410 versions of garbage collection were merely crude implementations of

wirfs-brock

71 Responsibility-driven design defines classes in terms of a contract, that is, a class should be defined around a responsibility and the information that it shares. This is contrasted by Wirfs-Brock and Wilkerson with data-driven design, where classes are defined around the data-structures that must be held. The authors hold that responsibility-driven design is preferable.

764 models, and even DFD's. Booch, Jacobson, and Wirfs-Brock are examples of OO

1420 Wirfs-Brock et al. [Wirfs-Brock 90]

1445 Booch OOD, Wirfs-Brock responsibility-driven design.

1465 [Wilkie 93] summarizes, compares, and provides examples of Booch, Wirfs-Brock,

1468 Wirfs-Brock, R.J. and Johnson, R.E., "Surveying Current Research in Object-

1485 Wirfs-Brock, R. et.al. - Designing object-oriented software, 1990.

ac

2529 email address is "ac690@cleveland.freenet.edu".

2578 available by anonymous ftp from vega.dur.ac.uk as

2601 This paper is available by anonymous ftp from vega.dur.ac.uk in

2613 This paper is available by anonymous ftp from vega.dur.ac.uk in

2624 This paper is available by anonymous ftp from vega.dur.ac.uk in

2635 This paper is available by anonymous ftp from vega.dur.ac.uk in

2703 The software is available via anonymous FTP from bright.ecs.soton.ac.uk

anonymous

2335 anonymous ftp (cs.utexas.edu:pub

2578 available by anonymous ftp from vega.dur.ac.uk as

2601 This paper is available by anonymous ftp from vega.dur.ac.uk in

2613 This paper is available by anonymous ftp from vega.dur.ac.uk in

2624 This paper is available by anonymous ftp from vega.dur.ac.uk in

2635 This paper is available by anonymous ftp from vega.dur.ac.uk in

2703 The software is available via anonymous FTP from bright.ecs.soton.ac.uk

basis

11 The Smalltalk language, which was developed at Xerox PARC (by Alan Kay and others) in the 1970s, introduced the term object-oriented programming to represent the pervasive use of objects and messages as the basis for computation. Smalltalk creators were influenced by the ideas introduced in Simula 67, but Smalltalk was designed to be a fully dynamic system in which classes could be created and modified dynamically rather than statically as in Simula 67.[9] Smalltalk and with it OOP were introduced to a wider audience by the August 1981 issue of Byte Magazine.

40 records are basis for understanding objects if function literals can be stored in fields (like in functional programming languages), but the actual calculi need be considerably more complex to incorporate essential features of OOP. Several extensions of System F<: that deal with mutable objects have been studied;[18] these allow both subtype polymorphism and parametric polymorphism (generics)

742 interact on a fairly frequent basis with the domain analysis effort.

842 Level 4: Managed: A measurable basis for all improvements to the process.

1270 basis.

1536 Adopted specifications are available on a fee-free basis to members and

2475 was choosing a basis for the next five years of work, wouldn't you feel

berard

724 [The following quotes on domain analysis are from [Berard 93]]

794 an overall system perspective and [Berard 93] proposes an (incremental)

1399 Berard [Berard 93]

2479 Berard, Edward. Essays on Object-Oriented Software Engineering.

2483 Berard, Edward. Project Management Handbook. Must be purchased

2484 direct from Berard Software Engineering, Ltd., 902 Wind River

building

1713 Its a toolkit for building failure resilient, distributed applications

1738 SUBJECT: HP INTRODUCES DISTRIBUTED-COMPUTING SOLUTION FOR BUILDING

1742 today introduced a distributed-computing solution for building scalable,

1788 heterogeneous support for building, managing and using distributed object-

2024 for building computing applications and services on networks

2046 - building next-generation, object-oriented,

2699 A group of volunteers is building a C++ test harness for the automated

comp

691 point often mistaken in comp.object. E.g. simple statically

1279 Java (comp.lang.java, http:

1313 See also Appendices B and E and the comp.database.object newsgroup.

2436 Posted to comp.object, comp.lang.c++, comp.lang.smalltalk and

2437 comp.software.testing.

compiler

56 It is intuitive to assume that inheritance creates a semantic "is a" relationship, and thus to infer that objects instantiated from subclasses can always be safely used instead of those instantiated from the superclass. This intuition is unfortunately false in most OOP languages, in particular in all those that allow mutable objects. Subtype polymorphism as enforced by the type checker in OOP languages (with mutable objects) cannot guarantee behavioral subtyping in any context. Behavioral subtyping is undecidable in general, so it cannot be implemented by a program (compiler). Class or object hierarchies need to be carefully designed considering possible incorrect uses that cannot be detected syntactically. This issue is known as the Liskov substitution principle.

70 OOP was developed to increase the reusability and maintainability of source code. Transparent representation of the control flow had no priority and was meant to be handled by a compiler. With the increasing relevance of parallel hardware and multithreaded coding, developer transparent control flow becomes more important, something hard to achieve with OOP.

315 programs (no Meta-Class except for in the compiler and perhaps for type-safe

360 of object-oriented reuse, since the compiler itself is reused thru

1820 language compiler, static and dynamic invocation interface and interface

1980 Operating System C++ Compiler Release

2467 also be testable under different OS configurations, different compiler

computers

371 of the real world. See the example below using computers.

486 in Personal computers are also available to all of its subclasses. This kind

1395 ETHOS was implemented as an operating system for the Ceres computers

1806 also will run on Apple Macintosh computers and on any PC running the Windows

2025 of heterogeneous computers.

2045 computers, operating systems and networks

2048 networks of heterogeneous computers, operating

covers

110 covers "Identifying Key Abstractions" for objects and classes based on an

168 [Stroustrup 90] covers the implementation details of virtual member functions

1011 [As inclusion polymorphism covers both subtype and subclass polymorphism,

1100 the nested switch statement! [Martin 92] covers some of these issues.

1386 This thesis covers the design of an extensible object-oriented

1391 It covers extensible objected-oriented programming from hardware up.

2275 [Covers CORBA standards with respect to OODBs]

created

9 An object-oriented program may thus be viewed as a collection of interacting objects, as opposed to the conventional model, in which a program is seen as a list of tasks (subroutines) to perform. In OOP, each object is capable of receiving messages, processing data, and sending messages to other objects. Each object can be viewed as an independent "machine" with a distinct role or responsibility. The actions (or "methods") on these objects. The terms "objects" and "oriented" in something like the modern sense of object- oriented programming seem to make their first appearance at MIT in the late 1950s and early 1960s. In the environment of the artificial intelligence group, as early as 1960, "object" could refer to identified items (LISP atoms) with properties (attributes); Alan Kay was later to cite a detailed understanding of LISP internals as a strong influence on his thinking in 1966.[3] Another early MIT example was Sketchpad created by Ivan Sutherland in 1960-61; in the glossary of the 1963 technical report based on his dissertation about Sketchpad, Sutherland defined notions of "object" and "instance" (with the class concept covered by "master" or "definition"), albeit specialized to graphical interaction. Also, an MIT ALGOL version, AED-0, linked data structures ("plexes", in that dialect) directly with procedures, prefiguring what were later termed "messages", "methods" and "member functions".

10 Objects as a formal concept in programming were introduced in the 1960s in Simula 67, a major revision of Simula I, a programming language designed for discrete event simulation, created by Ole-Johan Dahl and Kristen Nygaard of the Norwegian Computing Center in Oslo. Simula 67 was influenced by SIMSCRIPT and Hoare's proposed "record classes". Simula introduced the notion of classes and instances or objects (as well as subclasses, virtual methods, coroutines, and discrete event simulation) as part of an explicit programming paradigm. The language also used automatic garbage collection that had been invented earlier for the functional programming language Lisp. Simula was used for physical modeling, such as models to study and improve the movement of ships and their content through cargo ports. The ideas of Simula 67 influenced many later languages, including Smalltalk, derivatives of LISP (CLOS), Object Pascal, and C++.

11 The Smalltalk language, which was developed at Xerox PARC (by Alan Kay and others) in the 1970s, introduced the term object-oriented programming to represent the pervasive use of objects and messages as the basis for computation. Smalltalk creators were influenced by the ideas introduced in Simula 67, but Smalltalk was designed to be a fully dynamic system in which classes could be created and modified dynamically rather than statically as in Simula 67.[9] Smalltalk and with it OOP were introduced to a wider audience by the August 1981 issue of Byte Magazine.

45 Simula (1967) is generally accepted as the first language to have the primary features of an object-oriented language. It was created for making simulation programs, in which what came to be called objects were the most important information representation. Smalltalk (1972 to 1980) is arguably the canonical example, and the one with which much of the theory of object-oriented programming was developed. Concerning the degree of object orientation, following distinction can be made:

207 prototype for newly created instances. [The Author also uses the term for

427 Mixin's is a style of MI (from flavors) where a class is created to provide

493 close to what's required; a derived class can be created to specialize it.

customers

1748 overall distributed-computing strategy, which is designed to give customers

1751 HP believes it is best positioned to help customers take advantage of

1753 products, understands how to help customers adopt new technology for maximum

1779 have made it easier for their customers to port applications between their

1861 The C++ interface in August. Customers include AMD, Consilium and Swiss

2032 - allows customers to build and use object services

2254 telephone, FAX, and e-mail to help customers maximize the use of the

date

75 Christopher J. Date stated that critical comparison of OOP to other technologies, relational in particular, is difficult because of lack of an agreed-upon and rigorous definition of OOP. Date and Darwen propose a theoretical foundation on OOP that uses OOP as a kind of customizable type system to support RDBMS.

1338 Date: 24 Oct 1994 13:10:02 -0400

1709 Date: Tue, 4 May 1993 13:12:36 +0200 (MET DST)

1740 DATE: September 27, 1993

1981 Date

2090 Release date - Release 3.0 is available now to early

dce

1756 HP ORB PLUS: CORBA AND DCE COMBINED

1758 specification from the Object Management Group with the DCE standard from

1759 the Open Software Foundation(tm) as its transport mechanism. DCE is

1761 without modification -- on any other system that supports DCE. HP ORB Plus

1766 The DCE (Distributed Computing Environment) standard provides an

1777 DCE standard. This object- enabling technology specification was jointly

1847 Subject: Re: DCE vs. CORBA

describes

57 Design Patterns: Elements of Reusable Object-Oriented Software is an influential book published in 1995 by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, sometimes casually called the "Gang of Four". Along with exploring the capabilities and pitfalls of object-oriented programming, it describes 23 common programming problems and patterns for solving them. As of April 2007, the book was in its 36th printing.

58 The book describes the following patterns:

2340 Sept 1988. This describes GC in C and C++.

2520 are dhoffman@csr.uvic.ca and pstropp@cs.uq.oz.au. Describes an

2575 Describes ways in which the usual approach to software testing

2590 important for OOP and describes one quality program.

2610 England. Describes a series of tools for the generation and

develop

1545 develop nor sell software of any kind. Instead, it selects and promulgates

1744 With HP ORB Plus, programmers can develop scalable, object-based

1794 We plan to use HP ORB Plus to develop new object-based products that

1922 you to easily develop large distributed applications that are robust,

1940 Architecture (CORBA) standard. With Orbix, programmers can develop

2151 develop applications on any platform they choose and then easily

2422 are generally more reliable and easier to develop, maintain, and reuse than

durham

2596 Engineering and Computer Sciences (SECS), University of Durham,

2609 Computer Science (SECS), University of Durham, Durham,

2621 University of Durham, Durham, England. Discusses different

2631 Engineering and Computer Science (SECS), University of Durham,

2632 Durham, England.

efficiency

645 used in languages with static typing for simplicity and efficiency

659 doesn't support multiple-polymorphism and either efficiency considerations

671 efficiency, and to support a static programming idiom, but require restrictions

682 There is some concern about the efficiency of run-time method selection as

1089 Again, various optimizations exist for dynamic lookup to increase efficiency

1163 efficiency by taking advantage of that representation wherever used. In many

1228 efficiency tradeoff), and sources can cause inlining and create source code

electra

1699 The ELECTRA Toolkit (not finished)

1703 CORBA Implementation Descriptions: The ELECTRA Toolkit

1707 The ELECTRA Toolkit

1712 Electra is a research project and not available yet.

1715 etc. Electra is based on the HORUS toolkit (which is "the new ISIS

1717 An overview paper to electra is available from:

1720 electra.ps.Z

emerald

46 Languages called "pure" OO languages, because everything in them is treated consistently as an object, from primitives such as characters and punctuation, all the way up to whole classes, prototypes, blocks, modules, etc. They were designed specifically to facilitate, even enforce, OO methods. Examples: Scala, Smalltalk, Eiffel, JADE, Emerald.

1001 is-a-member-of form in OO). Emerald provides another example of an object-

1061 typed subtype polymorphism, as provided in Emerald, can be implemented

1179 this issue in Emerald. The same issue arises in parametric polymorphism

1197 The formal type system found in [Cardelli 85], Emerald

1259 There are many alternatives in OO. Emerald

1277 Emerald

emphasis

747 expert's perspective and with an emphasis on modeling the real-world (the

766 "structured" techniques, with greater emphasis on objects. OOram [Reenskaug

767 91] provides support and emphasis on types and roles as guiding principles,

843 Level 5: Optimizing: Emphasis on defect prevention and optimizing

889 Reuse, quality, an emphasis on modeling the real world (or a "stronger

1246 list instead of a parent list. Thus, delegation's primary emphasis is

2250 SUITESOFTWARE places particular emphasis on support and continuing

event

10 Objects as a formal concept in programming were introduced in the 1960s in Simula 67, a major revision of Simula I, a programming language designed for discrete event simulation, created by Ole-Johan Dahl and Kristen Nygaard of the Norwegian Computing Center in Oslo. Simula 67 was influenced by SIMSCRIPT and Hoare's proposed "record classes". Simula introduced the notion of classes and instances or objects (as well as subclasses, virtual methods, coroutines, and discrete event simulation) as part of an explicit programming paradigm. The language also used automatic garbage collection that had been invented earlier for the functional programming language Lisp. Simula was used for physical modeling, such as models to study and improve the movement of ships and their content through cargo ports. The ideas of Simula 67 influenced many later languages, including Smalltalk, derivatives of LISP (CLOS), Object Pascal, and C++.

1826 for properties, life cycle, associations, event notification and naming.

2071 - Event Service (Release 3.1) - Implements an OMG

2073 compliant event service

2200 - Concern registration and event notification

2386 of an object. For example, event driven GUI programs frequently have no

fax

1499 Feel free to call, fax or email for more information.

1871 Telephone: +44 (0) 1926 833488 Fax: +44 (0) 1926 883370.

1973 Iona Technologies Ltd., fax: +353-1-6686573

2105 FAX

2254 telephone, FAX, and e-mail to help customers maximize the use of the

2453 fax: 415

2674 (0225) 444400 (FAX)

fields

1 Object-oriented programming (OOP) is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction, encapsulation, messaging, modularity, polymorphism, and inheritance. Many modern programming languages now support OOP, at least as an option. In computer science, an object is any entity that can be manipulated by the commands of a programming language, such as a value, variable, function, or data structure. (With the later introduction of object-oriented programming the same word, "object", refers to a particular instance of a class)

3 "Objects" are the foundation of object-oriented programming, and are fundamental data types in object-oriented programming languages. These languages provide extensive syntactic and semantic support for object handling, including a hierarchical type system, special notation for declaring and calling methods, and facilities for hiding selected fields from client programmers. However, objects and object-oriented programming can be implemented in any language.

40 records are basis for understanding objects if function literals can be stored in fields (like in functional programming languages), but the actual calculi need be considerably more complex to incorporate essential features of OOP. Several extensions of System F<: that deal with mutable objects have been studied;[18] these allow both subtype polymorphism and parametric polymorphism (generics)

156 whose record fields are called instance variables (Smalltalk) or member data

192 Objects contain fields, methods and delegates (pseudo parents), whereas

200 fields, methods and parents and any object can be used as a template

1251 inheritance" in which fields and methods can be added and deleted from objects.

formatting

2604 US letter paper formatting.

2615 papers. Get "tools.ps.Z" for A4 paper formatting or get

2616 "toolsus.ps.Z" for US letter formatting.

2626 papers. Get "guide.ps.Z" for A4 paper formatting or get

2627 "guideus.ps.Z" for US letter formatting.

2637 papers. Get toopinht.ps.Z" for A4 paper formatting or get

2638 "toopinhtus.ps.Z" for US letter formatting.

foundation

3 "Objects" are the foundation of object-oriented programming, and are fundamental data types in object-oriented programming languages. These languages provide extensive syntactic and semantic support for object handling, including a hierarchical type system, special notation for declaring and calling methods, and facilities for hiding selected fields from client programmers. However, objects and object-oriented programming can be implemented in any language.

75 Christopher J. Date stated that critical comparison of OOP to other technologies, relational in particular, is difficult because of lack of an agreed-upon and rigorous definition of OOP. Date and Darwen propose a theoretical foundation on OOP that uses OOP as a kind of customizable type system to support RDBMS.

1677 > NCR 'Cooperative Frameworks' -- a Distributed Object Foundation

1759 the Open Software Foundation(tm) as its transport mechanism. DCE is

2008 CORBA Implementation Descriptions: NCR 'Cooperative Frameworks' -- a Distributed Object Foundation

2014 a Distributed Object Foundation

2023 Cooperative Frameworks is a distributed object foundation

future

1314 Refs to be included in future FAQs.

1347 ODMG-93 along with ODL lex and yacc files. In the future, we will be

1355 Refs to be included in future FAQs. See also Appendix E.

1428 Summaries and comparisons will be provided in future FAQs. Suggestions for

2038 toolkits (others are planned for future release) --

2166 and its open platform structure accommodates future technologies.

2269 This section is expected to grow considerably in the future.

greater

491 testing providing even greater reliability.

765 methodologies representing a greater departure from the conventional

766 "structured" techniques, with greater emphasis on objects. OOram [Reenskaug

829 From a greater perspective, the SEI has developed the Capability Maturity Model

1164 OO languages, subclassing and dynamic binding provides for greater flexibility

1178 signatures can occur, calling for greater care in use. [Black 86] discusses

1186 contrasted with greater power.

hardware

8 Object-oriented programming has roots that can be traced to the 1960s. As hardware and software became increasingly complex, manageability often became a concern. Researchers studied ways to maintain software quality and developed object-oriented programming in part to address common problems by strongly emphasizing discrete, reusable units of programming logic[citation needed]. The technology focuses on data rather than processes, with programs composed of self-sufficient modules ("classes"), each instance of which ("objects") contains all the information needed to manipulate its own data structure ("members"). This is in contrast to the existing modular programming that had been dominant for many years that focused on the function of a module, rather than specifically the data, but equally provided for code reuse, and self-sufficient reusable units of programming logic, enabling collaboration through the use of linked modules (subroutines). This more conventional approach, which still persists, tends to consider data and behavior separately.

12 In the 1970s, Kay's Smalltalk work had influenced the Lisp community to incorporate object- based techniques that were introduced to developers via the Lisp machine. Experimentation with various extensions to Lisp (like LOOPS and Flavors introducing multiple inheritance and mixins), eventually led to the Common Lisp Object System (CLOS, a part of the first standardized object-oriented programming language, ANSI Common Lisp), which integrates functional programming and object-oriented programming and allows extension via a Meta- object protocol. In the 1980s, there were a few attempts to design processor architectures that included hardware support for objects in memory but these were not successful. Examples include the Intel iAPX 432 and the Linn Smart Rekursiv.

66 However, Niklaus Wirth (who popularized the adage now known as Wirth's law: "Software is getting slower more rapidly than hardware becomes faster") said of OOP in his paper, "Good Ideas through the Looking Glass", "This paradigm closely reflects the structure of systems 'in the real world', and it is therefore well suited to model complex systems with complex behaviours" (contrast KISS principle).

70 OOP was developed to increase the reusability and maintainability of source code. Transparent representation of the control flow had no priority and was meant to be handled by a compiler. With the increasing relevance of parallel hardware and multithreaded coding, developer transparent control flow becomes more important, something hard to achieve with OOP.

1391 It covers extensible objected-oriented programming from hardware up.

1607 of developers, operating systems and hardware; and enhance long-

2126 updating a collection of incompatible hardware platforms, operating

hierarchy

226 Self is a good example of a delegation-based single hierarchy language

439 distinct parents can declare a member within a multiple inheritance hierarchy,

459 Smalltalk provide dynamic inheritance in some form or other. Single hierarchy

524 hierarchy "creation" mechanism, however this loses polymorphism and loses the

574 Hierarchy (Inheritance)

589 hybrid systems). However, all objects may be classes in single hierarchy

1328 viewed as a hierarchy, with locals

incremental

790 incremental, iterative, evolutionary, concurrent and situational nature of

792 with a risk-driven incremental prototyping approach. [Booch 91, 6.1]

794 an overall system perspective and [Berard 93] proposes an (incremental)

812 [Author's note: The spiral model is often incremental and may waterfall if

2514 "Incremental Testing of Object-Oriented Class Structures",

2535 dependencies. This in-turn permits incremental,

2634 particularily incremental testing.

integration

1606 encourages reuse of code; allows useful integration across lines

1782 System Object Model with extensions for distribution. This integration will

1893 integration for legacy systems.

1969 In addition Orbix-TP, integration with Tuxedo for transaction processing, has

1970 just entered beta testing. Work is underway on Orbix-FT, integration with

2664 testing, unit testing and integration testing. Cantata has been

2687 *Integration with leading programming tools for maximum productivity gains

interoperability

1616 requests and receive responses. The ORB provides interoperability

1784 interoperability of distributed applications across HP and IBM platforms.

1831 interoperability is planned so objects written in different languages can be

1967 demonstrated interoperability between IONA's Orbix running on Microsoft

2094 Product interoperability - Full interoperability between NCR

2096 is available now; interoperability with selected CORBA 1.1

isis

1715 etc. Electra is based on the HORUS toolkit (which is "the new ISIS

1848 Reply-To: rcbc@isis.com

1849 Product: Isis Reliable Distributed Object Manager(tm) (RDOM)

1850 Company: Isis Distributed Systems, Inc., Ithaca NY, USA.

1851 Isis RDOM(tm) is a fault tolerant distributed ORB platform for reliable

1854 cooperating objects. RDOM is built on top of the Isis Distributed

1971 the Isis distributed system, will deliver a fault-tolerant ORB.

kinds

5 In contrast, the object-oriented approach encourages the programmer to place data where it is not directly accessible by the rest of the program. Instead, the data is accessed by calling specially written functions, commonly called methods, which are either bundled in with the data or inherited from "class objects." These act as the intermediaries for retrieving or modifying the data they control. The programming construct that combines data with a set of methods for accessing and managing those data is called an object. The practice of using subroutines to examine or modify certain kinds of data, however, was also quite commonly used in non-OOP modular programming, well before the widespread use of object-oriented programming.

7 Objects can be thought of as wrapping their data within a set of functions designed to ensure that the data are used appropriately, and to assist in that use. The object's methods will typically include checks and safeguards that are specific to the types of data the object contains. An object can also offer simple-to-use, standardized methods for performing particular operations on its data, while concealing the specifics of how those tasks are accomplished. In this way alterations can be made to the internal structure or methods of an object without requiring that the rest of the program be modified. This approach can also be used to offer standardized methods across different types of objects. As an example, several different types of objects might offer print methods. Each type of object might implement that print method in a different way, reflecting the different kinds of data each contains, but all the different print methods might be called in the same standardized manner from elsewhere in the program. These features become especially useful when more than one programmer is contributing code to a project or when the goal is to reuse code between projects.

317 There are 2 kinds of distinct objects: objects and classes.

324 There are 2 kinds of distinct objects (objects and classes), with a

339 C++). There are 3 distinct kinds of objects (objects, classes, and

367 Inheritance provides a natural classification for kinds of objects and allows

1084 many kinds of objects such as text and graphical objects, multiple-polymorphism

machine

9 An object-oriented program may thus be viewed as a collection of interacting objects, as opposed to the conventional model, in which a program is seen as a list of tasks (subroutines) to perform. In OOP, each object is capable of receiving messages, processing data, and sending messages to other objects. Each object can be viewed as an independent "machine" with a distinct role or responsibility. The actions (or "methods") on these objects. The terms "objects" and "oriented" in something like the modern sense of object- oriented programming seem to make their first appearance at MIT in the late 1950s and early 1960s. In the environment of the artificial intelligence group, as early as 1960, "object" could refer to identified items (LISP atoms) with properties (attributes); Alan Kay was later to cite a detailed understanding of LISP internals as a strong influence on his thinking in 1966.[3] Another early MIT example was Sketchpad created by Ivan Sutherland in 1960-61; in the glossary of the 1963 technical report based on his dissertation about Sketchpad, Sutherland defined notions of "object" and "instance" (with the class concept covered by "master" or "definition"), albeit specialized to graphical interaction. Also, an MIT ALGOL version, AED-0, linked data structures ("plexes", in that dialect) directly with procedures, prefiguring what were later termed "messages", "methods" and "member functions".

12 In the 1970s, Kay's Smalltalk work had influenced the Lisp community to incorporate object- based techniques that were introduced to developers via the Lisp machine. Experimentation with various extensions to Lisp (like LOOPS and Flavors introducing multiple inheritance and mixins), eventually led to the Common Lisp Object System (CLOS, a part of the first standardized object-oriented programming language, ANSI Common Lisp), which integrates functional programming and object-oriented programming and allows extension via a Meta- object protocol. In the 1980s, there were a few attempts to design processor architectures that included hardware support for objects in memory but these were not successful. Examples include the Intel iAPX 432 and the Linn Smart Rekursiv.

16 More recently, a number of languages have emerged that are primarily object-oriented yet compatible with procedural methodology, such as Python and Ruby. Probably the most commercially important recent object-oriented languages are Visual Basic.NET (VB.NET) and C#, both designed for Microsoft's .NET platform, and Java, developed by Sun Microsystems. Both frameworks show the benefit of using OOP by creating an abstraction from implementation in their own way. VB.NET and C# support cross-language inheritance, allowing classes defined in one language to subclass classes defined in the other language. Developers usually compile Java to bytecode, allowing Java to run on any operating system for which a Java virtual machine is available. VB.NET and C# make use of the Strategy pattern to accomplish cross-language inheritance, whereas Java makes use of the Adapter pattern[citation needed].

73 Luca Cardelli wrote a paper titled "Bad Engineering Properties of Object-Oriented Languages" Richard Stallman wrote in 1995, "Adding OOP to Emacs is not clearly an improvement; I used OOP when working on the Lisp Machine window systems, and I disagree with the usual view that it is a superior way to program."

1357 all the way down to to the machine (OO architectures are found at the bottom).

1891 be built and tested on a single machine using local resources.

2233 its entirety on the local machine. This is possible because DDM maps

manager

1849 Product: Isis Reliable Distributed Object Manager(tm) (RDOM)

2035 IP, NetBIOS, Lan Manager NetBEUI and

2108 Randy Volters, Sr. Product Manager

2221 DOME Data Manager (DDMTM) database access manager.

2223 The DOME Data Manager is a complete relational DBMS engine that

2244 DOME, DOMEshell, DOME Security, DOME Data Manager, and DDM are

manual

2322 unacceptable in some applications. However the overhead of manual

2355 1. Manual Memory Management Breaks Encapsulation.

2370 2. Implementation Hiding is not Compatible with Manual Memory Management

2381 Manual memory management must make assumptions about a program's order of

2408 It is not enough to merely find fault with manual memory management. One also

2420 superior real-time performance as manual management usually has difficulty

2424 manual management to provide the programmer with the broadest set of tools,

meta-classes

299 picture Meta-Classes. Classes must be implemented in some way; perhaps with

310 objects (as in Self). There is no need for Meta-Classes because objects

328 of specialized Meta-Classes for classes. There is still a Meta-Class as in

333 class class (Smalltalk's Meta-Classes)

350 Meta-Classes accessible to users [Kiczales 92, Paepcke 93]. In CLOS

583 meta-classes. But classes play a dual role, because objects can only be

1242 This is the 1 Level System as Described under Meta-Classes. Delegation refers

multi-methods

22 Encapsulation (or multi-methods, in which case the state is kept separate)

614 What Are Multi-Methods And Multiple-Polymorphism? (Object-Oriented Technology)

615 Multi-methods involve two primary concepts, multiple-polymorphism and lack of

619 packages can be used to restrict access, as in CLOS). Multi-methods can also

624 [Chambers 93] discusses multi-methods in his new OO language, Cecil.

662 Why do multi-methods allow open access to parameters? It allows efficient

693 multi-methods still require dynamic types!]

natural

67 Steve Yegge and others noted that natural languages lack the OOP approach of strictly prioritizing things (objects

198 or shared state, otherwise idiosyncratic objects, a powerful and natural

367 Inheritance provides a natural classification for kinds of objects and allows

369 and constructing object systems. Natural means we use concepts,

478 Inheritance is a natural way to model the world or a domain of discourse,

479 and so provides a natural model for OOA and OOD (and even OOP). This is

2430 objects was something more intuitive and natural than coding procedures.

object's

7 Objects can be thought of as wrapping their data within a set of functions designed to ensure that the data are used appropriately, and to assist in that use. The object's methods will typically include checks and safeguards that are specific to the types of data the object contains. An object can also offer simple-to-use, standardized methods for performing particular operations on its data, while concealing the specifics of how those tasks are accomplished. In this way alterations can be made to the internal structure or methods of an object without requiring that the rest of the program be modified. This approach can also be used to offer standardized methods across different types of objects. As an example, several different types of objects might offer print methods. Each type of object might implement that print method in a different way, reflecting the different kinds of data each contains, but all the different print methods might be called in the same standardized manner from elsewhere in the program. These features become especially useful when more than one programmer is contributing code to a project or when the goal is to reuse code between projects.

33 Decoupling refers to careful controls that separate code modules from particular use cases, which increases code re-usability. A common use of decoupling in OOP is to polymorphically decouple the encapsulation (see Bridge pattern and Adapter pattern) - for example, using a method interface which an encapsulated object must satisfy, as opposed to using the object's class.

352 what is this object's class, give info on this class, etc.) and an

501 class. Such assignment can result in the loss of an object's dynamic type in

502 favor of a static type (or even loss of an object's representation to that of

1109 that object must be a member of the polymorphic object's class.

1167 (transitively) from any polymorphic object's class (inclusion polymorphism

operation

598 operation. It can be thought of as a procedure with the first parameter as

1045 "Polymorphism" means that the same operation may behave differently on

1081 multiple-polymorphism, a cut operation in an Edit submenu may pass the cut

1082 operation (along with parameters) to any object on the desktop, each of which

1094 as each object knows what operation to support. It also allows a reduction in

2075 directory entries required for cross domain operation

2660 operation. Cantata is suitable for testing software written in

paradigm

1 Object-oriented programming (OOP) is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction, encapsulation, messaging, modularity, polymorphism, and inheritance. Many modern programming languages now support OOP, at least as an option. In computer science, an object is any entity that can be manipulated by the commands of a programming language, such as a value, variable, function, or data structure. (With the later introduction of object-oriented programming the same word, "object", refers to a particular instance of a class)

10 Objects as a formal concept in programming were introduced in the 1960s in Simula 67, a major revision of Simula I, a programming language designed for discrete event simulation, created by Ole-Johan Dahl and Kristen Nygaard of the Norwegian Computing Center in Oslo. Simula 67 was influenced by SIMSCRIPT and Hoare's proposed "record classes". Simula introduced the notion of classes and instances or objects (as well as subclasses, virtual methods, coroutines, and discrete event simulation) as part of an explicit programming paradigm. The language also used automatic garbage collection that had been invented earlier for the functional programming language Lisp. Simula was used for physical modeling, such as models to study and improve the movement of ships and their content through cargo ports. The ideas of Simula 67 influenced many later languages, including Smalltalk, derivatives of LISP (CLOS), Object Pascal, and C++.

66 However, Niklaus Wirth (who popularized the adage now known as Wirth's law: "Software is getting slower more rapidly than hardware becomes faster") said of OOP in his paper, "Good Ideas through the Looking Glass", "This paradigm closely reflects the structure of systems 'in the real world', and it is therefore well suited to model complex systems with complex behaviours" (contrast KISS principle).

1236 3.1) What Is The "Classical" Object-Oriented Paradigm?

1240 Prototyping" Object-Oriented Paradigm?

1853 paradigm for constructing complex applications out of collections of

2384 oriented paradigm of objects sending messages to each other (possibly from

paul

77 Paul Graham has suggested that the purpose of OOP is to act as a "herding mechanism" that keeps mediocre programmers in mediocre organizations from "doing too much damage". This is at the expense of slowing down productive programmers who know how to use more powerful and more compact techniques.

1972 Paul Hickey, tel: +353-1-6686522

2278 written for the FAQ by Paul Johnson and the second is from the FAQ author's

2281 From: Paul Johnson (paj@gec-mrc.co.uk)

2329 [2] "Uniprocessor Garbage Collection Techniques," by Paul R. Wilson,

2517 Hoffman, Daniel and Paul Strooper. A Case Study in Class Testing.

2691 contact Paul Townsend, townsend@mprgate.mpr.ca.

performance

716 operational characteristics (e.g. reliability, availability, performance)".

1812 -- up to 400 percent increased performance, through quicker

1885 ORBs and servers. It is a multi-threaded high performance ORB

1911 - dynamic invocation, which is seen as detrimental to performance

2364 performance than GC, awkward syntax, and poor semantics, which typically

2402 sharing and carrying expensive performance costs when complex objects are

2420 superior real-time performance as manual management usually has difficulty

powerful

77 Paul Graham has suggested that the purpose of OOP is to act as a "herding mechanism" that keeps mediocre programmers in mediocre organizations from "doing too much damage". This is at the expense of slowing down productive programmers who know how to use more powerful and more compact techniques.

135 based approaches (e.g. Smalltalk handles) allow powerful dynamic typing, as

198 or shared state, otherwise idiosyncratic objects, a powerful and natural

225 1 level systems therefore provide the most flexible and powerful capabilities.

768 which is quite powerful. [Booch 94] presents a methodology which is an

884 powerful dynamic typing mechanism (although these existed to some extent in

903 Polymorphism is often considered the most powerful facility of an OOPL.

procedural

16 More recently, a number of languages have emerged that are primarily object-oriented yet compatible with procedural methodology, such as Python and Ruby. Probably the most commercially important recent object-oriented languages are Visual Basic.NET (VB.NET) and C#, both designed for Microsoft's .NET platform, and Java, developed by Sun Microsystems. Both frameworks show the benefit of using OOP by creating an abstraction from implementation in their own way. VB.NET and C# support cross-language inheritance, allowing classes defined in one language to subclass classes defined in the other language. Developers usually compile Java to bytecode, allowing Java to run on any operating system for which a Java virtual machine is available. VB.NET and C# make use of the Strategy pattern to accomplish cross-language inheritance, whereas Java makes use of the Adapter pattern[citation needed].

17 Just as procedural programming led to refinements of techniques such as structured programming, modern object-oriented software design methods include refinements[citation needed] such as the use of design patterns, design by contract, and modeling languages (such as UML).

47 Languages designed mainly for OO programming, but with some procedural elements. Examples: C++, C#, VB.NET, Java, Python.

48 Languages that are historically procedural languages, but have been extended with some OO features. Examples: Visual Basic (derived from BASIC), Fortran 2003, Perl, COBOL 2002, PHP, ABAP.

69 verbs).] This problem may cause OOP to suffer more convoluted solutions than procedural programming.

74 A study by Potok has shown no significant difference in productivity between OOP and procedural approaches.

2383 object. While this is often possible in procedural languages, the object-

programmer

4 Objects are used in software development to implement abstract data structures, by bringing together the data components with the procedures that manipulate them. Objects in object- oriented programming are key in the concept of inheritance; thereby improving program reliability[attribution needed], simplification of software maintenance[attribution needed], the management of libraries, and the division of work in programmer teams. Object-oriented programming languages are generally designed to exploit and enforce these potential advantages of the object model. Objects can also make it possible to handle very disparate objects by the same piece of code, as long as they all have the proper method. Simple, non-OOP programs may be one "long" list of statements (or commands). More complex programs will often group smaller sections of these statements into functions or subroutines each of which might perform a particular task. With designs of this sort, it is common for some of the program's data to be 'global', i.e. accessible from any part of the program. As programs grow in size, allowing any function to modify any piece of data means that bugs can have wide-reaching effects.

5 In contrast, the object-oriented approach encourages the programmer to place data where it is not directly accessible by the rest of the program. Instead, the data is accessed by calling specially written functions, commonly called methods, which are either bundled in with the data or inherited from "class objects." These act as the intermediaries for retrieving or modifying the data they control. The programming construct that combines data with a set of methods for accessing and managing those data is called an object. The practice of using subroutines to examine or modify certain kinds of data, however, was also quite commonly used in non-OOP modular programming, well before the widespread use of object-oriented programming.

7 Objects can be thought of as wrapping their data within a set of functions designed to ensure that the data are used appropriately, and to assist in that use. The object's methods will typically include checks and safeguards that are specific to the types of data the object contains. An object can also offer simple-to-use, standardized methods for performing particular operations on its data, while concealing the specifics of how those tasks are accomplished. In this way alterations can be made to the internal structure or methods of an object without requiring that the rest of the program be modified. This approach can also be used to offer standardized methods across different types of objects. As an example, several different types of objects might offer print methods. Each type of object might implement that print method in a different way, reflecting the different kinds of data each contains, but all the different print methods might be called in the same standardized manner from elsewhere in the program. These features become especially useful when more than one programmer is contributing code to a project or when the goal is to reuse code between projects.

2293 storage cannot be made by the programmer. Drawing editors and

2295 programmer has to write an application-specific garbage collector.

2424 manual management to provide the programmer with the broadest set of tools,

2466 testable during initial evaluation by the client programmer. They must

pure

46 Languages called "pure" OO languages, because everything in them is treated consistently as an object, from primitives such as characters and punctuation, all the way up to whole classes, prototypes, blocks, modules, etc. They were designed specifically to facilitate, even enforce, OO methods. Examples: Scala, Smalltalk, Eiffel, JADE, Emerald.

215 search for an attribute to a delegate, and is therefore more of a pure

1058 for the polymorphic object; and hence, polymorphism. This common pure

1060 subclass polymorphism to be more specific (see section 2.1). Pure statically

1138 "pure" example. Section 2.5 discusses why static typing has less power

1144 "pure" statically (or strongly) checked parametric polymorphism, by Strachey's

1204 pure parametric polymorphism (as is also commonly found in OO languages in

record

10 Objects as a formal concept in programming were introduced in the 1960s in Simula 67, a major revision of Simula I, a programming language designed for discrete event simulation, created by Ole-Johan Dahl and Kristen Nygaard of the Norwegian Computing Center in Oslo. Simula 67 was influenced by SIMSCRIPT and Hoare's proposed "record classes". Simula introduced the notion of classes and instances or objects (as well as subclasses, virtual methods, coroutines, and discrete event simulation) as part of an explicit programming paradigm. The language also used automatic garbage collection that had been invented earlier for the functional programming language Lisp. Simula was used for physical modeling, such as models to study and improve the movement of ships and their content through cargo ports. The ideas of Simula 67 influenced many later languages, including Smalltalk, derivatives of LISP (CLOS), Object Pascal, and C++.

155 expanded types in Eiffel) can be viewed as instances of a record type,

156 whose record fields are called instance variables (Smalltalk) or member data

157 (C++). The record (class) may also contain operations which are called

159 function taking an object of the record type, called the receiver, as the

162 roughly equivalent to a loosely coupled variant record, with derived classes

970 "Subtyping on record types corresponds to the concept of inheritance

referred

191 only objects, they are referred to as single-hierarchy, or 1 Level systems.

561 programming often referred to as "object based"", which is quite different

609 If done statically, this can be referred to as invocation, and message passing

815 the process is often referred to as seamless, meaning there is no conceptual

882 referred to as simply Simula. Smalltalk was the next major contributor

935 Parametric polymorphism is also referred to as "true" polymorphism, whereas

965 Parametric polymorphism is referred to as generics. Generics can be syntactic,

related

13 Object-oriented programming developed as the dominant programming methodology in the early and mid 1990s when programming languages supporting the techniques became widely available. These included Visual FoxPro 3.0, C++[citation needed], and Delphi[citation needed]. Its dominance was further enhanced by the rising popularity of graphical user interfaces, which rely heavily upon object-oriented programming techniques. An example of a closely related dynamic GUI library and OOP language can be found in the Cocoa frameworks on Mac OS X, written in Objective-C, an object-oriented, dynamic messaging extension to C based on Smalltalk. OOP toolkits also enhanced the popularity of event-driven programming (although this concept is not limited to OOP). Some[who?] feel that association with GUIs (real or perceived) was what propelled OOP into the programming mainstream.

940 divided into parametric and inclusion polymorphism, which are closely related,

963 related, but are distinct enough in implementation to justify separate

1017 related by some common superclass; thus, any object denoted by this name is

1154 in OO. Parametric polymorphism is a related concept where this is also true,

1348 adding more links to related sites, bibliographies, and a FAQ for ODBMSs.

1798 In a related announcement, HP introduced Version 2.0 of HP Distributed

relationship

56 It is intuitive to assume that inheritance creates a semantic "is a" relationship, and thus to infer that objects instantiated from subclasses can always be safely used instead of those instantiated from the superclass. This intuition is unfortunately false in most OOP languages, in particular in all those that allow mutable objects. Subtype polymorphism as enforced by the type checker in OOP languages (with mutable objects) cannot guarantee behavioral subtyping in any context. Behavioral subtyping is undecidable in general, so it cannot be implemented by a program (compiler). Class or object hierarchies need to be carefully designed considering possible incorrect uses that cannot be detected syntactically. This issue is known as the Liskov substitution principle.

372 Inheritance is a relationship between classes where one class is the parent

378 [LaLonde 90]) and can be used as an is-a-kind-of (or is-a) relationship or

404 An example of the is-a-kind-of relationship is shown below. Is-a is often

406 instantiation relationship. In classical OO, inheritance is a relationship

487 of reuse takes advantage of the is-a-kind-of relationship. Class libraries

require

671 efficiency, and to support a static programming idiom, but require restrictions

693 multi-methods still require dynamic types!]

992 require explicit instantiation of its template functions, formal generic

1192 similar to subtype polymorphism; however, ACs require type compatible classes

1822 writing distributed, object-oriented applications require additional

2183 beyond what many of the standards require, it makes the task of

2284 OO Languages which require garbage collection include Eiffel, Smalltalk and

requires

385 don't specify new state by default (to do so requires cloning), C-based (C++,

476 resolution but requires more work for parents with many features.

678 requires both static and dynamic typing, because no formal argument

709 requires."

1155 but is of a different flavor (and usually requires object attributes by use.

2353 There are several reasons why true object-oriented programming requires garbage

2372 but explicit memory management requires implementation-dependent

role

9 An object-oriented program may thus be viewed as a collection of interacting objects, as opposed to the conventional model, in which a program is seen as a list of tasks (subroutines) to perform. In OOP, each object is capable of receiving messages, processing data, and sending messages to other objects. Each object can be viewed as an independent "machine" with a distinct role or responsibility. The actions (or "methods") on these objects. The terms "objects" and "oriented" in something like the modern sense of object- oriented programming seem to make their first appearance at MIT in the late 1950s and early 1960s. In the environment of the artificial intelligence group, as early as 1960, "object" could refer to identified items (LISP atoms) with properties (attributes); Alan Kay was later to cite a detailed understanding of LISP internals as a strong influence on his thinking in 1966.[3] Another early MIT example was Sketchpad created by Ivan Sutherland in 1960-61; in the glossary of the 1963 technical report based on his dissertation about Sketchpad, Sutherland defined notions of "object" and "instance" (with the class concept covered by "master" or "definition"), albeit specialized to graphical interaction. Also, an MIT ALGOL version, AED-0, linked data structures ("plexes", in that dialect) directly with procedures, prefiguring what were later termed "messages", "methods" and "member functions".

87 defined in [Coplien 92, p280], where "classes play a central role in the

94 unit, or entity, either real or abstract, with a well-defined role in the

189 flexible kind of object which can play the role of classes in classical OO

196 However, one-le vel objects often play the role of classes to take advantage of

202 thus performing the classical role of a class. In typical prototyping systems,

583 meta-classes. But classes play a dual role, because objects can only be

shlaer

102 the problem at hand." [Shlaer 88, p 14] defines: "An object is an abstraction

753 [Shlaer 88] is often credited as the first book on OOA, although their method

755 and Constantine. Their complete approach ([Shlaer 88, 92]) consists of

1417 Shlaer and Mellor [Shlaer 88 and 92]

1466 Hood, Coad and Yourdon, Winter Partners, Shlaer and Mellor, Jacobson,

1483 Shlaer, S., Mellor, S.J. - Object-oriented systems analysis: Modeling the

solution

55 Challenges of object-oriented design are addressed by several methodologies. Most common is known as the design patterns codified by Gamma et al.. More broadly, the term "design patterns" can be used to refer to any general, repeatable solution to a commonly occurring problem in software design. Some of these commonly occurring problems have implications and solutions particular to object-oriented development.

63 Both object-oriented programming and relational database management systems (RDBMSs) are extremely common in software today. Since relational databases don't store objects directly (though some RDBMSs have object-oriented features to approximate this), there is a general need to bridge the two worlds. The problem of bridging object-oriented programming accesses and data patterns with relational databases is known as Object-Relational impedance mismatch. There are a number of approaches to cope with this problem, but no general solution without downsides.[20] One of the most common approaches is object-relational mapping, as found in libraries like Java Data Objects and Ruby on Rails' ActiveRecord.

1738 SUBJECT: HP INTRODUCES DISTRIBUTED-COMPUTING SOLUTION FOR BUILDING

1742 today introduced a distributed-computing solution for building scalable,

2141 As a result, middleware is quickly emerging as the best solution for

2165 between new and legacy applications. DOME provides a solution today

2313 One partial solution to a lack of GC is reference counting. In this

special

3 "Objects" are the foundation of object-oriented programming, and are fundamental data types in object-oriented programming languages. These languages provide extensive syntactic and semantic support for object handling, including a hierarchical type system, special notation for declaring and calling methods, and facilities for hiding selected fields from client programmers. However, objects and object-oriented programming can be implemented in any language.

25 Open recursion – a special variable (syntactically it may be a keyword), usually called this or self, that allows a method body to invoke another method body of the same object. This variable is late-bound; it allows a method defined in one class to invoke another method that is defined later, in some subclass thereof.

917 object-oriented polymorphism. This is a special case of parametric

1231 special case of type variables.

1549 arenas besides the distributed system problem, the Group supports Special

2552 simply a special case of testing software which retains state

2656 testing C++, but as far as I am able to determine, it has no special

st

1870 1st Floor, Lawrence House, 1A Morrell St, Leamington Spa, England CV32 5SZ

2331 Management, Sept. 1992, St. Malo, France, Yves Bekkers and Jacques Cohen,

2457 1900 S. Norfolk St., #224

2653 st80_vw

2654 TreeLW1.1" from st.cs.uiuc.edu.

2692 Software Research Inc. (625 Third St, San Francisco, CA 94107-1997,

stack

1216 programming languages. An example is a Stack with a generically

1217 parameterized base type. This allows a single Stack class to provide

1218 many instantiations such as a Stack of ints, a Stack of any fundamental

1219 or user defined type, or even a Stack of Stacks of ... Another example is

2311 length, include file nesting and macro stack depth. This causes

2365 include failure to reclaim cycles, inability to handle stack and static

structured

17 Just as procedural programming led to refinements of techniques such as structured programming, modern object-oriented software design methods include refinements[citation needed] such as the use of design patterns, design by contract, and modeling languages (such as UML).

754 adds OO techniques to the traditional structured analysis principles of Yourdon

758 addition to the structured analysis family (as does Martin and Odell).

766 "structured" techniques, with greater emphasis on objects. OOram [Reenskaug

818 programming gaps found in traditional structured analysis and design.

1317 structured subobjects, each object has its own identity, or object-id (as

2373 low-level knowledge of how memory is structured. For example, programmers

subject

106 * all instances are subject to and conform to the same rules"

1337 Subject: ODMG Gopher and Web Addresses

1585 Subject:

1708 Subject: ORB Implementations

1738 SUBJECT: HP INTRODUCES DISTRIBUTED-COMPUTING SOLUTION FOR BUILDING

1847 Subject: Re: DCE vs. CORBA

2010 Subject: re-post: NCR Cooperative Frameworks (new phone no.)

superclass

2 In the domain of object-oriented programming an object is usually taken to mean an ephemeral compilation of attributes (object elements) and behaviors (methods or subroutines) encapsulating an entity. In this way, while primitive or simple data types are still just single pieces of information, object-oriented objects are complex types that have multiple pieces of information and specific properties (or attributes). Instead of merely being assigned a value, (like int =10), objects have to be "constructed". In the real world, if a Ford Focus is an "object" - an instance of the car class, its physical properties and its function to drive would have been individually specified. Once the properties of the Ford Focus "object" had been specified into the form of the car class, it can be endlessly copied to create identical objects that look and function in just the same way. As an alternative example, animal is a superclass of primate and primate is a superclass of human. Individuals such as Joe Bloggs or John Doe would be particular examples or 'objects' of the human class, and consequently possess all the characteristics of the human class (and of the primate and animal superclasses as well).

56 It is intuitive to assume that inheritance creates a semantic "is a" relationship, and thus to infer that objects instantiated from subclasses can always be safely used instead of those instantiated from the superclass. This intuition is unfortunately false in most OOP languages, in particular in all those that allow mutable objects. Subtype polymorphism as enforced by the type checker in OOP languages (with mutable objects) cannot guarantee behavioral subtyping in any context. Behavioral subtyping is undecidable in general, so it cannot be implemented by a program (compiler). Class or object hierarchies need to be carefully designed considering possible incorrect uses that cannot be detected syntactically. This issue is known as the Liskov substitution principle.

374 superclass

981 insta nce of a superclass is required. For subtyping (subtype polymorphism),

1017 related by some common superclass; thus, any object denoted by this name is

2644 (bruce@utafll.uta.edu). It is a general superclass for application

switch

171 switch statement on variant parts with a single call, reducing code size

639 coding logic (switch statements) and because small methods further reduce

656 lead to the use of switch statements based on type or complex coding in many

1092 a system without affecting existing code and eliminates switch statements.

1095 program complexity by replacing a nested construct (switch statement) with a

1100 the nested switch statement! [Martin 92] covers some of these issues.

2398 b) Switches indicating deletion. Many applications must clear the switch to

task

4 Objects are used in software development to implement abstract data structures, by bringing together the data components with the procedures that manipulate them. Objects in object- oriented programming are key in the concept of inheritance; thereby improving program reliability[attribution needed], simplification of software maintenance[attribution needed], the management of libraries, and the division of work in programmer teams. Object-oriented programming languages are generally designed to exploit and enforce these potential advantages of the object model. Objects can also make it possible to handle very disparate objects by the same piece of code, as long as they all have the proper method. Simple, non-OOP programs may be one "long" list of statements (or commands). More complex programs will often group smaller sections of these statements into functions or subroutines each of which might perform a particular task. With designs of this sort, it is common for some of the program's data to be 'global', i.e. accessible from any part of the program. As programs grow in size, allowing any function to modify any piece of data means that bugs can have wide-reaching effects.

719 including human interaction, task management, and data management details."

782 (see below) and discusses other alternatives to the task oriented models. He

1622 the ORB Task Force of the OMG.

2123 task of connecting employees with the information they need. In a

2154 The DOME system can accomplish this complex task because it offers:

2183 beyond what many of the standards require, it makes the task of

values

146 have no type, but the objects (values) they point to always do. An untyped

153 a view of types as sets of values.

223 values view taken by [Cardelli 85]. [Martin 92] provides some examples of

950 Polymorphic Languages: some values and variables may have more than one type.

1157 A type can be considered a set of values and a set of operations on those

1158 values. This can insure type-safe programming. However, the representation of

2304 particular problem with temporary values produced by C++ overloaded

works

837 based software process (TSP?). Other CMM's in the works at the SEI include a

930 "Parametric polymorphism is obtained when a function works uniformly on a range

932 polymorphism is obtained when a function works, or appears to work, on several

1732 now, and a NetWare version is in the works. Submitted a C++ language

1799 Smalltalk. This toolset works with VisualWorks from ParcPlace Systems to

2378 works well in simple cases like strings where the data is not polymorphic

2407 5. Garbage Collection Works

'

543 [Cardelli 85] and hence without polymorphism, as in '83 Ada and Modula-2.

559 Stroustrup's first edition of [Stroustrup 91, '86 p. 37] defines object based

1503 and coincidentally, MIT '82, SM '85, PhD '89 (EECS)

1730 Revision 1.0 has been shipping since beginning of '92. Revision 1.1

accessed

5 In contrast, the object-oriented approach encourages the programmer to place data where it is not directly accessible by the rest of the program. Instead, the data is accessed by calling specially written functions, commonly called methods, which are either bundled in with the data or inherited from "class objects." These act as the intermediaries for retrieving or modifying the data they control. The programming construct that combines data with a set of methods for accessing and managing those data is called an object. The practice of using subroutines to examine or modify certain kinds of data, however, was also quite commonly used in non-OOP modular programming, well before the widespread use of object-oriented programming.

238 may be accessed wherever visible. CLOS and Ada allow methods to be defined

246 data and member functions) may be accessed from anywhere. A Stack's Push and

259 class. All Smalltalk instance variables can be accessed by subclasses,

618 encapsulation implies all arguments can be accessed by a multi-method (although

1360 objects, and hence system resources, can only be accessed if a capability to

acm

1469 Oriented Design," The Communications of ACM, (33, 9) Sept. 1990, pp. 104-1124.

2495 Software Systems", Proceedings of the 18th ACM Annual Computer

2496 Science Conference, ACM, Inc., New York, NY, 1990, pp. 161-165.

2499 Testing, Analysis, and Verification (TAV4), 1991, ACM, Inc.,

2516 ACM, Inc., pp. 68 - 80.

2561 and Applications ACM. Copies of this paper can be obtained

alternative

2 In the domain of object-oriented programming an object is usually taken to mean an ephemeral compilation of attributes (object elements) and behaviors (methods or subroutines) encapsulating an entity. In this way, while primitive or simple data types are still just single pieces of information, object-oriented objects are complex types that have multiple pieces of information and specific properties (or attributes). Instead of merely being assigned a value, (like int =10), objects have to be "constructed". In the real world, if a Ford Focus is an "object" - an instance of the car class, its physical properties and its function to drive would have been individually specified. Once the properties of the Ford Focus "object" had been specified into the form of the car class, it can be endlessly copied to create identical objects that look and function in just the same way. As an alternative example, animal is a superclass of primate and primate is a superclass of human. Individuals such as Joe Bloggs or John Doe would be particular examples or 'objects' of the human class, and consequently possess all the characteristics of the human class (and of the primate and animal superclasses as well).

470 common subtype as its type). C++ provides an alternative, where only parents

495 otherwise. See [Raj 89] for an alternative approach as found in Jade.

665 alternative explanation. While open access can be useful in some cases, it

1322 programs, an equivalence that would be lost if an alternative were chosen, as

2409 has to show that garbage collection provides a better alternative. Early

august

11 The Smalltalk language, which was developed at Xerox PARC (by Alan Kay and others) in the 1970s, introduced the term object-oriented programming to represent the pervasive use of objects and messages as the basis for computation. Smalltalk creators were influenced by the ideas introduced in Simula 67, but Smalltalk was designed to be a fully dynamic system in which classes could be created and modified dynamically rather than statically as in Simula 67.[9] Smalltalk and with it OOP were introduced to a wider audience by the August 1981 issue of Byte Magazine.

43 This section does not cite any references or sources. Please help improve this section by adding citations to reliable sources. Unsourced material may be challenged and removed. (August 2009)

1690 Ref: Datamation, LOOK AHEAD Section, August 1. German Company.

1861 The C++ interface in August. Customers include AMD, Consilium and Swiss

1914 DOME was first released in August 1993; version 2 in May 1994.

2271 August 1993

authors

71 Responsibility-driven design defines classes in terms of a contract, that is, a class should be defined around a responsibility and the information that it shares. This is contrasted by Wirfs-Brock and Wilkerson with data-driven design, where classes are defined around the data-structures that must be held. The authors hold that responsibility-driven design is preferable.

342 In the authors opinion, a myth. The story goes an object is an instance of a

1491 The authors, regretfully, cannot supply ftp, postscript, TEX, or

2519 Conference, October 1993, Toronto. Email addresses for authors

2521 approach to testing which the authors call Testgraphs. An

2577 This paper, or one with the same title and authors, is

bank

6 An object-oriented program will usually contain different types of objects, each type corresponding to a particular kind of complex data to be managed or perhaps to a real-world object or concept such as a bank account, a hockey player, or a bulldozer. A program might well contain multiple copies of each type of object, one for each of the real-world objects the program is dealing with. For instance, there could be one bank account object for each real-world account at a particular bank. Each copy of the bank account object would be alike in the methods it offers for manipulating or reading its data, but the data inside each object would differ reflecting the different history of each account.

41 Attempts to find a consensus definition or theory behind objects have not proven very successful (however, see Abadi & Cardelli, A Theory of Objects[18] for formal definitions of many OOP concepts and constructs), and often diverge widely. For example, some definitions focus on mental activities, and some on program structuring. One of the simpler definitions is that OOP is the act of using "map" data structures or arrays that can contain functions and pointers to other maps, all with some syntactic and scoping sugar on top. Inheritance can be performed by cloning the maps (sometimes called "prototyping"). OBJECT:=>> Objects are the run time entities in an object-oriented system. They may represent a person, a place, a bank account, a table of data or any item that the program has to handle.

1862 Bank Corp).

black

1007 They refer to this as "best-fitting" types [Black 86]. The original Trellis

1062 similarly [Black 86].

1178 signatures can occur, calling for greater care in use. [Black 86] discusses

1196 for loosely coupled modules and in distributed programming [Black 87].

1198 Jade [Black 86] and

1260 Jade ([Black 86] and [Raj 89])

calling

3 "Objects" are the foundation of object-oriented programming, and are fundamental data types in object-oriented programming languages. These languages provide extensive syntactic and semantic support for object handling, including a hierarchical type system, special notation for declaring and calling methods, and facilities for hiding selected fields from client programmers. However, objects and object-oriented programming can be implemented in any language.

5 In contrast, the object-oriented approach encourages the programmer to place data where it is not directly accessible by the rest of the program. Instead, the data is accessed by calling specially written functions, commonly called methods, which are either bundled in with the data or inherited from "class objects." These act as the intermediaries for retrieving or modifying the data they control. The programming construct that combines data with a set of methods for accessing and managing those data is called an object. The practice of using subroutines to examine or modify certain kinds of data, however, was also quite commonly used in non-OOP modular programming, well before the widespread use of object-oriented programming.

429 inherited by any class requiring them. Method combination, or calling

432 explicitly calling them, allowing client class code to remain unchanged [Booch

1178 signatures can occur, calling for greater care in use. [Black 86] discusses

1182 calling for careful matching of actual and formal generic parameters. The

characteristics

2 In the domain of object-oriented programming an object is usually taken to mean an ephemeral compilation of attributes (object elements) and behaviors (methods or subroutines) encapsulating an entity. In this way, while primitive or simple data types are still just single pieces of information, object-oriented objects are complex types that have multiple pieces of information and specific properties (or attributes). Instead of merely being assigned a value, (like int =10), objects have to be "constructed". In the real world, if a Ford Focus is an "object" - an instance of the car class, its physical properties and its function to drive would have been individually specified. Once the properties of the Ford Focus "object" had been specified into the form of the car class, it can be endlessly copied to create identical objects that look and function in just the same way. As an alternative example, animal is a superclass of primate and primate is a superclass of human. Individuals such as Joe Bloggs or John Doe would be particular examples or 'objects' of the human class, and consequently possess all the characteristics of the human class (and of the primate and animal superclasses as well).

105 characteristics

229 details of an object that do not contribute to its essential characteristics."

716 operational characteristics (e.g. reliability, availability, performance)".

1951 informed of the functions, attributes and characteristics of objects and

2067 characteristics -- rather than names

counting

2313 One partial solution to a lack of GC is reference counting. In this

2362 Attempts to encapsulate memory management with reference counting, the "poor

2363 man's garbage collector", are usually misguided. Reference counting has worse

2369 counting an inadequate substitute for true GC.

2377 counting to encapsulate copy-on-write memory management. However, this only

2404 d) Reference counting, which was already discussed.

coupling

513 inheritance stuctures). Some don't like the coupling of classes (as in Jade),

637 define methods for each specific case desired. In addition to better coupling

687 But coupling the two cases of selector variables (as found in CLOS,

895 lower coupling), and etc.

1097 and loose coupling. Another benefit is that code complexity increases not

1264 CLOS [Kim 89, ch 4] has a looser coupling of methods to classes and doesn't

coverage

715 statement of what is needed; a coverage of both functional and quantified

2676 TestCenter from CenterLine will do coverage testing of C++ (and C)

2681 *Graphical test coverage to highlight any code not executed during test runs

2683 *Programmatic interface to output files and cumulative code coverage

2693 voice: 1-415-957-1441, email: info@soft.com) has a coverage tool for C++

2696 San Jose, CA 95128, voice: 1-408-298-3824 ) has a coverage tool for

description

395 Defining inheritance (with a thorough description or denotational semantic

1872 Short Description:

1883 Long Description:

1925 See Appendix E:65 for a complete description and anon FTP info.

2022 Product Description -

2112 Company Description -

differing

820 A problem domain has many realizations, or differing OOAs. An OOA has many

821 realizations, or differing OODs, but a similar notation is often used for

822 the two. An OOD also has many realizations, or differing OOPs, but allows a

1052 is it? To make any difference, the differing forms must have some effect. In

1110 This also provides a good example of differing definitions among object-

2390 4. Differing Memory Management Schemes Hinder Reuse

directly

5 In contrast, the object-oriented approach encourages the programmer to place data where it is not directly accessible by the rest of the program. Instead, the data is accessed by calling specially written functions, commonly called methods, which are either bundled in with the data or inherited from "class objects." These act as the intermediaries for retrieving or modifying the data they control. The programming construct that combines data with a set of methods for accessing and managing those data is called an object. The practice of using subroutines to examine or modify certain kinds of data, however, was also quite commonly used in non-OOP modular programming, well before the widespread use of object-oriented programming.

9 An object-oriented program may thus be viewed as a collection of interacting objects, as opposed to the conventional model, in which a program is seen as a list of tasks (subroutines) to perform. In OOP, each object is capable of receiving messages, processing data, and sending messages to other objects. Each object can be viewed as an independent "machine" with a distinct role or responsibility. The actions (or "methods") on these objects. The terms "objects" and "oriented" in something like the modern sense of object- oriented programming seem to make their first appearance at MIT in the late 1950s and early 1960s. In the environment of the artificial intelligence group, as early as 1960, "object" could refer to identified items (LISP atoms) with properties (attributes); Alan Kay was later to cite a detailed understanding of LISP internals as a strong influence on his thinking in 1966.[3] Another early MIT example was Sketchpad created by Ivan Sutherland in 1960-61; in the glossary of the 1963 technical report based on his dissertation about Sketchpad, Sutherland defined notions of "object" and "instance" (with the class concept covered by "master" or "definition"), albeit specialized to graphical interaction. Also, an MIT ALGOL version, AED-0, linked data structures ("plexes", in that dialect) directly with procedures, prefiguring what were later termed "messages", "methods" and "member functions".

63 Both object-oriented programming and relational database management systems (RDBMSs) are extremely common in software today. Since relational databases don't store objects directly (though some RDBMSs have object-oriented features to approximate this), there is a general need to bridge the two worlds. The problem of bridging object-oriented programming accesses and data patterns with relational databases is known as Object-Relational impedance mismatch. There are a number of approaches to cope with this problem, but no general solution without downsides.[20] One of the most common approaches is object-relational mapping, as found in libraries like Java Data Objects and Ruby on Rails' ActiveRecord.

789 Modern OO methodologies directly address these points and emphasize the

1104 OO), called its most derived class. An object not directly contained in any

2089 object services can be implemented directly in C++)

discusses

624 [Chambers 93] discusses multi-methods in his new OO language, Cecil.

782 (see below) and discusses other alternatives to the task oriented models. He

1138 "pure" example. Section 2.5 discusses why static typing has less power

1178 signatures can occur, calling for greater care in use. [Black 86] discusses

2621 University of Durham, Durham, England. Discusses different

2633 Discusses the implications of inheritance for testing,

discussion

209 usage is atypical] See [Booch 94, pp 154-155] for a brief discussion of

462 See also [Kim 89, chs 1, 3] for a discussion and [Coplien 92] for some

463 implementation discussion in C++.

612 See also section 1.19 below for a discussion on the functional (prefix) verses

1426 See also section 1.21 for a discussion on OOA

1550 Interest Groups for discussion of possible standards in other areas. These

distribution

1520 handling distribution of messages between application objects in

1782 System Object Model with extensions for distribution. This integration will

1796 stores, and warehousing and distribution operations."

1873 DOME provides heterogenous distribution across many platforms

1889 is separated from the means of distribution and the problem of

1899 Database distribution can be as simple persistent files,

division

4 Objects are used in software development to implement abstract data structures, by bringing together the data components with the procedures that manipulate them. Objects in object- oriented programming are key in the concept of inheritance; thereby improving program reliability[attribution needed], simplification of software maintenance[attribution needed], the management of libraries, and the division of work in programmer teams. Object-oriented programming languages are generally designed to exploit and enforce these potential advantages of the object model. Objects can also make it possible to handle very disparate objects by the same piece of code, as long as they all have the proper method. Simple, non-OOP programs may be one "long" list of statements (or commands). More complex programs will often group smaller sections of these statements into functions or subroutines each of which might perform a particular task. With designs of this sort, it is common for some of the program's data to be 'global', i.e. accessible from any part of the program. As programs grow in size, allowing any function to modify any piece of data means that bugs can have wide-reaching effects.

282 group division, distinction, or rating based on quality, degree of

2595 92, Computer Science Division, School of

2608 92, Computer Science Division, School of Engineering and

2620 Division, School of Engineering and Computer Science (SECS),

2630 93, Computer Science Division, School of

document

53 The Document Object Model of HTML, XHTML, and XML documents on the Internet have bindings to the popular JavaScript

186 this document also.

425 For example, a person is a mammal and an intellectual_entity, and a document

1512 (OMA) Guide document. This document outlines a single terminology for

1620 Specification described in this published document is a self-

easier

1779 have made it easier for their customers to port applications between their

1810 -- easier deployment, with the ability to run multiple HP

1816 -- easier development, with remote object browsing so

1954 requests, and has made it easier for users to integrate Orbix with their

2185 distributed environments, even easier.

2422 are generally more reliable and easier to develop, maintain, and reuse than

easily

514 but in the author's opinion many of their complaints are easily answered. In

1892 Existing software can also be incorporated easily, providing

1922 you to easily develop large distributed applications that are robust,

1945 easily integrate Orbix applications with existing data stores be they

2151 develop applications on any platform they choose and then easily

2465 confidence, they must be blatantly correct. The classes must be easily

england

1870 1st Floor, Lawrence House, 1A Morrell St, Leamington Spa, England CV32 5SZ

1964 Object World in London, England last October. Orbix for Microsoft Windows

2597 England.

2610 England. Describes a series of tools for the generation and

2621 University of Durham, Durham, England. Discusses different

2632 Durham, England.

entity

1 Object-oriented programming (OOP) is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction, encapsulation, messaging, modularity, polymorphism, and inheritance. Many modern programming languages now support OOP, at least as an option. In computer science, an object is any entity that can be manipulated by the commands of a programming language, such as a value, variable, function, or data structure. (With the later introduction of object-oriented programming the same word, "object", refers to a particular instance of a class)

2 In the domain of object-oriented programming an object is usually taken to mean an ephemeral compilation of attributes (object elements) and behaviors (methods or subroutines) encapsulating an entity. In this way, while primitive or simple data types are still just single pieces of information, object-oriented objects are complex types that have multiple pieces of information and specific properties (or attributes). Instead of merely being assigned a value, (like int =10), objects have to be "constructed". In the real world, if a Ford Focus is an "object" - an instance of the car class, its physical properties and its function to drive would have been individually specified. Once the properties of the Ford Focus "object" had been specified into the form of the car class, it can be endlessly copied to create identical objects that look and function in just the same way. As an alternative example, animal is a superclass of primate and primate is a superclass of human. Individuals such as Joe Bloggs or John Doe would be particular examples or 'objects' of the human class, and consequently possess all the characteristics of the human class (and of the primate and animal superclasses as well).

94 unit, or entity, either real or abstract, with a well-defined role in the

123 Entity - Correspond to real-world objects

425 For example, a person is a mammal and an intellectual_entity, and a document

1024 programming, this refers to the ability of an entity to refer at run-time to

equivalent

158 methods (Smalltalk) or member functions (C++) which are equivalent to a

162 roughly equivalent to a loosely coupled variant record, with derived classes

166 be set or respecified by a derived class. This is roughly equivalent to a

622 (messages) equivalent. Functional syntax was chosen "in order to minimize the

1072 vtables of function pointers in the actual objects (C++) or equivalent,

1261 provides one, where inheritance is replaced with a roughly equivalent form

explicit

10 Objects as a formal concept in programming were introduced in the 1960s in Simula 67, a major revision of Simula I, a programming language designed for discrete event simulation, created by Ole-Johan Dahl and Kristen Nygaard of the Norwegian Computing Center in Oslo. Simula 67 was influenced by SIMSCRIPT and Hoare's proposed "record classes". Simula introduced the notion of classes and instances or objects (as well as subclasses, virtual methods, coroutines, and discrete event simulation) as part of an explicit programming paradigm. The language also used automatic garbage collection that had been invented earlier for the functional programming language Lisp. Simula was used for physical modeling, such as models to study and improve the movement of ships and their content through cargo ports. The ideas of Simula 67 influenced many later languages, including Smalltalk, derivatives of LISP (CLOS), Object Pascal, and C++.

919 object (possibly satisfying some implicit or explicit type constraints

956 Parametric Polymorphism: a polymorphic function has an implicit or explicit

990 Ada generics and C++ templates provide explicit syntactic generics. While

992 require explicit instantiation of its template functions, formal generic

2372 but explicit memory management requires implementation-dependent

explicitly

368 for the commonality of objects to be explicitly taken advantage of in modeling

432 explicitly calling them, allowing client class code to remain unchanged [Booch

444 class qualifier can be used to explicitly disambiguate. Smalltalk renders

496 Polymorphism is often explicitly available in many OO languages (such as C++,

2287 Without GC programmers must explicitly deallocate dynamic storage when

2375 However, to manage memory explicitly, a program has to know if it has a copy

flavors

12 In the 1970s, Kay's Smalltalk work had influenced the Lisp community to incorporate object- based techniques that were introduced to developers via the Lisp machine. Experimentation with various extensions to Lisp (like LOOPS and Flavors introducing multiple inheritance and mixins), eventually led to the Common Lisp Object System (CLOS, a part of the first standardized object-oriented programming language, ANSI Common Lisp), which integrates functional programming and object-oriented programming and allows extension via a Meta- object protocol. In the 1980s, there were a few attempts to design processor architectures that included hardware support for objects in memory but these were not successful. Examples include the Intel iAPX 432 and the Linn Smart Rekursiv.

384 Inherited parents can specify various flavors of state. Delegation languages

386 Objective-C, etc.), lisp-based (CLOS, Flavors, Scheme, etc.), and Pascal-based

427 Mixin's is a style of MI (from flavors) where a class is created to provide

443 the earlier flavors. C++ declares an error iff a conflict arises, but a

1290 Flavors

free

1376 For the Spring Papers (free), Contact:

1499 Feel free to call, fax or email for more information.

1668 > ILU (free, see APPENDIX E entry 59)

1681 Complete implementation of CORBA. Free academic; com. eval licence avail.

2288 it is no longer needed (in C this is done by a call to free(3)).

2591 Theilen, David. "No Bugs. Delivering error free code in C and C++.",

generalization

278 Original Aristotlean classification defines a "class" as a generalization of

370 classification, and generalization to understand and deal with the complexities

481 the world by using classes and concepts for generalization and categorization,

528 Generalization

531 derived classes into a common base (or parent) is generalization [Booch 91,

1388 a generalization of the Rider

generic

952 have more than one type. [...] If we consider a generic function to be

991 Ada may infer some actual generic parameters (operations) and C++ doesn't

992 require explicit instantiation of its template functions, formal generic

1182 calling for careful matching of actual and formal generic parameters. The

1232 Functions are typically generic in statically-typed parametrically-polymorphic

1234 are generic. Russell and Haskel are more modern variants (references are

guide

1512 (OMA) Guide document. This document outlines a single terminology for

1602 > Object Management Architecture Guide (OMA)

1631 Architecture (OMA) Guide for $50 each.

1937 approach to filtering, and more code examples to guide programmers.

2626 papers. Get "guide.ps.Z" for A4 paper formatting or get

2639 Wong, P. Automated Class Exerciser (ACE) User's Guide. Technical

hp's

770 best features from several of the major OO methodologies, as does HP's new

1747 HP ORB Plus and HP Distributed Smalltalk are major components of HP's

1775 tools, and sample applications. HP's DOMF provides a location-transparent

1781 In addition, HP is working with IBM to integrate HP's DOMF with IBM's

1819 HP's DOMF includes the object request broker, interface- definition-

1827 HP's limited release of HP ORB Plus to key developers is designed so that

humphrey

779 See [Humphrey 89] and [Yourdon 92] for a few of many discussions on software

780 life-cycle models and their use. Humphrey also details Worldy and Atomic

832 in the US [Humphrey 89]. The CMM also serves as a 5 level improvement process

835 Humphrey is now working on the Personal Software Process (PSP), a scaled down

836 version of the CMM for individuals [Humphrey 95]. Next should follow a team-

856 Humphrey, W., Snyder, T. and Willis, R. "Software Process Improvement at

ieee

857 Hughes Aircraft", IEEE Software, July 1991

858 Dion, R., "Elements of a Process Improvement Program," IEEE Software, July

1456 International Conference on System Sciences (HICSS) (IEEE Computer Society

2524 Maintenance, pp. 100-105. IEEE Computer Society, October 1989.

2544 Object-Oriented Programs", IEEE Software, July 1991, pp. 72-80.

2585 Conference on Software Maintenance 1990, IEEE Computer Society

improvement

73 Luca Cardelli wrote a paper titled "Bad Engineering Properties of Object-Oriented Languages" Richard Stallman wrote in 1995, "Adding OOP to Emacs is not clearly an improvement; I used OOP when working on the Lisp Machine window systems, and I disagree with the usual view that it is a superior way to program."

832 in the US [Humphrey 89]. The CMM also serves as a 5 level improvement process

834 leading to statistical (process) control and sustained improvement. Watts S.

856 Humphrey, W., Snyder, T. and Willis, R. "Software Process Improvement at

858 Dion, R., "Elements of a Process Improvement Program," IEEE Software, July

860 "Concepts on Measuring the Benefits of Software Process Improvement,"

included

12 In the 1970s, Kay's Smalltalk work had influenced the Lisp community to incorporate object- based techniques that were introduced to developers via the Lisp machine. Experimentation with various extensions to Lisp (like LOOPS and Flavors introducing multiple inheritance and mixins), eventually led to the Common Lisp Object System (CLOS, a part of the first standardized object-oriented programming language, ANSI Common Lisp), which integrates functional programming and object-oriented programming and allows extension via a Meta- object protocol. In the 1980s, there were a few attempts to design processor architectures that included hardware support for objects in memory but these were not successful. Examples include the Intel iAPX 432 and the Linn Smart Rekursiv.

13 Object-oriented programming developed as the dominant programming methodology in the early and mid 1990s when programming languages supporting the techniques became widely available. These included Visual FoxPro 3.0, C++[citation needed], and Delphi[citation needed]. Its dominance was further enhanced by the rising popularity of graphical user interfaces, which rely heavily upon object-oriented programming techniques. An example of a closely related dynamic GUI library and OOP language can be found in the Cocoa frameworks on Mac OS X, written in Objective-C, an object-oriented, dynamic messaging extension to C based on Smalltalk. OOP toolkits also enhanced the popularity of event-driven programming (although this concept is not limited to OOP). Some[who?] feel that association with GUIs (real or perceived) was what propelled OOP into the programming mainstream.

14 At ETH Z?rich, Niklaus Wirth and his colleagues had also been investigating such topics as data abstraction and modular programming (although this had been in common use in the 1960s or earlier). Modula-2 (1978) included both, and their succeeding design, Oberon, included a distinctive approach to object orientation, classes, and such. The approach is unlike Smalltalk, and very unlike C++.

1314 Refs to be included in future FAQs.

1355 Refs to be included in future FAQs. See also Appendix E.

inherent

482 by reducing the real-world's inherent complexity.

644 ignoring the inherent type of parameters in messaging. Double dispatch is

652 inherent (true, actual, or dynamic) types of one and two. Only the inherent

1005 but lose the inherent type). Any object possessing all required operations is

1116 inherent types of polymorphic objects, keeping track of the types of objects at

instantiation

406 instantiation relationship. In classical OO, inheritance is a relationship

407 between classes only. In one-level systems, is-a (object instantiation) and

590 systems, since any object may act as a class (provide object instantiation or

966 where each instantiation creates a specialized version of the code allowing

992 require explicit instantiation of its template functions, formal generic

1255 object instantiation, or exemplars.

int

2 In the domain of object-oriented programming an object is usually taken to mean an ephemeral compilation of attributes (object elements) and behaviors (methods or subroutines) encapsulating an entity. In this way, while primitive or simple data types are still just single pieces of information, object-oriented objects are complex types that have multiple pieces of information and specific properties (or attributes). Instead of merely being assigned a value, (like int =10), objects have to be "constructed". In the real world, if a Ford Focus is an "object" - an instance of the car class, its physical properties and its function to drive would have been individually specified. Once the properties of the Ford Focus "object" had been specified into the form of the car class, it can be endlessly copied to create identical objects that look and function in just the same way. As an alternative example, animal is a superclass of primate and primate is a superclass of human. Individuals such as Joe Bloggs or John Doe would be particular examples or 'objects' of the human class, and consequently possess all the characteristics of the human class (and of the primate and animal superclasses as well).

627 +(int, int)

628 +(int, float)

629 +(int, complex)

630 +(int, real)

issue

11 The Smalltalk language, which was developed at Xerox PARC (by Alan Kay and others) in the 1970s, introduced the term object-oriented programming to represent the pervasive use of objects and messages as the basis for computation. Smalltalk creators were influenced by the ideas introduced in Simula 67, but Smalltalk was designed to be a fully dynamic system in which classes could be created and modified dynamically rather than statically as in Simula 67.[9] Smalltalk and with it OOP were introduced to a wider audience by the August 1981 issue of Byte Magazine.

56 It is intuitive to assume that inheritance creates a semantic "is a" relationship, and thus to infer that objects instantiated from subclasses can always be safely used instead of those instantiated from the superclass. This intuition is unfortunately false in most OOP languages, in particular in all those that allow mutable objects. Subtype polymorphism as enforced by the type checker in OOP languages (with mutable objects) cannot guarantee behavioral subtyping in any context. Behavioral subtyping is undecidable in general, so it cannot be implemented by a program (compiler). Class or object hierarchies need to be carefully designed considering possible incorrect uses that cannot be detected syntactically. This issue is known as the Liskov substitution principle.

261 Another issue is per-object or per-class protection. Per-class protection

440 which to choose becomes an issue. Eiffel forces derived classes to rename

1179 this issue in Emerald. The same issue arises in parametric polymorphism

jade

46 Languages called "pure" OO languages, because everything in them is treated consistently as an object, from primitives such as characters and punctuation, all the way up to whole classes, prototypes, blocks, modules, etc. They were designed specifically to facilitate, even enforce, OO methods. Examples: Scala, Smalltalk, Eiffel, JADE, Emerald.

495 otherwise. See [Raj 89] for an alternative approach as found in Jade.

513 inheritance stuctures). Some don't like the coupling of classes (as in Jade),

1198 Jade [Black 86] and

1260 Jade ([Black 86] and [Raj 89])

1278 Jade

john

2 In the domain of object-oriented programming an object is usually taken to mean an ephemeral compilation of attributes (object elements) and behaviors (methods or subroutines) encapsulating an entity. In this way, while primitive or simple data types are still just single pieces of information, object-oriented objects are complex types that have multiple pieces of information and specific properties (or attributes). Instead of merely being assigned a value, (like int =10), objects have to be "constructed". In the real world, if a Ford Focus is an "object" - an instance of the car class, its physical properties and its function to drive would have been individually specified. Once the properties of the Ford Focus "object" had been specified into the form of the car class, it can be endlessly copied to create identical objects that look and function in just the same way. As an alternative example, animal is a superclass of primate and primate is a superclass of human. Individuals such as Joe Bloggs or John Doe would be particular examples or 'objects' of the human class, and consequently possess all the characteristics of the human class (and of the primate and animal superclasses as well).

26 Similarly, in his 2003 book, Concepts in programming languages, John C. Mitchell identifies four main features: dynamic dispatch, abstraction, subtype polymorphism, and inheritance.Michael Lee Scott in Programming Language Pragmatics considers only encapsulation, inheritance and dynamic dispatch.[16]

57 Design Patterns: Elements of Reusable Object-Oriented Software is an influential book published in 1995 by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, sometimes casually called the "Gang of Four". Along with exploring the capabilities and pitfalls of object-oriented programming, it describes 23 common programming problems and patterns for solving them. As of April 2007, the book was in its 36th printing.

2513 Harrold, Mary Jean, John D. McGregor, and Kevin J. Fitzpatrick,

2530 Lakos, John S. "Designing-In Quality in Large C++ Projects" Presented

2542 to "john_lakos@warren.mentorg.com".

june

1433 June 1991

1860 the Smalltalk and Objective-C language interfaces is expected in June.

1938 Orbix was launched in June 1993 as the first full and complete implementation

1960 exhibition in San Francisco, Calif., June 1993. Since then it has rolled

2572 Programming, June, 1991, Vol. 4, No. 3, pp. 10 - 27.

2574 Programs", JOOP, 5(3):45-53, June 1992.

key

4 Objects are used in software development to implement abstract data structures, by bringing together the data components with the procedures that manipulate them. Objects in object- oriented programming are key in the concept of inheritance; thereby improving program reliability[attribution needed], simplification of software maintenance[attribution needed], the management of libraries, and the division of work in programmer teams. Object-oriented programming languages are generally designed to exploit and enforce these potential advantages of the object model. Objects can also make it possible to handle very disparate objects by the same piece of code, as long as they all have the proper method. Simple, non-OOP programs may be one "long" list of statements (or commands). More complex programs will often group smaller sections of these statements into functions or subroutines each of which might perform a particular task. With designs of this sort, it is common for some of the program's data to be 'global', i.e. accessible from any part of the program. As programs grow in size, allowing any function to modify any piece of data means that bugs can have wide-reaching effects.

110 covers "Identifying Key Abstractions" for objects and classes based on an

733 The key to reusable software is captured in domain analysis in that it

1519 1) the Object Request Broker, or key communications element, for

1827 HP's limited release of HP ORB Plus to key developers is designed so that

2537 design becomes a key factor only for large and very

mapping

62 Main articles: Object-Relational impedance mismatch, Object-relational mapping, and Object database

63 Both object-oriented programming and relational database management systems (RDBMSs) are extremely common in software today. Since relational databases don't store objects directly (though some RDBMSs have object-oriented features to approximate this), there is a general need to bridge the two worlds. The problem of bridging object-oriented programming accesses and data patterns with relational databases is known as Object-Relational impedance mismatch. There are a number of approaches to cope with this problem, but no general solution without downsides.[20] One of the most common approaches is object-relational mapping, as found in libraries like Java Data Objects and Ruby on Rails' ActiveRecord.

65 OOP can be used to associate real-world objects and processes with digital counterparts. However, not everyone agrees that OOP facilitates direct real-world mapping (see Negative Criticism section) or that real-world mapping is even a worthy goal; Bertrand Meyer argues in Object-Oriented Software Construction that a program is not a model of the world but a model of some part of the world; "Reality is a cousin twice removed". At the same time, some principal limitations of OOP had been noted. For example, the Circle-ellipse problem is difficult to handle using OOP's concept of inheritance.

1733 mapping for IDL to the OMG recently.

2088 Languages used for IDL mapping - IDL bindings for C, (or

meaning

101 object as a concept, abstraction or thing with crisp boundaries and meaning for

237 Object Pascal provide no protection for objects, meaning instance variables

268 A class is a general term denoting classification and also has a new meaning

815 the process is often referred to as seamless, meaning there is no conceptual

1076 The run-time selection of methods is another case of dynamic binding, meaning

1888 DOME is non-intrusive, meaning that the application development

mi

427 Mixin's is a style of MI (from flavors) where a class is created to provide

448 several classes. In classical systems without MI, a class which should inherit

520 strategies or renaming, and most consider MI to be highly desirable. See the

521 latter part of section 1.9 for an example of why MI is important.

522 Some prefer association to MI, claiming "roles" (as defined in [Rumbaugh 91])

987 MI provides an interesting example here, as it is set intersection with an

modula-

14 At ETH Z?rich, Niklaus Wirth and his colleagues had also been investigating such topics as data abstraction and modular programming (although this had been in common use in the 1960s or earlier). Modula-2 (1978) included both, and their succeeding design, Oberon, included a distinctive approach to object orientation, classes, and such. The approach is unlike Smalltalk, and very unlike C++.

50 Languages with abstract data type support, but not all features of object-orientation, sometimes called object-based languages. Examples: Modula-2 (with excellent encapsulation and information hiding), Pliant, CLU.

387 (Ada95, Modula-3, Object Pascal, etc.) OO languages do, but with multiple-

543 [Cardelli 85] and hence without polymorphism, as in '83 Ada and Modula-2.

545 provide inheritance and polymorphism. Ada95 and Modula-3; however, support

1304 Modula-3

modular

5 In contrast, the object-oriented approach encourages the programmer to place data where it is not directly accessible by the rest of the program. Instead, the data is accessed by calling specially written functions, commonly called methods, which are either bundled in with the data or inherited from "class objects." These act as the intermediaries for retrieving or modifying the data they control. The programming construct that combines data with a set of methods for accessing and managing those data is called an object. The practice of using subroutines to examine or modify certain kinds of data, however, was also quite commonly used in non-OOP modular programming, well before the widespread use of object-oriented programming.

8 Object-oriented programming has roots that can be traced to the 1960s. As hardware and software became increasingly complex, manageability often became a concern. Researchers studied ways to maintain software quality and developed object-oriented programming in part to address common problems by strongly emphasizing discrete, reusable units of programming logic[citation needed]. The technology focuses on data rather than processes, with programs composed of self-sufficient modules ("classes"), each instance of which ("objects") contains all the information needed to manipulate its own data structure ("members"). This is in contrast to the existing modular programming that had been dominant for many years that focused on the function of a module, rather than specifically the data, but equally provided for code reuse, and self-sufficient reusable units of programming logic, enabling collaboration through the use of linked modules (subroutines). This more conventional approach, which still persists, tends to consider data and behavior separately.

14 At ETH Z?rich, Niklaus Wirth and his colleagues had also been investigating such topics as data abstraction and modular programming (although this had been in common use in the 1960s or earlier). Modula-2 (1978) included both, and their succeeding design, Oberon, included a distinctive approach to object orientation, classes, and such. The approach is unlike Smalltalk, and very unlike C++.

21 Dynamic dispatch – when a method is invoked on an object, the object itself determines what code gets executed by looking up the method at run time in a table associated with the object. This feature distinguishes an object from an abstract data type (or module), which has a fixed (static) implementation of the operations for all instances. It is a programming methodology that gives modular component development while at the same time being very efficient.

1605 a methodology that supports modular production of software;

2543 Leavens, G. T., "Modular Specification and Verification of

networks

1776 object-communication mechanism across heterogeneous networks by using the

1874 and networks, including:

2024 for building computing applications and services on networks

2031 networks

2045 computers, operating systems and networks

2048 networks of heterogeneous computers, operating

nt

1642 IBM AIX, IBM MVS(port in progress), HP-UX, Macintosh, MS-Windows 3.1, NT,

1807 3.1 or Windows NT operating systems from Microsoft(R) Corp., once

1875 UNIX, Windows, Windows NT, OS

1961 out versions of Orbix for Microsoft Windows NT, Silicon Graphics IRIX and

1993 Microsoft Windows NT Visual C++ NOW

1994 Microsoft Windows NT Borland NOW

object-based

50 Languages with abstract data type support, but not all features of object-orientation, sometimes called object-based languages. Examples: Modula-2 (with excellent encapsulation and information hiding), Pliant, CLU.

541 1.15) What Is The Difference Between Object-Based And Object-Oriented? (Object-Oriented Technology)

542 Object-Based Programming usually refers to objects without inheritance

1744 With HP ORB Plus, programmers can develop scalable, object-based

1792 executive officer of Information Advantage, Inc. "Our object-based

1794 We plan to use HP ORB Plus to develop new object-based products that

opposed

9 An object-oriented program may thus be viewed as a collection of interacting objects, as opposed to the conventional model, in which a program is seen as a list of tasks (subroutines) to perform. In OOP, each object is capable of receiving messages, processing data, and sending messages to other objects. Each object can be viewed as an independent "machine" with a distinct role or responsibility. The actions (or "methods") on these objects. The terms "objects" and "oriented" in something like the modern sense of object- oriented programming seem to make their first appearance at MIT in the late 1950s and early 1960s. In the environment of the artificial intelligence group, as early as 1960, "object" could refer to identified items (LISP atoms) with properties (attributes); Alan Kay was later to cite a detailed understanding of LISP internals as a strong influence on his thinking in 1966.[3] Another early MIT example was Sketchpad created by Ivan Sutherland in 1960-61; in the glossary of the 1963 technical report based on his dissertation about Sketchpad, Sutherland defined notions of "object" and "instance" (with the class concept covered by "master" or "definition"), albeit specialized to graphical interaction. Also, an MIT ALGOL version, AED-0, linked data structures ("plexes", in that dialect) directly with procedures, prefiguring what were later termed "messages", "methods" and "member functions".

33 Decoupling refers to careful controls that separate code modules from particular use cases, which increases code re-usability. A common use of decoupling in OOP is to polymorphically decouple the encapsulation (see Bridge pattern and Adapter pattern) - for example, using a method interface which an encapsulated object must satisfy, as opposed to using the object's class.

276 objects (as opposed to a collection of objects, as with the more classical

377 programming by extension (as opposed to programming by reinvention

1153 Subtype Polymorphism, as opposed to Subclass Polymorphism, is the best answer

1318 opposed to a purely value-oriented approach) and because of support for methods

orbeline

1680 > ORBELINE - The SMART Object Request Broker - PostModern Computing

1683 1 versions of ORBeline available; will

1918 CORBA Implementation Descriptions: ORBELINE - The SMART Object Request Broker

1919 ORBeline is a complete implementation of OMG's Common Object Request

1920 Broker Architecture (CORBA). ORBeline goes beyond the standard

1923 scalable, flexible and maintainable. ORBeline incorporates PostModern's

parameter

160 first parameter. The receiver is called self (Smalltalk) or this (C++).

598 operation. It can be thought of as a procedure with the first parameter as

607 although keywords (or formal parameter names, like named parameters) are

617 more than one parameter can be used in the selection of a method. Lack of

957 type parameter which determines the type of the argument for each

1049 object (pointer or reference (or such parameter)) is assignment compatible with

perspective

80 Steve Yegge, making a roundabout comparison with Functional programming, writes, "Object Oriented Programming puts the Nouns first and foremost. Why would you go to such lengths to put one part of speech on a pedestal? Why should one kind of concept take precedence over another? It's not as if OOP has suddenly made verbs less important in the way we actually think. It's a strangely skewed perspective."

747 expert's perspective and with an emphasis on modeling the real-world (the

794 an overall system perspective and [Berard 93] proposes an (incremental)

829 From a greater perspective, the SEI has developed the Capability Maturity Model

873 efforts places information systems within an organizational perspective by

2232 perspective, the enterprise is a single logical database located in

physical

2 In the domain of object-oriented programming an object is usually taken to mean an ephemeral compilation of attributes (object elements) and behaviors (methods or subroutines) encapsulating an entity. In this way, while primitive or simple data types are still just single pieces of information, object-oriented objects are complex types that have multiple pieces of information and specific properties (or attributes). Instead of merely being assigned a value, (like int =10), objects have to be "constructed". In the real world, if a Ford Focus is an "object" - an instance of the car class, its physical properties and its function to drive would have been individually specified. Once the properties of the Ford Focus "object" had been specified into the form of the car class, it can be endlessly copied to create identical objects that look and function in just the same way. As an alternative example, animal is a superclass of primate and primate is a superclass of human. Individuals such as Joe Bloggs or John Doe would be particular examples or 'objects' of the human class, and consequently possess all the characteristics of the human class (and of the primate and animal superclasses as well).

10 Objects as a formal concept in programming were introduced in the 1960s in Simula 67, a major revision of Simula I, a programming language designed for discrete event simulation, created by Ole-Johan Dahl and Kristen Nygaard of the Norwegian Computing Center in Oslo. Simula 67 was influenced by SIMSCRIPT and Hoare's proposed "record classes". Simula introduced the notion of classes and instances or objects (as well as subclasses, virtual methods, coroutines, and discrete event simulation) as part of an explicit programming paradigm. The language also used automatic garbage collection that had been invented earlier for the functional programming language Lisp. Simula was used for physical modeling, such as models to study and improve the movement of ships and their content through cargo ports. The ideas of Simula 67 influenced many later languages, including Smalltalk, derivatives of LISP (CLOS), Object Pascal, and C++.

1526 the logical modeling and physical storage of objects; and

2230 to know the physical location of data, the server of access, or the

2235 enterprise's physical environment of multiple nodes, disparate

2536 hierarchical testing. The importance of good physical

platform

16 More recently, a number of languages have emerged that are primarily object-oriented yet compatible with procedural methodology, such as Python and Ruby. Probably the most commercially important recent object-oriented languages are Visual Basic.NET (VB.NET) and C#, both designed for Microsoft's .NET platform, and Java, developed by Sun Microsystems. Both frameworks show the benefit of using OOP by creating an abstraction from implementation in their own way. VB.NET and C# support cross-language inheritance, allowing classes defined in one language to subclass classes defined in the other language. Developers usually compile Java to bytecode, allowing Java to run on any operating system for which a Java virtual machine is available. VB.NET and C# make use of the Strategy pattern to accomplish cross-language inheritance, whereas Java makes use of the Adapter pattern[citation needed].

1851 Isis RDOM(tm) is a fault tolerant distributed ORB platform for reliable

2151 develop applications on any platform they choose and then easily

2166 and its open platform structure accommodates future technologies.

2210 - Platform independent time services and exception handling

2263 platform. SUITESOFTWARE sales representatives are available to help

pointer

144 Descriptor-based approaches can have pointer semantics and can be statically

147 pointer (such as void* in C++) and an embedded dynamic typing scheme are used

167 pointer or function pointer in the base class being set by the derived class.

601 which do not have a receiver, or "this" pointer. The following are some common

1049 object (pointer or reference (or such parameter)) is assignment compatible with

proceedings

2330 in Memory Management (proceedings of 1992 Int'l Workshop on Memory

2495 Software Systems", Proceedings of the 18th ACM Annual Computer

2498 Object-Oriented Programs", Proceedings of the 4th Symposium on

2503 Firesmith, D.G., "Testing Object-Oriented Software", Proceedings

2506 Object-Oriented Programs", Proceedings of the 8th Pacific

2584 Problems of Validation", Proceedings of the 6th International

project

7 Objects can be thought of as wrapping their data within a set of functions designed to ensure that the data are used appropriately, and to assist in that use. The object's methods will typically include checks and safeguards that are specific to the types of data the object contains. An object can also offer simple-to-use, standardized methods for performing particular operations on its data, while concealing the specifics of how those tasks are accomplished. In this way alterations can be made to the internal structure or methods of an object without requiring that the rest of the program be modified. This approach can also be used to offer standardized methods across different types of objects. As an example, several different types of objects might offer print methods. Each type of object might implement that print method in a different way, reflecting the different kinds of data each contains, but all the different print methods might be called in the same standardized manner from elsewhere in the program. These features become especially useful when more than one programmer is contributing code to a project or when the goal is to reuse code between projects.

839 Level 1: Initial: Every project is handled differently; ad hoc and chaotic.

840 Level 2: Repeatable: Every project is handled similarly.

1371 Ouverture Project (ESPRIT funded OMG IDL defines inter-module interfaces)

1712 Electra is a research project and not available yet.

2483 Berard, Edward. Project Management Handbook. Must be purchased

projects

7 Objects can be thought of as wrapping their data within a set of functions designed to ensure that the data are used appropriately, and to assist in that use. The object's methods will typically include checks and safeguards that are specific to the types of data the object contains. An object can also offer simple-to-use, standardized methods for performing particular operations on its data, while concealing the specifics of how those tasks are accomplished. In this way alterations can be made to the internal structure or methods of an object without requiring that the rest of the program be modified. This approach can also be used to offer standardized methods across different types of objects. As an example, several different types of objects might offer print methods. Each type of object might implement that print method in a different way, reflecting the different kinds of data each contains, but all the different print methods might be called in the same standardized manner from elsewhere in the program. These features become especially useful when more than one programmer is contributing code to a project or when the goal is to reuse code between projects.

841 Level 3: Defined: Standard processes are defined and used for all projects.

2486 The book focuses on the management of OOP projects. It

2530 Lakos, John S. "Designing-In Quality in Large C++ Projects" Presented

2538 large projects. Intuition gained from smaller projects

protection

227 1.2) What Is Object Encapsulation (Or Protection)? (Object-Oriented Technology)

237 Object Pascal provide no protection for objects, meaning instance variables

244 protection

261 Another issue is per-object or per-class protection. Per-class protection

264 receiver in per-object protection. This supports a subtyping model, as any

protocols

356 perform differential changes, intercessory protocols allow users to not

1764 operating systems, networking protocols or where application objects are

2036 OSI protocols, X.25

2127 systems, applications, databases, network protocols, and the like.

2137 differences between operating systems, network protocols, databases,

2205 - Implementation of additional protocols through a

prototype

59 Creational patterns : Factory method pattern, Abstract factory pattern, Singleton pattern, Builder pattern, Prototype pattern

205 term "Prototype" usually refers to prototype theory, a recent theory of

207 prototype for newly created instances. [The Author also uses the term for

210 prototype theory in the context of OOA and OOD.

291 (conceptual descriptions), and prototype theory (resemblance to an exemplar).

remote

1693 support for heterogeneous environments, support for Remote Data Access

1694 (RDA), Remote Procedure Calls (RPC), Message-Oriented Middleware (MOM),

1813 sending and receiving of remote messages, and reusable

1816 -- easier development, with remote object browsing so

2159 - and support for Remote Data Access (RDA), Remote Procedure

requests

130 Wildavsky, send requests to adamw@panix.com.

1530 The OMG adoption cycle includes Requests for Information and

1616 requests and receive responses. The ORB provides interoperability

1771 make requests and receive responses across a distributed network.

1954 requests, and has made it easier for users to integrate Orbix with their

2231 underlying vendor in order to process requests. From the user's

result

19 Not all of these concepts are to be found in all object-oriented programming languages. For example, object-oriented programming that uses classes is sometimes called class-based programming, while prototype-based programming does not typically use classes. As a result, a significantly different yet analogous terminology is used to define the concepts of object and instance.

199 concept, will result. Typical 1 Level objects can contain any number of

501 class. Such assignment can result in the loss of an object's dynamic type in

2141 As a result, middleware is quickly emerging as the best solution for

2294 interpreters often suffer from this. The usual result is that the

2316 is inefficient (swapping two references will result in three

reusable

8 Object-oriented programming has roots that can be traced to the 1960s. As hardware and software became increasingly complex, manageability often became a concern. Researchers studied ways to maintain software quality and developed object-oriented programming in part to address common problems by strongly emphasizing discrete, reusable units of programming logic[citation needed]. The technology focuses on data rather than processes, with programs composed of self-sufficient modules ("classes"), each instance of which ("objects") contains all the information needed to manipulate its own data structure ("members"). This is in contrast to the existing modular programming that had been dominant for many years that focused on the function of a module, rather than specifically the data, but equally provided for code reuse, and self-sufficient reusable units of programming logic, enabling collaboration through the use of linked modules (subroutines). This more conventional approach, which still persists, tends to consider data and behavior separately.

57 Design Patterns: Elements of Reusable Object-Oriented Software is an influential book published in 1995 by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, sometimes casually called the "Gang of Four". Along with exploring the capabilities and pitfalls of object-oriented programming, it describes 23 common programming problems and patterns for solving them. As of April 2007, the book was in its 36th printing.

733 The key to reusable software is captured in domain analysis in that it

739 Object-oriented domain analysis (OODA) seeks to identify reusable items

1813 sending and receiving of remote messages, and reusable

richard

57 Design Patterns: Elements of Reusable Object-Oriented Software is an influential book published in 1995 by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, sometimes casually called the "Gang of Four". Along with exploring the capabilities and pitfalls of object-oriented programming, it describes 23 common programming problems and patterns for solving them. As of April 2007, the book was in its 36th printing.

73 Luca Cardelli wrote a paper titled "Bad Engineering Properties of Object-Oriented Languages" Richard Stallman wrote in 1995, "Adding OOP to Emacs is not clearly an improvement; I used OOP when working on the Lisp Machine window systems, and I disagree with the usual view that it is a superior way to program."

79 Richard Mansfield, author and former editor of COMPUTE! magazine, states that "like countless other intellectual fads over the years ("relevance", communism, "modernism", and so on—history is littered with them), OOP will be with us until eventually reality asserts itself. But considering how OOP currently pervades both universities and workplaces, OOP may well prove to be a durable delusion. Entire generations of indoctrinated programmers continue to march out of the academy, committed to OOP and nothing but OOP for the rest of their lives."[38] He also is quoted as saying "OOP is to writing a program, what going through airport security is to flying".

1497 Contact Person: Richard Soley (technical director) soley@omg.com

1500 -- Richard Soley

1791 our entire company on it," said Richard Tanler, president and chief

robson

2573 Smith, M. D. and D. J. Robson, " A Framework for Testing Object-Oriented

2583 Smith, M. D. and D. J. Robson, "Object-Oriented Programming - the

2593 Turner, C. D. and D. J. Robson, "The Testing of Object-Oriented Programs",

2605 Turner, C. D. and D. J. Robson, "A Suite of Tools for the State-Based

2617 Turner, C. D. and D. J. Robson, "Guidance for the Testing of Object-

2628 Turner, C. D. and D. J. Robson, "State-Based Testing and Inheritance",

selection

617 more than one parameter can be used in the selection of a method. Lack of

682 There is some concern about the efficiency of run-time method selection as

685 literature, potentially providing a single static selection in many cases

690 and run-time selection (or checking) as unavoidable in the general case [a

823 selection from among various languages for implementation (choosing the best

1076 The run-time selection of methods is another case of dynamic binding, meaning

semantics

144 Descriptor-based approaches can have pointer semantics and can be statically

287 The intension of a class is its semantics and its extension is its instances

403 existing uses and semantics.

2364 performance than GC, awkward syntax, and poor semantics, which typically

2374 often use "copy on write" to efficiently implement pass-by-value semantics.

2401 c) Value semantics store objects rather than references, inhibiting data

separate

22 Encapsulation (or multi-methods, in which case the state is kept separate)

33 Decoupling refers to careful controls that separate code modules from particular use cases, which increases code re-usability. A common use of decoupling in OOP is to polymorphically decouple the encapsulation (see Bridge pattern and Adapter pattern) - for example, using a method interface which an encapsulated object must satisfy, as opposed to using the object's class.

190 languages. Since there is no separate class construct in these languages, and

568 object facility. Separate type system support is another extension.

963 related, but are distinct enough in implementation to justify separate

1008 Owl also had such a facility but with two separate inheritance hierarchies,

size

4 Objects are used in software development to implement abstract data structures, by bringing together the data components with the procedures that manipulate them. Objects in object- oriented programming are key in the concept of inheritance; thereby improving program reliability[attribution needed], simplification of software maintenance[attribution needed], the management of libraries, and the division of work in programmer teams. Object-oriented programming languages are generally designed to exploit and enforce these potential advantages of the object model. Objects can also make it possible to handle very disparate objects by the same piece of code, as long as they all have the proper method. Simple, non-OOP programs may be one "long" list of statements (or commands). More complex programs will often group smaller sections of these statements into functions or subroutines each of which might perform a particular task. With designs of this sort, it is common for some of the program's data to be 'global', i.e. accessible from any part of the program. As programs grow in size, allowing any function to modify any piece of data means that bugs can have wide-reaching effects.

171 switch statement on variant parts with a single call, reducing code size

1229 dependencies and expand code size (unlike a single-body or "true"

1576 size <segment size> (max file size to send)

smalltalk's

138 approach with an added layer of indirection to Smalltalk's handles is found

255 For another example, Smalltalk's class instance variables are not accessible

257 Smalltalk's methods are all public (can be invoked from anywhere), but a

333 class class (Smalltalk's Meta-Classes)

566 even migrate across machines. Distributed Smalltalk's proxy objects [Kim 89,

1149 However, Smalltalk's style uses inclusion polymorphism in practise and

statically-typed

154 Simple statically-typed objects (static and auto vars and temps in C++ and

1064 Dynamic binding has two forms, static and dynamic. Statically-typed dynamic

1073 providing statically-typed dynamic binding (this is really just defining simple

1119 statically-typed OO languages provide polymorphism. Some approaches provide

1232 Functions are typically generic in statically-typed parametrically-polymorphic

1272 Statically-Typed:

strachey's

925 many different forms. Computer Science refers to Strachey's original

929 > Strachey's Original Definition [Strachey 67]:

938 C+W refine Strachey's definition by adding "inclusion polymorphism" to model

939 subtypes and subclasses (inheritance). Strachey's parametric polymorphism is

1144 "pure" statically (or strongly) checked parametric polymorphism, by Strachey's

1148 parametric polymorphism without static constraints (by Strachey's definition).

terminology

19 Not all of these concepts are to be found in all object-oriented programming languages. For example, object-oriented programming that uses classes is sometimes called class-based programming, while prototype-based programming does not typically use classes. As a result, a significantly different yet analogous terminology is used to define the concepts of object and instance.

183 derived class terminology

185 super-class terminology, and is preferred in

351 terminology, an introspective protocol provides a read only capability (e.g.

1102 Yes (but be careful of context). To use C++ terminology, an object (not

1512 (OMA) Guide document. This document outlines a single terminology for

things

67 Steve Yegge and others noted that natural languages lack the OOP approach of strictly prioritizing things (objects

103 of a set of real-world things such that:

104 * all of the real-world things in the set - the instances - have the same

107 and on identifying objects: "What are the *things* in this problem? Most of

108 the things are likely to fall into the following five categories: Tangible

109 things, Roles, Incidents, Interactions, and Specifications." [Booch 91, 4.3]

tm

1759 the Open Software Foundation(tm) as its transport mechanism. DCE is

1849 Product: Isis Reliable Distributed Object Manager(tm) (RDOM)

1851 Isis RDOM(tm) is a fault tolerant distributed ORB platform for reliable

1855 Toolkit(tm). RDOM provides interfaces from Smalltalk (Parcplace),

2016 NCR Cooperative Frameworks(TM) were first released for sale

2018 1991 as "the frameworks" part of the NCR COOPERATION(TM)

tool

2425 and garbage collection is much too important a tool to be absent from any

2655 IPL Ltd. (in the UK) has a testing tool called Cantata which allows for

2659 making the tool exceptionally easy to use and productive in

2688 MicroTech Pacific Research (mpr.ca) has a C++ class testing tool called

2693 voice: 1-415-957-1441, email: info@soft.com) has a coverage tool for C++

2696 San Jose, CA 95128, voice: 1-408-298-3824 ) has a coverage tool for

users

350 Meta-Classes accessible to users [Kiczales 92, Paepcke 93]. In CLOS

356 perform differential changes, intercessory protocols allow users to not

1783 eventually provide users with complete scalability, portability and

1787 system administrators and end users language-neutral, enterprise-wide,

1795 retailers can distribute to end users throughout headquarters, all chain

1954 requests, and has made it easier for users to integrate Orbix with their

usual

73 Luca Cardelli wrote a paper titled "Bad Engineering Properties of Object-Oriented Languages" Richard Stallman wrote in 1995, "Adding OOP to Emacs is not clearly an improvement; I used OOP when working on the Lisp Machine window systems, and I disagree with the usual view that it is a superior way to program."

695 OOP stands for Object-Oriented Programming, the usual programming

777 The usual progression is from OOA to OOD to OOP (implementation) and this

1237 This refers to the usual class and object model. Its any 2+ level system

2294 interpreters often suffer from this. The usual result is that the

2575 Describes ways in which the usual approach to software testing

visual

13 Object-oriented programming developed as the dominant programming methodology in the early and mid 1990s when programming languages supporting the techniques became widely available. These included Visual FoxPro 3.0, C++[citation needed], and Delphi[citation needed]. Its dominance was further enhanced by the rising popularity of graphical user interfaces, which rely heavily upon object-oriented programming techniques. An example of a closely related dynamic GUI library and OOP language can be found in the Cocoa frameworks on Mac OS X, written in Objective-C, an object-oriented, dynamic messaging extension to C based on Smalltalk. OOP toolkits also enhanced the popularity of event-driven programming (although this concept is not limited to OOP). Some[who?] feel that association with GUIs (real or perceived) was what propelled OOP into the programming mainstream.

16 More recently, a number of languages have emerged that are primarily object-oriented yet compatible with procedural methodology, such as Python and Ruby. Probably the most commercially important recent object-oriented languages are Visual Basic.NET (VB.NET) and C#, both designed for Microsoft's .NET platform, and Java, developed by Sun Microsystems. Both frameworks show the benefit of using OOP by creating an abstraction from implementation in their own way. VB.NET and C# support cross-language inheritance, allowing classes defined in one language to subclass classes defined in the other language. Developers usually compile Java to bytecode, allowing Java to run on any operating system for which a Java virtual machine is available. VB.NET and C# make use of the Strategy pattern to accomplish cross-language inheritance, whereas Java makes use of the Adapter pattern[citation needed].

48 Languages that are historically procedural languages, but have been extended with some OO features. Examples: Visual Basic (derived from BASIC), Fortran 2003, Perl, COBOL 2002, PHP, ABAP.

1993 Microsoft Windows NT Visual C++ NOW

1995 Microsoft Windows 3.1 Visual C++ In Beta

2241 Powerbuilder,, Visual Basic,, and Uniface,. Among the CASE tools are

accessing

5 In contrast, the object-oriented approach encourages the programmer to place data where it is not directly accessible by the rest of the program. Instead, the data is accessed by calling specially written functions, commonly called methods, which are either bundled in with the data or inherited from "class objects." These act as the intermediaries for retrieving or modifying the data they control. The programming construct that combines data with a set of methods for accessing and managing those data is called an object. The practice of using subroutines to examine or modify certain kinds of data, however, was also quite commonly used in non-OOP modular programming, well before the widespread use of object-oriented programming.

436 inheritance by simply accessing the first name encountered for data members

437 and by accessing the first signature match (or ambiguity) encountered for

1071 usage must have a consistent way of accessing these functions, as achieved thru

2146 application in the enterprise, accessing virtually any data.

actors

116 Use-Cases and Actors - Actors <--> Use-Cases <--> Object Model Objects

458 or change parents from objects (or classes) at run-time. Actors, CLOS, and

1032 as found in several dynamically typed OO languages such as Actors, CLOS,

1288 Actors Languages

adopted

774 should be made into a public standard, perhaps to be adopted by the OMG. The

1536 Adopted specifications are available on a fee-free basis to members and

1538 In late 1991 OMG adopted its first interface technology, for the Object

1539 Request Broker portion of the reference model. This technology, adopted

2187 its products to industry standards as they are adopted.

assume

56 It is intuitive to assume that inheritance creates a semantic "is a" relationship, and thus to infer that objects instantiated from subclasses can always be safely used instead of those instantiated from the superclass. This intuition is unfortunately false in most OOP languages, in particular in all those that allow mutable objects. Subtype polymorphism as enforced by the type checker in OOP languages (with mutable objects) cannot guarantee behavioral subtyping in any context. Behavioral subtyping is undecidable in general, so it cannot be implemented by a program (compiler). Class or object hierarchies need to be carefully designed considering possible incorrect uses that cannot be detected syntactically. This issue is known as the Liskov substitution principle.

912 Polymorphism is the ability of an object (or reference) to assume (be replaced

918 polymorphism, which allows an object (or reference) to assume or become any

924 many uses in the sciences, all referring to objects that can take on or assume

2611 execution of test cases for OOP. These tools assume a

calls

113 driven design. Jacobson also calls for managing complexity with specialized

876 [Yourdon 92] even calls for "global modeling"!

1694 (RDA), Remote Procedure Calls (RPC), Message-Oriented Middleware (MOM),

2160 Calls (RPC), Message-Oriented Middleware (MOM), and Object Request

2421 scheduling destructor calls smoothly. Of course, garbage collected programs

cantata

2655 IPL Ltd. (in the UK) has a testing tool called Cantata which allows for

2658 Cantata allows testing to be performed in an intuitive way

2660 operation. Cantata is suitable for testing software written in

2662 Cantata provides comprehensive facilities for all forms of

2664 testing, unit testing and integration testing. Cantata has been

chambers

218 Chambers has proposed an interesting variation called "Predicate Classes"

219 [Chambers 93] as a part of his Cecil language. These classes will only be

624 [Chambers 93] discusses multi-methods in his new OO language, Cecil.

686 [See Agrawal 91, Chambers 92, Mugridge 91, and etc.].

1090 (such as found in [Agrawal 91] and [Chambers 92]).

citation

8 Object-oriented programming has roots that can be traced to the 1960s. As hardware and software became increasingly complex, manageability often became a concern. Researchers studied ways to maintain software quality and developed object-oriented programming in part to address common problems by strongly emphasizing discrete, reusable units of programming logic[citation needed]. The technology focuses on data rather than processes, with programs composed of self-sufficient modules ("classes"), each instance of which ("objects") contains all the information needed to manipulate its own data structure ("members"). This is in contrast to the existing modular programming that had been dominant for many years that focused on the function of a module, rather than specifically the data, but equally provided for code reuse, and self-sufficient reusable units of programming logic, enabling collaboration through the use of linked modules (subroutines). This more conventional approach, which still persists, tends to consider data and behavior separately.

13 Object-oriented programming developed as the dominant programming methodology in the early and mid 1990s when programming languages supporting the techniques became widely available. These included Visual FoxPro 3.0, C++[citation needed], and Delphi[citation needed]. Its dominance was further enhanced by the rising popularity of graphical user interfaces, which rely heavily upon object-oriented programming techniques. An example of a closely related dynamic GUI library and OOP language can be found in the Cocoa frameworks on Mac OS X, written in Objective-C, an object-oriented, dynamic messaging extension to C based on Smalltalk. OOP toolkits also enhanced the popularity of event-driven programming (although this concept is not limited to OOP). Some[who?] feel that association with GUIs (real or perceived) was what propelled OOP into the programming mainstream.

16 More recently, a number of languages have emerged that are primarily object-oriented yet compatible with procedural methodology, such as Python and Ruby. Probably the most commercially important recent object-oriented languages are Visual Basic.NET (VB.NET) and C#, both designed for Microsoft's .NET platform, and Java, developed by Sun Microsystems. Both frameworks show the benefit of using OOP by creating an abstraction from implementation in their own way. VB.NET and C# support cross-language inheritance, allowing classes defined in one language to subclass classes defined in the other language. Developers usually compile Java to bytecode, allowing Java to run on any operating system for which a Java virtual machine is available. VB.NET and C# make use of the Strategy pattern to accomplish cross-language inheritance, whereas Java makes use of the Adapter pattern[citation needed].

17 Just as procedural programming led to refinements of techniques such as structured programming, modern object-oriented software design methods include refinements[citation needed] such as the use of design patterns, design by contract, and modeling languages (such as UML).

closely

13 Object-oriented programming developed as the dominant programming methodology in the early and mid 1990s when programming languages supporting the techniques became widely available. These included Visual FoxPro 3.0, C++[citation needed], and Delphi[citation needed]. Its dominance was further enhanced by the rising popularity of graphical user interfaces, which rely heavily upon object-oriented programming techniques. An example of a closely related dynamic GUI library and OOP language can be found in the Cocoa frameworks on Mac OS X, written in Objective-C, an object-oriented, dynamic messaging extension to C based on Smalltalk. OOP toolkits also enhanced the popularity of event-driven programming (although this concept is not limited to OOP). Some[who?] feel that association with GUIs (real or perceived) was what propelled OOP into the programming mainstream.

66 However, Niklaus Wirth (who popularized the adage now known as Wirth's law: "Software is getting slower more rapidly than hardware becomes faster") said of OOP in his paper, "Good Ideas through the Looking Glass", "This paradigm closely reflects the structure of systems 'in the real world', and it is therefore well suited to model complex systems with complex behaviours" (contrast KISS principle).

940 divided into parametric and inclusion polymorphism, which are closely related,

962 The two forms of "Universal Polymorphism", parametric and inclusion are closely

2298 modules must co-operate closely. This leads to a tight binding

combination

54 ECMAScript language. JavaScript is perhaps the best known prototype- based programming language, which employs cloning from prototypes rather than inheriting from a class. Another scripting language that takes this approach is Lua. Earlier versions of ActionScript (a partial superset of the ECMA-262 R3, otherwise known as ECMAScript) also used a prototype-based object model. Later versions of ActionScript incorporate a combination of classification and prototype-based object models based largely on the currently incomplete ECMA-262 R4 specification, which has its roots in an early JavaScript 2 Proposal. Microsoft's JScript.NET also includes a mash-up of object models based on the same proposal, and is also a superset of the ECMA-262 R3 specification.

429 inherited by any class requiring them. Method combination, or calling

538 is a combination of overloading and multiple-polymorphism because parameters do

1882 using any combination of the above.

1900 RDBMSs, OODMS, or a combination of these.

component

21 Dynamic dispatch – when a method is invoked on an object, the object itself determines what code gets executed by looking up the method at run time in a table associated with the object. This feature distinguishes an object from an abstract data type (or module), which has a fixed (static) implementation of the operations for all instances. It is a programming methodology that gives modular component development while at the same time being very efficient.

124 Component Objects - Utility and Implementation hiding objects

231 used when developing an overall program structure, that each component of a

2358 of the component nearly impossible. For example, methods and functions

2534 designing software that avoids acyclic component

consistent

475 default. This allows a finer granularity of control and consistent name

714 of externally observable behavior; a complete, consistent, and feasible

890 equivalence" with the RW than other methodologies), a consistent and seamless

1071 usage must have a consistent way of accessing these functions, as achieved thru

1941 distributed, object oriented applications following a consistent and

constructed

2 In the domain of object-oriented programming an object is usually taken to mean an ephemeral compilation of attributes (object elements) and behaviors (methods or subroutines) encapsulating an entity. In this way, while primitive or simple data types are still just single pieces of information, object-oriented objects are complex types that have multiple pieces of information and specific properties (or attributes). Instead of merely being assigned a value, (like int =10), objects have to be "constructed". In the real world, if a Ford Focus is an "object" - an instance of the car class, its physical properties and its function to drive would have been individually specified. Once the properties of the Ford Focus "object" had been specified into the form of the car class, it can be endlessly copied to create identical objects that look and function in just the same way. As an alternative example, animal is a superclass of primate and primate is a superclass of human. Individuals such as Joe Bloggs or John Doe would be particular examples or 'objects' of the human class, and consequently possess all the characteristics of the human class (and of the primate and animal superclasses as well).

1252 This makes for easy "prototyping", which allows for objects to be constructed

1894 DOME is constructed as a C++ class library, from which ORBs

1895 can be configured and constructed to best suit the runtime

2469 constructed in a way which is recognized as correct and the modules

copies

6 An object-oriented program will usually contain different types of objects, each type corresponding to a particular kind of complex data to be managed or perhaps to a real-world object or concept such as a bank account, a hockey player, or a bulldozer. A program might well contain multiple copies of each type of object, one for each of the real-world objects the program is dealing with. For instance, there could be one bank account object for each real-world account at a particular bank. Each copy of the bank account object would be alike in the methods it offers for manipulating or reading its data, but the data inside each object would differ reflecting the different history of each account.

1459 may continue to request hard copies. We are currently extending the paper

2541 Copies of the postscript file can be obtained by sending email

2556 Foundations, Champaign, Illinois, 1992. Copies may be obtainable

2561 and Applications ACM. Copies of this paper can be obtained

copy

6 An object-oriented program will usually contain different types of objects, each type corresponding to a particular kind of complex data to be managed or perhaps to a real-world object or concept such as a bank account, a hockey player, or a bulldozer. A program might well contain multiple copies of each type of object, one for each of the real-world objects the program is dealing with. For instance, there could be one bank account object for each real-world account at a particular bank. Each copy of the bank account object would be alike in the methods it offers for manipulating or reading its data, but the data inside each object would differ reflecting the different history of each account.

1630 o I would like to order ______ copy(s) of the Object Management

1632 o I would like to order ______ copy(s) of the CORBA for $50 each.

2374 often use "copy on write" to efficiently implement pass-by-value semantics.

2375 However, to manage memory explicitly, a program has to know if it has a copy

corp

1540 from a joint proposal (named "CORBA") of Hewlett-Packard, NCR Corp.,

1541 HyperDesk Corp., Digital Equipment Corp., Sun Microsystems and Object

1807 3.1 or Windows NT operating systems from Microsoft(R) Corp., once

1862 Bank Corp).

create

2 In the domain of object-oriented programming an object is usually taken to mean an ephemeral compilation of attributes (object elements) and behaviors (methods or subroutines) encapsulating an entity. In this way, while primitive or simple data types are still just single pieces of information, object-oriented objects are complex types that have multiple pieces of information and specific properties (or attributes). Instead of merely being assigned a value, (like int =10), objects have to be "constructed". In the real world, if a Ford Focus is an "object" - an instance of the car class, its physical properties and its function to drive would have been individually specified. Once the properties of the Ford Focus "object" had been specified into the form of the car class, it can be endlessly copied to create identical objects that look and function in just the same way. As an alternative example, animal is a superclass of primate and primate is a superclass of human. Individuals such as Joe Bloggs or John Doe would be particular examples or 'objects' of the human class, and consequently possess all the characteristics of the human class (and of the primate and animal superclasses as well).

530 To create a subclass is specialization, to factor out common parts of

1228 efficiency tradeoff), and sources can cause inlining and create source code

1327 OODBs) that outlive the programs that create them. Object lifetimes can be

1823 interfaces to use objects effectively. So developers don't need to create

creating

16 More recently, a number of languages have emerged that are primarily object-oriented yet compatible with procedural methodology, such as Python and Ruby. Probably the most commercially important recent object-oriented languages are Visual Basic.NET (VB.NET) and C#, both designed for Microsoft's .NET platform, and Java, developed by Sun Microsystems. Both frameworks show the benefit of using OOP by creating an abstraction from implementation in their own way. VB.NET and C# support cross-language inheritance, allowing classes defined in one language to subclass classes defined in the other language. Developers usually compile Java to bytecode, allowing Java to run on any operating system for which a Java virtual machine is available. VB.NET and C# make use of the Strategy pattern to accomplish cross-language inheritance, whereas Java makes use of the Adapter pattern[citation needed].

421 by making a small change to a class. Creating a subclass to alter a method

1800 provide programmers with a rapid development environment for creating and

2029 architecture and methodology for creating

2184 creating distributed applications, especially in very large

ddm

2226 DDM provides autonomy for distributed data sites, but it also

2233 its entirety on the local machine. This is possible because DDM maps

2237 DDM can manipulate data across a large number of databases and data

2239 Access Group's Call Level Interface standard, DDM can interoperate

2244 DOME, DOMEshell, DOME Security, DOME Data Manager, and DDM are

default

383 respecify state by default.

385 don't specify new state by default (to do so requires cloning), C-based (C++,

389 provide this as a default at the level of slots and features, respectively).

475 default. This allows a finer granularity of control and consistent name

1329 automatics having the shortest default

delegate

197 sharing and often instances will simply delegate to parents to access methods

215 search for an attribute to a delegate, and is therefore more of a pure

1245 to one of its base classes. In delegation systems, each object has a delegate

1247 on message passing where an object could delegate responsibility of a message

1249 object can be added to the delegate list, giving dynamic inheritance (of a

designs

4 Objects are used in software development to implement abstract data structures, by bringing together the data components with the procedures that manipulate them. Objects in object- oriented programming are key in the concept of inheritance; thereby improving program reliability[attribution needed], simplification of software maintenance[attribution needed], the management of libraries, and the division of work in programmer teams. Object-oriented programming languages are generally designed to exploit and enforce these potential advantages of the object model. Objects can also make it possible to handle very disparate objects by the same piece of code, as long as they all have the proper method. Simple, non-OOP programs may be one "long" list of statements (or commands). More complex programs will often group smaller sections of these statements into functions or subroutines each of which might perform a particular task. With designs of this sort, it is common for some of the program's data to be 'global', i.e. accessible from any part of the program. As programs grow in size, allowing any function to modify any piece of data means that bugs can have wide-reaching effects.

1392 It reviews other designs such as Clouds and Choices which where written

1393 It reviews other designs such as Clouds and Choices which where written

1394 on C++. [[ The lack of type-tests in C++ was a problem in other designs.]]

2539 leads to errors in large designs. Compile-coupling

desired

637 define methods for each specific case desired. In addition to better coupling

1077 lookup is performed (bound) at run-time (dynamically). This is often desired

1187 It is possible to specify desired abstract properties of type specifications

1244 derived class does not have a desired attribute, it "delegates" responsibility

2411 mark-and-sweep that left much to be desired. However, garbage collection has

determine

2264 determine configuration requirements for particular computer systems.

2357 determine the last use of an object and provide deletion. This makes reuse

2360 about the rest of the program to determine ownership of the objects in the

2385 different threads) makes it impossible to statically determine the last user

2656 testing C++, but as far as I am able to determine, it has no special

digital

65 OOP can be used to associate real-world objects and processes with digital counterparts. However, not everyone agrees that OOP facilitates direct real-world mapping (see Negative Criticism section) or that real-world mapping is even a worthy goal; Bertrand Meyer argues in Object-Oriented Software Construction that a program is not a model of the world but a model of some part of the world; "Reality is a cousin twice removed". At the same time, some principal limitations of OOP had been noted. For example, the Circle-ellipse problem is difficult to handle using OOP's concept of inheritance.

1541 HyperDesk Corp., Digital Equipment Corp., Sun Microsystems and Object

1644 1, SunOS, ULTRIX, Digital VAX

1645 VMS, Digital OpenVMS

1649 Digital Equipment Corporation.

directory

1575 list <directory> [match] (index a directory, pattern 'match' files)

2052 - Naming - network implementation of X.500 directory

2075 directory entries required for cross domain operation

2181 (ORB) and contains a directory and name service that provides more

docs

775 .8 docs can be found online from the Rational home page, http:

1578 list docs

1579 get docs

1581 get docs

1590 list docs

domf

1654 Full implementation of the OMG CORBA 1.1 Object Request Broker. Also DOMF.

1774 Management Facility (DOMF), object services, developers' and administrative

1775 tools, and sample applications. HP's DOMF provides a location-transparent

1781 In addition, HP is working with IBM to integrate HP's DOMF with IBM's

1819 HP's DOMF includes the object request broker, interface- definition-

dur

2578 available by anonymous ftp from vega.dur.ac.uk as

2601 This paper is available by anonymous ftp from vega.dur.ac.uk in

2613 This paper is available by anonymous ftp from vega.dur.ac.uk in

2624 This paper is available by anonymous ftp from vega.dur.ac.uk in

2635 This paper is available by anonymous ftp from vega.dur.ac.uk in

earlier

10 Objects as a formal concept in programming were introduced in the 1960s in Simula 67, a major revision of Simula I, a programming language designed for discrete event simulation, created by Ole-Johan Dahl and Kristen Nygaard of the Norwegian Computing Center in Oslo. Simula 67 was influenced by SIMSCRIPT and Hoare's proposed "record classes". Simula introduced the notion of classes and instances or objects (as well as subclasses, virtual methods, coroutines, and discrete event simulation) as part of an explicit programming paradigm. The language also used automatic garbage collection that had been invented earlier for the functional programming language Lisp. Simula was used for physical modeling, such as models to study and improve the movement of ships and their content through cargo ports. The ideas of Simula 67 influenced many later languages, including Smalltalk, derivatives of LISP (CLOS), Object Pascal, and C++.

14 At ETH Z?rich, Niklaus Wirth and his colleagues had also been investigating such topics as data abstraction and modular programming (although this had been in common use in the 1960s or earlier). Modula-2 (1978) included both, and their succeeding design, Oberon, included a distinctive approach to object orientation, classes, and such. The approach is unlike Smalltalk, and very unlike C++.

54 ECMAScript language. JavaScript is perhaps the best known prototype- based programming language, which employs cloning from prototypes rather than inheriting from a class. Another scripting language that takes this approach is Lua. Earlier versions of ActionScript (a partial superset of the ECMA-262 R3, otherwise known as ECMAScript) also used a prototype-based object model. Later versions of ActionScript incorporate a combination of classification and prototype-based object models based largely on the currently incomplete ECMA-262 R4 specification, which has its roots in an early JavaScript 2 Proposal. Microsoft's JScript.NET also includes a mash-up of object models based on the same proposal, and is also a superset of the ECMA-262 R3 specification.

443 the earlier flavors. C++ declares an error iff a conflict arises, but a

759 [Yourdon 92] provides a critique, although may only refer to their earlier

elements

2 In the domain of object-oriented programming an object is usually taken to mean an ephemeral compilation of attributes (object elements) and behaviors (methods or subroutines) encapsulating an entity. In this way, while primitive or simple data types are still just single pieces of information, object-oriented objects are complex types that have multiple pieces of information and specific properties (or attributes). Instead of merely being assigned a value, (like int =10), objects have to be "constructed". In the real world, if a Ford Focus is an "object" - an instance of the car class, its physical properties and its function to drive would have been individually specified. Once the properties of the Ford Focus "object" had been specified into the form of the car class, it can be endlessly copied to create identical objects that look and function in just the same way. As an alternative example, animal is a superclass of primate and primate is a superclass of human. Individuals such as Joe Bloggs or John Doe would be particular examples or 'objects' of the human class, and consequently possess all the characteristics of the human class (and of the primate and animal superclasses as well).

47 Languages designed mainly for OO programming, but with some procedural elements. Examples: C++, C#, VB.NET, Java, Python.

57 Design Patterns: Elements of Reusable Object-Oriented Software is an influential book published in 1995 by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, sometimes casually called the "Gang of Four". Along with exploring the capabilities and pitfalls of object-oriented programming, it describes 23 common programming problems and patterns for solving them. As of April 2007, the book was in its 36th printing.

569 [Booch 94, 2.2] proposes 7 "Elements of the Object Model"; 4 major and 3 minor:

858 Dion, R., "Elements of a Process Improvement Program," IEEE Software, July

entire

78 Joe Armstrong, the principal inventor of Erlang, is quoted as saying "The problem with object-oriented languages is they've got all this implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle."

79 Richard Mansfield, author and former editor of COMPUTE! magazine, states that "like countless other intellectual fads over the years ("relevance", communism, "modernism", and so on—history is littered with them), OOP will be with us until eventually reality asserts itself. But considering how OOP currently pervades both universities and workplaces, OOP may well prove to be a durable delusion. Entire generations of indoctrinated programmers continue to march out of the academy, committed to OOP and nothing but OOP for the rest of their lives."[38] He also is quoted as saying "OOP is to writing a program, what going through airport security is to flying".

874 modeling entire organizations or a large part of them, with the information

1791 our entire company on it," said Richard Tanler, president and chief

2356 Program components frequently need knowledge of an entire program to

execution

967 fast running execution, but in a "true polymorphic system", only a single

2380 3. Message Passing Leads to Dynamic Execution Paths

2382 execution to make a compile-time determination of the last user of an

2387 clear order of execution. Other dynam ic control structures, such as

2611 execution of test cases for OOP. These tools assume a

facilities

3 "Objects" are the foundation of object-oriented programming, and are fundamental data types in object-oriented programming languages. These languages provide extensive syntactic and semantic support for object handling, including a hierarchical type system, special notation for declaring and calling methods, and facilities for hiding selected fields from client programmers. However, objects and object-oriented programming can be implemented in any language.

1332 interactive user interface facilities, as found in a fully supported OODBMS.

1527 4) the Common Facilities will comprise facilities which are useful in

2662 Cantata provides comprehensive facilities for all forms of

float

628 +(int, float)

631 +(float, complex)

632 +(float, real)

633 +(float, float)

framework

1514 frameworks; an abstract framework for object-oriented systems; a set

1921 specification to provide a SMART communication framework allowing

1924 proven communication framework that links thousands of nodes.

2095 Cooperative Framework implementations on supported platforms

2573 Smith, M. D. and D. J. Robson, " A Framework for Testing Object-Oriented

fundamental

3 "Objects" are the foundation of object-oriented programming, and are fundamental data types in object-oriented programming languages. These languages provide extensive syntactic and semantic support for object handling, including a hierarchical type system, special notation for declaring and calling methods, and facilities for hiding selected fields from client programmers. However, objects and object-oriented programming can be implemented in any language.

18 A survey by Deborah J. Armstrong of nearly 40 years of computing literature identified a number of "quarks", or fundamental concepts, found in the strong majority of definitions of OOP.

20 Benjamin C. Pierce and some other researchers view as futile any attempt to distill OOP to a minimal set of features. He nonetheless identifies fundamental features that support the OOP programming style in most object-oriented languages:

76 Alexander Stepanov suggested that OOP provides a mathematically-limited viewpoint and called it "almost as much of a hoax as Artificial Intelligence. I have yet to see an interesting piece of code that comes from these OO people. In a sense, I am unfair to AI: I learned a lot of stuff from the MIT AI Lab crowd, they have done some really fundamental work....".

1218 many instantiations such as a Stack of ints, a Stack of any fundamental

graphical

9 An object-oriented program may thus be viewed as a collection of interacting objects, as opposed to the conventional model, in which a program is seen as a list of tasks (subroutines) to perform. In OOP, each object is capable of receiving messages, processing data, and sending messages to other objects. Each object can be viewed as an independent "machine" with a distinct role or responsibility. The actions (or "methods") on these objects. The terms "objects" and "oriented" in something like the modern sense of object- oriented programming seem to make their first appearance at MIT in the late 1950s and early 1960s. In the environment of the artificial intelligence group, as early as 1960, "object" could refer to identified items (LISP atoms) with properties (attributes); Alan Kay was later to cite a detailed understanding of LISP internals as a strong influence on his thinking in 1966.[3] Another early MIT example was Sketchpad created by Ivan Sutherland in 1960-61; in the glossary of the 1963 technical report based on his dissertation about Sketchpad, Sutherland defined notions of "object" and "instance" (with the class concept covered by "master" or "definition"), albeit specialized to graphical interaction. Also, an MIT ALGOL version, AED-0, linked data structures ("plexes", in that dialect) directly with procedures, prefiguring what were later termed "messages", "methods" and "member functions".

13 Object-oriented programming developed as the dominant programming methodology in the early and mid 1990s when programming languages supporting the techniques became widely available. These included Visual FoxPro 3.0, C++[citation needed], and Delphi[citation needed]. Its dominance was further enhanced by the rising popularity of graphical user interfaces, which rely heavily upon object-oriented programming techniques. An example of a closely related dynamic GUI library and OOP language can be found in the Cocoa frameworks on Mac OS X, written in Objective-C, an object-oriented, dynamic messaging extension to C based on Smalltalk. OOP toolkits also enhanced the popularity of event-driven programming (although this concept is not limited to OOP). Some[who?] feel that association with GUIs (real or perceived) was what propelled OOP into the programming mainstream.

883 including classes, inheritance, a high-powered graphical environment and a

1084 many kinds of objects such as text and graphical objects, multiple-polymorphism

2681 *Graphical test coverage to highlight any code not executed during test runs

handling

3 "Objects" are the foundation of object-oriented programming, and are fundamental data types in object-oriented programming languages. These languages provide extensive syntactic and semantic support for object handling, including a hierarchical type system, special notation for declaring and calling methods, and facilities for hiding selected fields from client programmers. However, objects and object-oriented programming can be implemented in any language.

663 handling, like C++ friends, usually by allowing representation details of more

1520 handling distribution of messages between application objects in

1543 application request handling software "bus."

2210 - Platform independent time services and exception handling

hewlett-packard

1540 from a joint proposal (named "CORBA") of Hewlett-Packard, NCR Corp.,

1655 Hewlett-Packard

1741 PALO ALTO, Calif.--(BUSINESS WIRE) via First! -- Hewlett-Packard Company

1836 Hewlett-Packard Company is an international manufacturer of measurement

2501 Fiedler, Steven P., "Object-Oriented Unit Testing", Hewlett-Packard

hyperdesk

1541 HyperDesk Corp., Digital Equipment Corp., Sun Microsystems and Object

1660 > HyperDesk (Westborough MA) HD-DOMS, rich_fraser@hyperdesk.com

1663 API only), NetWare (planned, Novell owns part of HyperDesk).

1725 HD-DOMS (HyperDesk Distributed Object Management System). A

identifying

107 and on identifying objects: "What are the *things* in this problem? Most of

110 covers "Identifying Key Abstractions" for objects and classes based on an

112 to identifying objects through use-cases (scenarios), leading to a use-case

706 "In OOA, we seek to model the world by identifying the classes and objects

735 "The process of identifying, collecting, organizing, and representing the

idl

1371 Ouverture Project (ESPRIT funded OMG IDL defines inter-module interfaces)

1669 Object RPC compatible with OMG CORBA 1.2 spec (will compile OMG IDL and

1733 mapping for IDL to the OMG recently.

2088 Languages used for IDL mapping - IDL bindings for C, (or

inherit

448 several classes. In classical systems without MI, a class which should inherit

552 - Types may inherit attributes from supertypes.

995 more than required. Since derived classes can inherit structure and behavior

1166 used for assignment compatibility forcing an assigned object to inherit

1193 to inherit from them, providing a subclass polymorphism facility, and ACs can

integrated

875 processing system and software products development as integrated components.

1604 integrated software systems. These systems should be built using

1749 integrated, desktop access to enterprise-wide information and resources in

1767 integrated set of services that can be used separately or together to

2026 Cooperative Frameworks consists of an integrated suite of

international

1456 International Conference on System Sciences (HICSS) (IEEE Computer Society

1504 The Object Management Group (OMG) is an international software industry

1836 Hewlett-Packard Company is an international manufacturer of measurement

2515 International Conference on Software Engineering, May, 1992,

2584 Problems of Validation", Proceedings of the 6th International

knowledge

737 their development histories, knowledge captured from domain experts,

1093 This removes the spread of knowledge of specific classes throughout a system,

1195 spreading knowledge of classes throughout a system, which is a high priority

2356 Program components frequently need knowledge of an entire program to

2373 low-level knowledge of how memory is structured. For example, programmers

leading

112 to identifying objects through use-cases (scenarios), leading to a use-case

713 "To us, analysis is the study of a problem domain, leading to a specification

834 leading to statistical (process) control and sustained improvement. Watts S.

1226 disadvantage when causing dynamic compilation (leading to a time

2687 *Integration with leading programming tools for maximum productivity gains

managed

6 An object-oriented program will usually contain different types of objects, each type corresponding to a particular kind of complex data to be managed or perhaps to a real-world object or concept such as a bank account, a hockey player, or a bulldozer. A program might well contain multiple copies of each type of object, one for each of the real-world objects the program is dealing with. For instance, there could be one bank account object for each real-world account at a particular bank. Each copy of the bank account object would be alike in the methods it offers for manipulating or reading its data, but the data inside each object would differ reflecting the different history of each account.

842 Level 4: Managed: A measurable basis for all improvements to the process.

2392 manually managed components and libraries often use incompatible memory

2418 their manually managed brethren. [3] In fact, multi-media programmers

2423 manually managed programs. Finally, garbage collection can be mixed with

messaging

1 Object-oriented programming (OOP) is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction, encapsulation, messaging, modularity, polymorphism, and inheritance. Many modern programming languages now support OOP, at least as an option. In computer science, an object is any entity that can be manipulated by the commands of a programming language, such as a value, variable, function, or data structure. (With the later introduction of object-oriented programming the same word, "object", refers to a particular instance of a class)

13 Object-oriented programming developed as the dominant programming methodology in the early and mid 1990s when programming languages supporting the techniques became widely available. These included Visual FoxPro 3.0, C++[citation needed], and Delphi[citation needed]. Its dominance was further enhanced by the rising popularity of graphical user interfaces, which rely heavily upon object-oriented programming techniques. An example of a closely related dynamic GUI library and OOP language can be found in the Cocoa frameworks on Mac OS X, written in Objective-C, an object-oriented, dynamic messaging extension to C based on Smalltalk. OOP toolkits also enhanced the popularity of event-driven programming (although this concept is not limited to OOP). Some[who?] feel that association with GUIs (real or perceived) was what propelled OOP into the programming mainstream.

644 ignoring the inherent type of parameters in messaging. Double dispatch is

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]