Group: object-oriented programming

topics > computer science > Group: programming

type inheritance

design pattern
frozen representation
object-oriented classes
object-oriented databases
object-oriented data types
object-oriented fields
object-oriented methods
object-oriented objects
object-oriented packages
object serialization
optimization of object-oriented programs
type reflection and introspection
types of object-oriented classes
derived data types
graphical user interface
program module
types of programming languages

actor machines
data type as constructors, selectors, and predicates
frozen representation
collection class
data flow languages
interface type
object transformation language
object-oriented design
object-oriented modelling language
object-oriented prototypes
parameter passing by message
pattern language
program web
programming with a database of modules
reusable programming
sending an object across a network
software components
software models of reality
user interface tool kits


The language Smalltalk is the best example of object-oriented programming. Each actor is an object with membership in a class. The objects receive messages and perform message analysis based on their class definition. Messages are analyzed one token at a time allowing arbitrary actions and arbitrary messages to other objects. Command languages often use a similar message facility for parameter passing to program files.

Advantages-- Textual messages provide a universal interface for developing independent program tools. But Smalltalk's real advantage is its user interface. It has symbolic characters, display windows, a mouse, and walk through construction. (cbb 5/80)

Object-oriented programming is abstract data types combined with inheritance via a class hierarchy and dynamic binding of procedure names. It emphasizes the global structure of a program. It is best suited for incremental compilation and rapid development. It has had a long history. Simula is generally credited as being the first use of the ideas. (cbb 4/89)

Subtopic: what is object-oriented programming? up

Quote: Smalltalk: everything we can describe can be represented by the recursive composition of behavioral building blocks [»kayA3_1993]
Quote: Ruby is a pure, untyped, object-oriented language with metaclasses, iterators, closures, reflection, run-time extension, dynamic loading, marshalling, threads, exceptions, garbage collection [»thomD1_2001]
Quote: object orientation is encapsulation + abstraction + polymorphism; groups object state and operations with information hiding [»nicoJR6_1993]
Quote: object-oriented programming: decide on classes; provide a full set of operations for each class; sub-classes will inherit these operations [»stroB5_1989]
Quote: a programming language is object oriented if it has inheritance and object based if it has objects [»chinRS3_1991]
Quote: C++ is a general purpose programming language for enjoyable programming by serious programmers [»stroB_1991]
QuoteRef: wegnP8_1990 ;;thorough review of object-oriented programming.

Subtopic: theory of objects up

Quote: a theory of objects as a foundation for object-oriented programming; like lambda calculus but based on objects as primitives; handles classes, self, dynamic dispatch, inheritance, etc. [»abadM_1996]
Quote: delegation-based object languages like Self and Cecil now distinguish trait objects (like classes), prototype objects (for cloning), and normal objects; enforceable [»abadM_1996]

Subtopic: object-orientation as abstraction up

Quote: object-oriented programming directly supports abstraction by classification/instantiation, aggregation/decomposition, generalization/specialization, grouping/individualization [»taivA9_1996]
Quote: prefer object-orientation implementation for shared systems; encapsulates state in a class; avoids globals [»kampPH7_2004]

Subtopic: object-oriented as data up

Note: object-oriented programming converts case statements into procedure calls, organized by data [»cbb_1990, OK]

Subtopic: object-oriented as encapsulation up

Quote: a behavioral building block hides its combination of state and process inside itself, with access only through messages
Quote: an object's data may only be examined or modified through its operations
Quote: object-oriented abstraction disciminates the operation vs. representation for abstract data type
Quote: if restrict access to a data structure then only member functions can modify the data, cause illegal values, and define how to use the data [»stroB_1991]
Quote: OS 6 streams are first class objects; assign to variables, use as parameters, returned by stream functions; e.g., RemoveLayoutChs to remove layout from a stream [»stoyJE3_1972]

Subtopic: object-oriented as local state up

Quote: with object-oriented programming, long argument lists and global variables become local state [»stroB_1994]
Quote: an object implements an abstract data type with a private, mutable state and public operations on the state [»taivA4_1993]

Subtopic: object-oriented as late binding up

Quote: progress in software often concerns late-binding; e.g., index registers, behaviors instead of state/processes, portability, distributed systems [»kayAC_1996]
Quote: module communication by data coupling allows the definition of reusable black boxes; pass actual data or its location [»joneTC4_1979b]

Subtopic: object-oriented as explicit types up

Quote: object-based programs use objects that contain type information [»stroB_1991]
Quote: with indirect threaded code, the address for operand fetch identifies the data type of a value; similar to object-oriented programming [»dewaRB6_1975]
Quote: Hypertext, frame-based AI systems, and object-based systems are similar: typed, slotted, linked entities [»halaFG7_1988]

Subtopic: object-oriented as inheritance up

Quote: object oriented programming is objects and inheritance; abstract data types are too restrictive [»taivA4_1993]
Quote: the use of inheritance for conceptual specialization is rarely realized [»taivA9_1996]
Quote: subsumption is the property that a value of type A is also a value of any supertype B with A<:B [»abadM_1996]

Subtopic: object-oriented vs. process paradigm up

Quote: object-oriented emphasizes global structure while process paradigm insists that all data is local [»stroR10_1986]
Quote: both object-oriented and process paradigms based on message passing with clear separation between interface and implementation

Subtopic: object-oriented vs. functional paradigm up

Quote: object-oriented programming is the antithesis of functional programming; i.e., mutable object state vs. immutable, eternal values [»taivA4_1993]

Subtopic: history up

Quote: object-oriented programming started in 1949 with using Monte_Carlo methods for a heavy water reactor [»nygaK10_1983, OK]
Quote: object-oriented programming originated from Simula for modeling the concepts of an application domain [»taivA9_1996]
Quote: Smalltalk is based on object-oriented processing and a bitmap for visual display [»ingaDH8_1981a]
Quote: HyperCard scripts based on messages send to objects with inheritance [»willG12_1987]
Quote: OOPC programs are almost as efficient as C because primitive operations are handled in C [»coxBJ1_1983]
Quote: operating system research influenced C++: protection from access rights, initialization from capabilities, const from read/write access protection, exception handling from fault-tolerant systems [»stroB_1994]
Quote: Sketchpad can perform basic operations on any drawing part (e.g., display); allows changing the specific details without changing the general parts [»suthIE5_1963]
Quote: Sketchpad includes general functions that are independent of type; e.g., expand an instance of a subpicture; powerful [»suthIE5_1963]
Quote: classes are a remodeling of records; hierarchical tree structure; members are objects; the prefix of a subclass is the higher level class [»dahlOJ_1967]

Subtopic: examples up

Quote: using MacApp for Intermedia, guarantees common functionality
Quote: developed Intermedia quickly by using object-oriented techniques [»yankN1_1988]
Quote: the local structure of Mesa is like Pascal; its global structure is like Simula 67; used a lot [»gescCM8_1977]
Quote: Amoeba is an object-oriented distributed operating system [»vanrR10_1988]
Quote: reimplemented in C++ to reduce the amount of code needed for new editors [»wyboN4_1990]

Subtopic: implementation up

Quote: Squeak usually uses one word of overhead per object, incremental garbage collection, bulk-mutation, extended BitBlt, multi-media
Quote: Squeak is a Smalltalk implementation written entirely in Smalltalk with a translator to generate a C program [»ingaD10_1997]
Quote: indirect threaded code consists of addresses of data that includes addresses of library routines. Compared to direct threaded code, it is machine independent, smaller, and faster [»dewaRB6_1975]
Quote: SmallEiffel uses global type inference to replace late binding with direct calls to concrete code; efficiently handles multiple inheritance, genericity, dead code [»zendO10_1997]

Subtopic: hardware support up

Quote: can provide hardware support of object types and their operations [»rattJ3_1982]

Subtopic: productivity up

Quote: with MacApp can build Intermedia applications in a few weeks [»yankN1_1988]
Quote: C++ simplified maintenance; common user interface idioms were defined in one place; bug fixes propagated to all editors [»wyboN4_1990]
Quote: while difficult to create the first display type for a class, additional display types are easy and generating a display is quick [»maieD1_1986]

Subtopic: efficiency up

Quote: after optimization, C++ is about 10% slower than C because of procedure call mechanics and the large number of procedure calls [»blakBA3_1996]
Quote: Self programs run 5 times faster than other pure object-oriented languages and 2-3 times slower than optimized C [»ungaD10_1992]

Subtopic: problems with productivity up

Quote: students of C++ took a surprisingly long time to develop simple programs; code reuse and development time do not appear to be lower for C++ than for C [»blakBA3_1996]
Quote: object-oriented programming leads to a modest increase in productivity
Quote: no difference in productivity for procedural vs. object-oriented development
Quote: many experienced programmers were not able to learn object-oriented programming; needed experience with hardware, finite-state machines, or event loops [»mariB5_1996]
Quote: managing large class libraries is hard; low productivity due to many words, dialects, and inconsistent rules [»mariB5_1996]

Subtopic: problems with maintenance up

Quote: objects without significant reuse seemed far worse than traditional software-development methods; only their creators could maintain them and even then, with considerable difficulty [»mariB5_1996]
Quote: the strong typing of most object-oriented languages encourages narrowly defined packages that are hard to reuse [»oustJK3_1998]
Quote: C++ bugs took twice as long to correct as C bugs; C++ failure may be a long way away from the error [»hattL5_1998]
Quote: components involved in inheritance had six times more defects than those without [»hattL5_1998]
Quote: object-oriented paradigm best for writing systems that can be understood by one person [»stroR10_1986]
Quote: in Smalltalk, a function's code is spread over many objects of many classes; must piece these together to understand the system [»nielJ5_1989]
Quote: Smalltalk has fallen into the hacker trap of too many features; these overwhelm the novice [»nielJ5_1989]
Quote: limit application developers to aggregation and encapsulation; only experts should subclass via inheritance and additive specialization
Quote: class-library size can grow rapidly [»mariB5_1996]

Subtopic: problems with object-oriented programming up

Quote: fine-grain objects provide a uniform environment and consistent data model; but high overhead for object management and invocation [»chinRS3_1991]
Quote: control flow must be explicitly represented separately from class behaviors; use state-transition matrix [»mariB5_1996]
Quote: object-oriented development requires incremental compilation

Group: object-oriented programming up

Group: type inheritance   (13 topics, 394 quotes)

Topic: design pattern (17 items)
Topic: frozen representation (6 items)
Topic: object-oriented classes (67 items)
Topic: object-oriented databases (15 items)
Topic: object-oriented data types (29 items)
Topic: object-oriented fields (28 items)
Topic: object-oriented methods (42 items)
Topic: object-oriented objects (39 items)
Topic: object-oriented packages (6 items)
Topic: object serialization (13 items)
Topic: optimization of object-oriented programs (16 items)
Topic: type reflection and introspection (28 items)
Topic: types of object-oriented classes
(18 items)

Related Topics up

Group: derived data types   (9 topics, 119 quotes)
Group: graphical user interface   (24 topics, 512 quotes)
Group: program module   (10 topics, 336 quotes)
Group: types of programming languages   (29 topics, 611 quotes)

Topic: actor machines (2 items)
Topic: classification (65 items)
Topic: data type as constructors, selectors, and predicates (20 items)
Topic: frozen representation (6 items)
Topic: collection class (11 items)
Topic: data flow languages (33 items)
Topic: interface type (50 items)
Topic: object transformation language (10 items)
Topic: object-oriented design (30 items)
Topic: object-oriented modelling language (6 items)
Topic: object-oriented prototypes (39 items)
Topic: parameter passing by message (31 items)
Topic: pattern language (9 items)
Topic: program web (8 items)
Topic: programming with a database of modules (94 items)
Topic: reusable programming (77 items)
Topic: sending an object across a network (11 items)
Topic: software components (11 items)
Topic: software models of reality (24 items)
Topic: user interface tool kits
(31 items)

Updated barberCB 3/06
Copyright © 2002-2008 by C. Bradford Barber. All rights reserved.
Thesa is a trademark of C. Bradford Barber.