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

2065 Registering services and entities in a distributed

equipment

1541 HyperDesk Corp., Digital Equipment Corp., Sun Microsystems and Object

1649 Digital Equipment Corporation.

eth

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++.

1396 at the ETH.

ethos

1384 Insight ETHOS: On Object-Orientation in Operating Systems

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

evolution

699 evolution of an OOD.

1431 Arnold, P., Bodoff, S., Coleman, D., Gilchrist, H., Hayes, F., An Evolution of

evolutionary

769 evolutionary step beyond the first edition by incorporating a collection of the

790 incremental, iterative, evolutionary, concurrent and situational nature of

executables

2679 *Automatic run-time error-checking on executables to enhance quality

2680 *Automatic memory leak detection on executables to optimize memory use

executive

1353 ODMG Executive Director

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

exemplar

201 exemplar,

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

exerciser

2639 Wong, P. Automated Class Exerciser (ACE) User's Guide. Technical

2689 ACE (Automated Class Exerciser) which is available under non-disclosure

exhibit

931 of types; these types normally exhibit some common structure. Ad-hoc

933 different types (which may not exhibit a common structure) and may behave in

exist

391 schemes exist, for example C++ finds the closest match within a scope but

1089 Again, various optimizations exist for dynamic lookup to increase efficiency

existed

91 objects typically existed in Simula programs to simulate some aspect of

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

experimental

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

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

exploit

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.

2129 required, and still be able to exploit all of an organization's

exponentially

641 method, but perhaps exponentially. This should be distinguished from double

1098 linearly but exponentially with lines of code, so that packaging code into

expression

651 The addition expression above will invoke the correct "+" function based on the

2310 instance many C compilers limit expression nesting, identifier

extensible

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

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

externally

714 of externally observable behavior; a complete, consistent, and feasible

717 "Design. The practise of taking a specification of externally available

facilitate

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.

1803 storage mechanism to facilitate the reuse of objects.

factor

530 To create a subclass is specialization, to factor out common parts of

2537 design becomes a key factor only for large and very

factory

59 Creational patterns : Factory method pattern, Abstract factory pattern, Singleton pattern, Builder pattern, Prototype pattern

fast

967 fast running execution, but in a "true polymorphic system", only a single

2417 Garbage collected programs are usually as fast and responsive as

fault

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

2408 It is not enough to merely find fault with manual memory management. One also

favor

502 favor of a static type (or even loss of an object's representation to that of

1009 although it was abandoned in favor of a single class-based approach for

fichman

1438 Fichman R.G. & Kemerer C.F. OO and Conventional Analysis and Design

1440 Fichman, Robert and Kemerer, Chris. Object-Oriented and Conventional Analysis

filtering

1937 approach to filtering, and more code examples to guide programmers.

1953 In version 1.2 IONA has also extended the whole approach to filtering of

flow

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.

fn

649 fn(one, two: Number): Number

655 switching to the "fn" function based on the type of "one" also. This could

followup

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

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

forces

393 a linear precedence list, Self provides parent priorities, and Eiffel forces

440 which to choose becomes an issue. Eiffel forces derived classes to rename

ford

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).

fortran

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.

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.

francisco

1960 exhibition in San Francisco, Calif., June 1993. Since then it has rolled

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

frankl

2497 Doong, Roong-Ko and Phyllis G. Frankl, "Case Studies on Testing

2505 Frankl, Phyllis G. and Roong-Ko Doong, "Tools for Testing

friends

252 class to specify friends (other (sub)classes and functions), that can access

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

gamma

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.

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.

garfinkel

1080 [Garfinkel 93, p80] and [Cox 91, pp 64-67]. To extend Garfinkels example with

1257 of delegation in a class-based language [Garfinkel 93].

generate

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

2312 problems for programs that generate C.

generation

885 Simula). Self is somewhat of a Smalltalk-based next generation language, as is

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

generically

1215 may be generically parameterized. Generics provide for reusability in

1216 programming languages. An example is a Stack with a generically

giving

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

1273 Add 1 To Cobol giving Cobol with Objects.

gnu

1986 SunOS 4.1 GNU 2.5.8 NOW

1989 Solaris 2.x GNU 2.5.7 NOW

goals

1515 of both technical and architectural goals; and an architecture

1610 supports their goals. The OMA publication outlines the

graham

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.

2509 Graham, J.A., Drakeford, A.C.T., Turner, C.D. 1993. The Verification,

grained

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

2057 designed around fine grained objects, developers can

granularity

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

1262 where reuse occurs at a finer degree of granularity - method and instance

graphics

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

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

group's

1939 of the Object Management Group's (OMG's) Common Object Request Broker

2239 Access Group's Call Level Interface standard, DDM can interoperate

guarantee

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.

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

haskell

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

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

hawaii

1455 Comparison of Object Oriented Analysis and Design Methodologies, Hawaii

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

hd-doms

1660 > HyperDesk (Westborough MA) HD-DOMS, rich_fraser@hyperdesk.com

1725 HD-DOMS (HyperDesk Distributed Object Management System). A

helping

260 helping with abstract classes and overriding.

865 software quality and ami working group in Europe helping to creat the ISO

here's

1498 In answer to your general question about the OMG, here's a brief overview.

1624 [Here's why you don't see the specifications posted to the net or available via

hickey

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.

1972 Paul Hickey, tel: +353-1-6686522

higher

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

894 encapsulation and abstraction (higher cohesion

historically

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.

1131 downcasting (historically known as type narrowing), the thrust of RTTI, can

histories

737 their development histories, knowledge captured from domain experts,

1598 case histories, OT training information and the latest object-

history

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.

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".

hoc

839 Level 1: Initial: Every project is handled differently; ad hoc and chaotic.

948 |-- ad hoc --|

hybrid

589 hybrid systems). However, all objects may be classes in single hierarchy

1266 Object Specialization [Sciore 89] is an example of a hybrid approach between

ian

1659 Ian Fuller ian@cup.hp.com (408) 447-4722

identification

560 as: "... storing type identification in each object, brings us to a style of

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

identifies

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:

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]

identity

84 "An object has state, behavior, and identity; the structure and behavior of

1317 structured subobjects, each object has its own identity, or object-id (as

iff

392 causes an ambiguity error iff more than one parent has match, CLOS creates

443 the earlier flavors. C++ declares an error iff a conflict arises, but a

illinois

2556 Foundations, Champaign, Illinois, 1992. Copies may be obtainable

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

impedance

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.

implies

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

618 encapsulation implies all arguments can be accessed by a multi-method (although

improve

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++.

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)

inability

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.

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

incomplete

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.

72 A number of well-known researchers and programmers have analysed the utility of OOP. Here is an incomplete list:

incorporated

1828 customer input can be incorporated into the product early in its development

1892 Existing software can also be incorporated easily, providing

increase

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.

1089 Again, various optimizations exist for dynamic lookup to increase efficiency

increasingly

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.

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.

indirection

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

1268 of indirection and inheritance hierarchies are specified on a per object

individual

93 Smith and Tockey: "an object represents an individual, identifiable item,

1560 research institution or individual, whether

individuals

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).

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

infer

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.

991 Ada may infer some actual generic parameters (operations) and C++ doesn't

initially

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.

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

input

1828 customer input can be incorporated into the product early in its development

2308 arbitrary restrictions on input data which can cause failure when

instance-of

345 Meta-Meta-Class, ... Closure can be achieved with an instance-of loop, as with

347 class" instance-of loop (as in Smalltalk).

instantiated

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.

instantiations

307 instantiations:

1218 many instantiations such as a Stack of ints, a Stack of any fundamental

insure

1158 values. This can insure type-safe programming. However, the representation of

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

insures

1168 based on class, or subclass polymorphism). This insures all operations to be

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

integral

1905 - integral support for GUI development,

1948 The improved Interface Repository is an integral part of IONA's CORBA

integrity

1184 subtyping seems similar. A possible loss of semantic integrity

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

intellectual

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".

425 For example, a person is a mammal and an intellectual_entity, and a document

intelligence

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".

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....".

interacting

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".

740 localized around objects, e.g., classes, instances, systems of interacting

interactions

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)

109 things, Roles, Incidents, Interactions, and Specifications." [Booch 91, 4.3]

interactive

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

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

intercessory

353 intercessory protocol provides a write capability which allows system

356 perform differential changes, intercessory protocols allow users to not

interoperable

1521 a highly interoperable manner;

2238 locations, and it is also interoperable. By conforming to the SQL

interoperate

359 frameworks can interoperate together simultaneously. This is a good example

2239 Access Group's Call Level Interface standard, DDM can interoperate

introduces

1738 SUBJECT: HP INTRODUCES DISTRIBUTED-COMPUTING SOLUTION FOR BUILDING

2321 Opponents of GC reply that it introduces an overhead which is

intuition

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.

2538 large projects. Intuition gained from smaller projects

involve

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

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

iona's

1948 The improved Interface Repository is an integral part of IONA's CORBA

1967 demonstrated interoperability between IONA's Orbix running on Microsoft

items

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".

739 Object-oriented domain analysis (OODA) seeks to identify reusable items

iterations

793 proposes a "round-trip gestalt" design with analyze-design iterations and

795 "parallel-recursive design" with analyze-design-implement-test iterations.

ithaca

1716 implementation" developed at Cornell, Ithaca NY.)

1850 Company: Isis Distributed Systems, Inc., Ithaca NY, USA.

ivar

127 Unrelated to Ivar Jacobson but relevant to the topic:

773 on by Grady Booch, James Rumbaugh, and Ivar Jacobson at Rational Software which

jan

2568 2(5):13-19, Jan

2570 Purchase, Jan A. and Russel L. Winder, "Debugging tools for

january

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

joe

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).

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."

join

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

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

joop

1435 oriented analysis methods. Journal of Object Oriented Programming (JOOP), pp

2574 Programs", JOOP, 5(3):45-53, June 1992.

kay

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".

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.

kemerer

1438 Fichman R.G. & Kemerer C.F. OO and Conventional Analysis and Design

1440 Fichman, Robert and Kemerer, Chris. Object-Oriented and Conventional Analysis

kerberos

2176 - Kerberos 5.4 (Security)

2202 - Kerberos 5.4 compatible security

kit

1830 For the generally available Developer's Kit, C++, C and Smalltalk

1832 combined into one application. The Developer's Kit is scheduled to be

laboratories

1377 Sun Microsystems Laboratories, Inc.

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

lakos

2530 Lakos, John S. "Designing-In Quality in Large C++ Projects" Presented

2542 to "john_lakos@warren.mentorg.com".

latest

1598 case histories, OT training information and the latest object-

1935 The latest release of Orbix, Version 1.2, includes an Object Loader function

lattice

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

471 specified as virtual (virtual bases) are shared within the same class lattice,

layer

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

2206 communications layer

learning

1370 learning OS)

1957 code examples it ships with the product to help developers learning how to use

lee

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]

2494 Cheatham Thomas J., and Lee Mellinger, "Testing Object-Oriented

limitations

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.

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

linearly

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

1098 linearly but exponentially with lines of code, so that packaging code into

linked

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.

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".

links

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

1924 proven communication framework that links thousands of nodes.

liskov

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.

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

load

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

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

loader

1935 The latest release of Orbix, Version 1.2, includes an Object Loader function

1944 at runtime through its Object Loader function. This enables developers to more

logging

2054 - Logging - provides local and server based error

2055 logging

loop

345 Meta-Meta-Class, ... Closure can be achieved with an instance-of loop, as with

347 class" instance-of loop (as in Smalltalk).

macintosh

1642 IBM AIX, IBM MVS(port in progress), HP-UX, Macintosh, MS-Windows 3.1, NT,

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

mailing

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

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

maintain

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.

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

manage

2375 However, to manage memory explicitly, a program has to know if it has a copy

2416 compatibly manage both new and existing programs. [2]

manipulating

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.

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

market

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

mateo

2274 published by Morgan Kaufmann Publishers, San Mateo, California

2458 San Mateo, CA 94403

maximum

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

2687 *Integration with leading programming tools for maximum productivity gains

measurable

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

2211 These beneficial functions have resulted in measurable time and labor

mediocre

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.

mentioned

2443 Programming that have been mentioned to me over the net, in email,

2491 not specifically about testing of OOP, it is mentioned so often

message-oriented

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

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

meta-

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.

344 be an instance of a Meta-Meta-Class, which must also be an instance of a Meta-

meta-meta-class

344 be an instance of a Meta-Meta-Class, which must also be an instance of a Meta-

345 Meta-Meta-Class, ... Closure can be achieved with an instance-of loop, as with

meta-object

343 class (Meta-Object), a class is an instance of a Meta-Class, which must also

349 MOP is an acronym for Meta-Object Protocol. This is a system with

michael

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]

2350 Michael Spertus

microsoft's

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].

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.

minor

569 [Booch 94, 2.2] proposes 7 "Elements of the Object Model"; 4 major and 3 minor:

575 Minor:

mismatch

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.

mixins

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.

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

modify

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.

modifying

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.

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

modularity

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)

573 Modul arity

mom

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

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

moon

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

mops

348 1.6) What Are MOPs And Reflection? (Object-Oriented Technology)

362 "Reflective" systems are systems with MOPs (not to be confused with reflexive

mprgate

2562 through townsend@mprgate.mpr.ca.

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

ms

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

2081 and was originally developed on MS OS

ms-windows

1642 IBM AIX, IBM MVS(port in progress), HP-UX, Macintosh, MS-Windows 3.1, NT,

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

mugridge

686 [See Agrawal 91, Chambers 92, Mugridge 91, and etc.].

1122 [Mugridge 91]. See also section 2.3.

multi-method

618 encapsulation implies all arguments can be accessed by a multi-method (although

621 term "multi-method") consider the functional and receiver based forms

multiple-

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

387 (Ada95, Modula-3, Object Pascal, etc.) OO languages do, but with multiple-

multiple-inheritance

163 as variant parts and with multiple-inheritance concatenating several records

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

murphy

2558 Murphy, G.C., Wong, P. 1992, Towards a Testing Methodology for

2563 Murphy, G. and P. Wong. Object-Oriented Systems Testing Methodology: An

narrowing

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

1131 downcasting (historically known as type narrowing), the thrust of RTTI, can

naturalness

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

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

negative

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.

2196 negative

nesting

2310 instance many C compilers limit expression nesting, identifier

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

netbios

1880 IP, NetBIOS, XTI

2035 IP, NetBIOS, Lan Manager NetBEUI and

newsletter

1591 > First Class (Bi-Monthly Newsletter)

1593 newsletter. First Class provides current information on Object

niklaus

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++.

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).

nodes

1924 proven communication framework that links thousands of nodes.

2235 enterprise's physical environment of multiple nodes, disparate

non-

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

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

non-oop

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.

non-shared

217 also typically specifies non-shared state when used for representation.

472 allowing both shared and non-shared occurrences of a parent to coexist. All

northwest

2507 Northwest Conference on Software Quality, 1990, pp. 309-324.

2531 at the 10th Annual Pacific Northwest Software Quality Conference,

note

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

2555 Narick, Brian. "Testing Software that Reuses", Technical Note 2, Testing

noted

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.

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

notification

1826 for properties, life cycle, associations, event notification and naming.

2200 - Concern registration and event notification

nouns

68 nouns) before actions (methods

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."

novell

1663 API only), NetWare (planned, Novell owns part of HyperDesk).

2080 Frameworks has been demonstrated on Novell NetWare v3.11,

numbers

647 If all of the above types are Numbers, code can be written without concern for

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

numerous

1595 Class offers an open editorial forum on numerous Object

2228 It can read and write data across numerous DBMSs, and it makes

occurring

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.

odmg-

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

2272 The Object Database Standard: ODMG-93

offered

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."

1547 developed and offered by commercial companies.

offsets

1075 in in the derived class, along with offsets to reset the receiver).

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

one-level

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

407 between classes only. In one-level systems, is-a (object instantiation) and

ongoing

1600 ongoing development of the Object Management Architecture are

2124 world of heterogeneous, distributed computer systems, it's an ongoing

online

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

846 CMM documentation is available online from: http:

oopl

115 Ordinary Objects - Typical OOPL objects

903 Polymorphism is often considered the most powerful facility of an OOPL.

ooram

766 "structured" techniques, with greater emphasis on objects. OOram [Reenskaug

1414 Reenskaug (OOram, was OORASS) [Reenskaug 91]

openvms

1645 VMS, Digital OpenVMS

1877 1 (AXP), OpenVMS,

operands

951 Polymorphic Functions: functions whose operands (actual parameters) can

954 Polymorphic Types: types whose operations are applicable to operands of more

operates

600 the method operates on. An exception exists with C++'s static member functions

1949 implementation. The Interface Repository operates as a dynamic browser which is

operator

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).

operators

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

2305 operators.

optimizing

843 Level 5: Optimizing: Emphasis on defect prevention and optimizing

ordinary

115 Ordinary Objects - Typical OOPL objects

588 Classes. Instances of a Class (ordinary objects) are not classes (excluding

organization

898 systems with more resilient system organization.

1608 range maintenance of that code. As an organization, OMG believes

organization's

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

2129 required, and still be able to exploit all of an organization's

orientation

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++.

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:

originally

1201 Signatures), Sather (originally Eiffel-based), and an Eiffel superset

2081 and was originally developed on MS OS

orthogonal

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

1214 Generics are orthogonal to inheritance, since types (and classes)

outlines

1512 (OMA) Guide document. This document outlines a single terminology for

1610 supports their goals. The OMA publication outlines the

overhead

2321 Opponents of GC reply that it introduces an overhead which is

2322 unacceptable in some applications. However the overhead of manual

overloaded

1085 comes into play, as many overloaded cut methods, one per type of object to be

2304 particular problem with temporary values produced by C++ overloaded

overloading

538 is a combination of overloading and multiple-polymorphism because parameters do

947 | |-- overloading

overridable

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

675 are dropped, multiple-polymorphism results. Thus a single overridable function

ownership

2360 about the rest of the program to determine ownership of the objects in the

2399 support long-lived data and keep track of ownership of data shared by

package

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

1705 list with their info package.

parc

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.

1671 parcftp.parc.xerox.com:

parcftp

1671 parcftp.parc.xerox.com:

2342 parcftp.xerox.com

parm

605 receiver message_name: a1 parm1: a2 parm3: a3

partial

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.

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

passed

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

1359 be passed freely between machines. They are typically capability-based since

pc

415 Data Proc Scientific PC Workstation

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

per-class

261 Another issue is per-object or per-class protection. Per-class protection

percy

1932 8-34 Percy Place

1974 8-34 Percy Place, email: pth@iona.ie

performing

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.

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

per-object

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

personnel

838 personnel management CMM (PM-CMM).

2212 savings while freeing systems personnel to concentrate on critical

phases

814 Since classes and objects are used in all phases of the OO software life-cycle,

816 gap between the phases as is often the case in other software development

phone

2010 Subject: re-post: NCR Cooperative Frameworks (new phone no.)

2103 Phone

phyllis

2497 Doong, Roong-Ko and Phyllis G. Frankl, "Case Studies on Testing

2505 Frankl, Phyllis G. and Roong-Ko Doong, "Tools for Testing

pieces

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).

places

873 efforts places information systems within an organizational perspective by

2250 SUITESOFTWARE places particular emphasis on support and continuing

pointed

182 As pointed out in [Stroustrup 90, p197], the base

271 (parents, or recursive structure and behavior) for objects. As pointed out

poly

923 "Poly" means "many" and "morph" means "form". The homograph polymorphism has

2508 One author can be reached at pfrankl@polyof.poly.edu.

polymorphically

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.

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

poor

2362 Attempts to encapsulate memory management with reference counting, the "poor

2364 performance than GC, awkward syntax, and poor semantics, which typically

popularity

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.

portability

1783 eventually provide users with complete scalability, portability and

2666 systems and so allow full portability of tests between these

precedence

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."

393 a linear precedence list, Self provides parent priorities, and Eiffel forces

preferred

185 super-class terminology, and is preferred in

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

prefix

612 See also section 1.19 below for a discussion on the functional (prefix) verses

620 imply a functional prefix notation, although the CLOS designers (who coined the

prentice-hall

2480 Prentice-Hall, Englewood Cliffs, NJ. $35.

2550 Marick, Brian. The Craft of Software Testing, Prentice-Hall, in press.

president

1501 Vice President & Technical Director

1791 our entire company on it," said Richard Tanler, president and chief

primarily

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].

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

principal

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.

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."

priority

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.

1195 spreading knowledge of classes throughout a system, which is a high priority

proc

415 Data Proc Scientific PC Workstation

2523 Hoffman, D. M. A CASE Study in Module Testing. In Proc. Conf. Software

productive

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.

2659 making the tool exceptionally easy to use and productive in

program's

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.

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

progress

833 by specifying steps for organizations to progress to the next level, ultimately

1642 IBM AIX, IBM MVS(port in progress), HP-UX, Macintosh, MS-Windows 3.1, NT,

proper

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.

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

prototypical

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

1142 for polymorphism; unlike OO languages, but provides the prototypical example of

proven

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.

1924 proven communication framework that links thousands of nodes.

publishers

1486 We are currently approaching publishers for the publication of this report

2274 published by Morgan Kaufmann Publishers, San Mateo, California

puts

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."

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

question

42 Question book-new.svg

1498 In answer to your general question about the OMG, here's a brief overview.

quick

2255 DOME Software System and obtain quick resolutions to problems.

2685 *No recompilation needed, resulting in quick turnaround

quickly

1817 developers can find and use objects more quickly.

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

quoted

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".

rapidly

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).

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

rates

174 injection rates during maintanance and debugging).

489 increases in productivity and reductions in defect rates (program errors),

rcbc

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

1848 Reply-To: rcbc@isis.com

rda

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

2159 - and support for Remote Data Access (RDA), Remote Procedure

reading

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.

2326 Further Reading:

recognized

1837 and computation products and systems recognized for excellence in quality

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

recommended

666 typically isn't recommended as a general OO practice (see section 1.15, C+W's

1583 Recommended (from the net):

redefined

535 "frozen" features in Eiffel can be "redefined" in a derived class. Whenever

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

reduce

639 coding logic (switch statements) and because small methods further reduce

2128 To simplify the technical challenges, reduce the time and effort

reducing

171 switch statement on variant parts with a single call, reducing code size

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

refinements

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).

reflecting

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.

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.

reflective

362 "Reflective" systems are systems with MOPs (not to be confused with reflexive

364 bootstrapped). Reflective systems are inevitably reflexive (as are most

reflexive

362 "Reflective" systems are systems with MOPs (not to be confused with reflexive

364 bootstrapped). Reflective systems are inevitably reflexive (as are most

refs

1314 Refs to be included in future FAQs.

1355 Refs to be included in future FAQs. See also Appendix E.

register

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

regression

2677 code. Also does some memory debugging (similar to Purify) and regression

2684 to support batch-mode and regression testing

relation

1006 acceptable and no inheritance relation is required (subtype polymorphism).

1175 polymorphism) but are not required to do to do so by an inheritance relation

relevance

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.

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".

removed

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)

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.

renaming

394 renaming for any parent member conflicts.

520 strategies or renaming, and most consider MI to be highly desirable. See the

renders

444 class qualifier can be used to explicitly disambiguate. Smalltalk renders

689 general undecidability of dynamic types at compile-time renders dynamic typing

repeatable

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.

840 Level 2: Repeatable: Every project is handled similarly.

replaced

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

1261 provides one, where inheritance is replaced with a roughly equivalent form

represent

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.

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.

representing

735 "The process of identifying, collecting, organizing, and representing the

765 methodologies representing a greater departure from the conventional

represents

93 Smith and Tockey: "an object represents an individual, identifiable item,

757 RD and represents a recent

resilient

898 systems with more resilient system organization.

1713 Its a toolkit for building failure resilient, distributed applications

resistance

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

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

resolved

435 Yes, it does. Any name can be simply resolved to a class member with single

1070 all such functions are resolved (statically) for actual objects. Formal object

response

1611 groundwork for technology response to Request for Proposals (RFP)

1621 contained response to the Request for Proposals (RFP) issued by

retailers

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

1795 retailers can distribute to end users throughout headquarters, all chain

return

650 return one + two;

1571 index (return a list of all available files)

reviews

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

rfp

1611 groundwork for technology response to Request for Proposals (RFP)

1621 contained response to the Request for Proposals (RFP) issued by

road

1651 110 Spit Brook Road

2101 3245 Platt Springs Road

robust

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

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

roong-ko

2497 Doong, Roong-Ko and Phyllis G. Frankl, "Case Studies on Testing

2505 Frankl, Phyllis G. and Roong-Ko Doong, "Tools for Testing

roots

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.

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.

routines

484 class diagram, all routines and structure available in class Computer are

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

rules

106 * all instances are subject to and conform to the same rules"

398 combinations of state and environment (sometimes with complex rules).

rumbaugh's

760 work. Many other methodologies including Rumbaugh's OMT, Martin and Odell's

1044 Rumbaugh's Definition [Rumbaugh 91, p. 2]:

's

600 the method operates on. An exception exists with C++'s static member functions

1041 C++). [Stroustrup 91, p. 136] has an example of polymorphism with void *'s,

safe

1121 safe programs and dynamic typing providing multiple-polymorphism [Agrawal 91]

1130 is even being considered for the C++ standard. A similar facility to safe

sale

2016 NCR Cooperative Frameworks(TM) were first released for sale

2690 agreement. It is not currently for sale. If you are interested,

sather

1201 Signatures), Sather (originally Eiffel-based), and an Eiffel superset

1311 Sather

satisfy

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.

1174 satisfy the operations or type constraints of a polymorphic object (subtype

satisfying

265 object other than the receiver is only satisfying an abstract type interface,

919 object (possibly satisfying some implicit or explicit type constraints

scalability

1783 eventually provide users with complete scalability, portability and

2199 scalability

scenarios

112 to identifying objects through use-cases (scenarios), leading to a use-case

752 model (e.g. FUSION, Jacobson), scenarios (Rumbaugh), or use-cases (Jacobson).

scoping

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.

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

scripting

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.

2220 SecurityTM, DOMEshellTM scripting and prototyping language, and the

seamless

815 the process is often referred to as seamless, meaning there is no conceptual

890 equivalence" with the RW than other methodologies), a consistent and seamless

sei-

855 SEI-92-TR-24

862 SEI-93-TR-9.

self-sufficient

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.

seminal

784 Boehm's seminal work on the Spiral Model:

791 software development. [Boehm 86] presents a seminal spiral life-cycle model

sense

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".

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....".

separately

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.

1767 integrated set of services that can be used separately or together to

separating

1172 By separating type from class, or representation (or perhaps separating class

separation

1151 2.7) What Is A Separation Between Type And Class (Representation)? (Typing - Object-Oriented Technology)

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

shaker

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

2450 - Doug Shaker

sharing

197 sharing and often instances will simply delegate to parents to access methods

2402 sharing and carrying expensive performance costs when complex objects are

ships

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++.

1957 code examples it ships with the product to help developers learning how to use

shown

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

404 An example of the is-a-kind-of relationship is shown below. Is-a is often

signature

437 and by accessing the first signature match (or ambiguity) encountered for

1181 templates), as any method matching a required signature is accepted,

simplicity

645 used in languages with static typing for simplicity and efficiency

1010 simplicity. See also section 2.7.

situations

526 supported by dynamic multiple inheritance (DMI) in many situations.

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

sketchpad

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".

sliced

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

505 sliced replacement in a statically typed environment (see section 2.1).

slot

442 "slots" (instance variables) with the same name into a single slot, as did

469 with the same name will be shared (receive a single slot) with the greatest

slots

389 provide this as a default at the level of slots and features, respectively).

442 "slots" (instance variables) with the same name into a single slot, as did

smaller

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.

2538 large projects. Intuition gained from smaller projects

smalltalk-based

885 Simula). Self is somewhat of a Smalltalk-based next generation language, as is

1811 Distributed Smalltalk-based applications on a single system;

source

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.

1228 efficiency tradeoff), and sources can cause inlining and create source code

space

1227 space

2262 Disk space and memory requirements are dependent on the installation

specialize

357 only define new frameworks but to specialize existing system frameworks

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

staff

2252 staff of fully trained professionals ensures "real world" responses

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

standards-based

1785 This is part of the companies' planned approach toward a standards-based,

1942 straightforward, standards-based model.

starting

292 He advocates starting with the former approach, turning to the second approach

1054 respond in whatever way the object has defined (usually starting from its most

steps

786 * It assumes a relatively uniform and orderly sequence of development steps

833 by specifying steps for organizations to progress to the next level, ultimately

steve

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

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."

strachey

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

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

stream

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

2060 - Persistence - the same object stream model for

strooper

2517 Hoffman, Daniel and Paul Strooper. A Case Study in Class Testing.

2525 Hoffman, D.M. and P.A. Strooper. Graph-Based Class Testing. In

stroustrup's

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

1035 > Stroustrup's Definition [Stroustrup 90, p. 209]:

stuff

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....".

2460 I just collate the stuff that is sent to me by people who REALLY know

subscribe

132 with the HEADING "subscribe".

870 subscribe firstname, lastname, e-mail address.

substitute

673 signatures with the methods they substitute (as in C++) or allowing covariant

2369 counting an inadequate substitute for true GC.

subtypes

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

986 (intensional) approach (where subtypes are supersets of (contain) supertypes).

suffer

69 verbs).] This problem may cause OOP to suffer more convoluted solutions than procedural programming.

2294 interpreters often suffer from this. The usual result is that the

suggestions

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

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

suitedome

1691 > SUITESOFTWARE (SuiteDOME)

2120 CORBA Implementation Descriptions: SUITESOFTWARE (SuiteDOME)

superior

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."

2420 superior real-time performance as manual management usually has difficulty

supertypes

552 - Types may inherit attributes from supertypes.

986 (intensional) approach (where subtypes are supersets of (contain) supertypes).

supplies

2133 distributed, heterogeneous environment, supplies the functions that

2227 supplies the means for consolidating data for specific applications.

supply

141 languages such as C++, although the new RTTI facility will supply simple

1491 The authors, regretfully, cannot supply ftp, postscript, TEX, or

supporting

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.

1424 See APPENDIX D for CASE systems supporting these methodologies (several from

survey

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.

2598 Includes a survey of existing literature on testing of OO

sutherland

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".

svr

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

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

switching

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

655 switching to the "fn" function based on the type of "one" also. This could

syntactically

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.

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.

table

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.

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.

takes

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.

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

tasks

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.

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".

tcat

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

tcp

1879 TCP

2034 - supports TCP

technically

64 There are also object databases that can be used to replace RDBMSs, but these have not been as technically and commercially successful as RDBMSs.

1594 Technology developments, both technically and commercially. First

telephone

1871 Telephone: +44 (0) 1926 833488 Fax: +44 (0) 1926 883370.

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

testable

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

2467 also be testable under different OS configurations, different compiler

tested

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

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

tests

2522 example is worked out in C++ which tests a commercial class.

2666 systems and so allow full portability of tests between these

toolkits

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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]