Object Oriented Programming

An Evolutionary Approach

Brad J. Cox

Publisher: Addison-Wesley, 1994, 274 pages

ISBN: 0-201-10393-1

Keywords: Programming

Last modified: April 6, 2021, 7:53 a.m.

This book explores the importance of object-oriented programming and how it can be put to work in an evolutionary, rather than revolutionary, fashion. Object-oriented programming departs from conventional programming by emphasizing the relationship between consumers and supplies of codes, rather than the relationship between a programmer and his code. Author Brad Cox introduces the term "Software-IC" in the text, a method by which software developers can encapsulate tested code and reuse it in future projects. This eliminates having to re-code each line from scratch, and allows the productivity of software designers to grow significantly.

The text explains that Software-IC technology does not mean that companies need to discard their massive investment in conventional programming. Instead, Cox discusses how this new technology can be installed on top of conventional languages like C, Pascal, FORTRAN, and Ada.

Highlights:

  • Describes the development of an object-oriented C language compiler.
  • Show how to build a comprehensive library of reusable objects, and constructs several sample applications from objects in the library.
  • Describes a simple precompiler that turns the C language into a tool for programming Smalltalk-80 style objects.
  • Provides detailed cost/benefit comparison between object-oriented programming and conventional programming
  • Shows how to build iconic user interfaces based on high-resolution graphics terminals
  1. System Building
    • What Is System Building?
    • Software Crisis
    • Change: The Enemy
    • Minot Line Defense
    • Swiss Defense
    • Hybrid Defense
    • Object-oriented Programming
    • Summary
  2. Why Object-oriented Programming?
    • Software Productivity
      • Bulk Is Bad
      • Surface Area Is Bad
    • Unique Words
      • Packaging Technology: UNIX Pipes/Filters
      • Packaging Technology: Subroutine Libraries
      • Packaging Technology: Software-ICs
      • Discussion
    • Binding Time and Coupling Strength
      • Static Binding and Tightly Coupled Collections
      • Dynamic Binding and Loosely Coupled Collections
    • Software-IC Implications
    • Summary
  3. What Is Object-oriented Programming?
    • Smalltalk-80
      • Virtual Machine
      • Programming Language
      • Messages
      • Blocks
      • Programming Environment
      • Smalltalk Is Clearly the Solution, But What's the Problem?
    • Ada
      • Object-oriented features of Ada
      • Packages
      • Discussion
    • C++
      • Bell Laboratories
      • Classes
      • Friend Functions
      • Member Functions
      • Derived Classes
      • Operator Overloading
      • Memory Management
      • Separate Compilation
    • Summary
  4. Objects, Messages, and Encapsulation
    • Objects, Messages, and Encapsulation
    • Objective-C
    • Object Identifiers
    • Message Expressions
      • Unary Message Expressions
      • Keyword Message Expressions
      • Message Expression Types
    • Factory Objects
    • Examples
      • Pen Example
      • PencilCup Example
    • Summary
  5. Classes, Inheritance, and Class Categories
    • Classes
      • Instances
      • Parts of an Object
      • Instantiation
    • Inheritance
    • Software-ICs
    • Class Description File
    • Inheritance: The Implementation
      • Inheritance of Instance Variables
      • Inheritance of Instance Methods
      • Inheritance of Factory Methods
    • Methods
      • Instance Methods
      • Self
      • Factory Methods
      • Super
      • Inheritance and Encapsulation in Combination
    • Compiling and Linking
      • Categories
      • Working with Multiple Categories
      • Implementation
      • Multiple Inheritance
    • Summary
  6. DependencyGraph Exercise
    • Information Networks
      • Catalogs
      • Specification Sheets
      • Engineering Know-how
    • DependencyGraph Application
    • Design Phase
      • Blueprinting
      • Decide Interface to Consumers
      • Retrospective: Object-oriented Design
    • Implementation Phase
      • Software-IC Library
      • Graph Class: Graph.m
      • Node Class: Node.m
      • Driver Routine: mGraph.m
    • Measuring Costs and Benefits
      • Source Bulk Comparison
      • Binary Bulk Comparison
      • Execution Bulk Comparison
      • Execution Speed Comparison
    • Summary
  7. Foundation Classes
    • Overview
    • Object Class
      • Data Declarations
      • Allocation/Deallocation Methods
      • DependencyGraph Revisited
      • Utility Methods
      • Activation/Passivation
      • Comparing
      • Computed Selectors
      • Error Handling
    • Array Classes
    • ByteArray Class
    • IdArray Class
    • Messager
    • Summary
  8. Collection Classes
    • Collections
    • Collection Class
      • Allocation/Deallocation
    • Sequence Class
    • OrderedCollection Class
    • Set Class
      • Combining
    • Summary
  9. Iconic User Interfaces
    • Object-oriented Languages and Iconic User Interfaces
    • User Interface Architecture
    • Make
    • Workbench
      • Application Layer
      • Virtual Terminal Layer
      • Presentation Layer
    • A Tour of the WorkBench User Interface
      • Generic Application
      • Initialization
      • Building a View Hierarchy
      • Defining Application-specific Views
      • Cutting and Fitting
      • Adding Paint to Transparent Views
      • Responding to Events
      • Selecting Views
      • Erasing Displayed Images
      • Dependencies Between Views
      • And On and On
    • What Do Iconic Interfaces Cost to Build and to Use?
      • Source Bulk
      • Executable Bulk
    • Summary
  10. Different Tools for Other Jobs
    • Heap Compaction and Automatic Garbage Collection
      • Object Tables
    • Automatic Garbage Collection
      • Mark and Sweep
      • Reference Counting
    • Virtual Object Memories
      • How Big Is Global?
      • Capability Addressing
    • Concurrency
      • Coroutines
    • Distributed Systems
    • Coordination Systems
  • Appendix A: Specification Sheets
    • Array: Abstract Array Superclass
    • ByteArray: Array of Characters
    • Collection: Abstract Collection Class
    • IdArray: Array of Object References
    • Object: Abstract Class of All Objects
    • OrderedCollection: Ordered Collection Class
    • Sequence: Enumeration over Collections and IdArrays
    • Set: The Class of Sets
  • Appendix B: Hand-coded DependencyGraph Application
    • Declaration File: Gr.h
    • Node Class: Node.m
    • Graph Class: Graph.m
    • Set Class: Set.m

Reviews

Object Oriented Programming

Reviewed by Roland Buresund

Disappointing *** (3 out of 10)

Last modified: May 21, 2007, 3:16 a.m.

A contrived try to add OO technology to C, Fortran, Pascal, etc. Avoid.

Comments

There are currently no comments

New Comment

required

required (not published)

optional

required

captcha

required