text.skipToContent text.skipToNavigation

Introduction to Object-Oriented Programming, An, 3rd edition

  • Timothy Budd

Published by Pearson (October 12th 2001) - Copyright © 2002

3rd edition

Unfortunately, this item is not available in your country.

Overview

In An Introduction to Object-Oriented Programming, Timothy Budd provides a language-independent presentation of object-oriented principles, such as objects, methods, inheritance (including multiple inheritance) and polymorphism. Examples are drawn from several different languages, including (among others) C++, C#, Java, CLOS, Delphi, Eiffel, Objective-C and Smalltalk. By examining many languages, the reader is better able to appreciate the general principles that lie beyond the syntax of the individual languages. KEY TOPICS: This new edition presents examples drawn from a wider range of languages, including Eiffel, CLOS, and Python in addition to the mainstream languages, as well as extensive comparisons between C++, C# and Java. Case studies explore the application of polymorphism in the STL in C++ and the AWT in Java. UML notation and diagrams are integrated and utilized throughout. The book also features advanced sections on design patterns, reflection and introspection, network programming, and the implementation of object-oriented languages. MARKET: This book is appropriate for programmers looking to read about the theory behind and functionality of a variety of object-oriented programming languages. It is also useful as a reference.

Table of contents



1. Thinking Object-Orineted.

Why is OOP Popular?

Language and Thought.

A New Paradigm.

A Way of Viewing the World.

Computation as Simulation.

A Brief History.


2. Layers of Abstraction.

Layers of Abstraction.

Other Forms of Abstraction.

A Short History of Abstraction Mechanisms.


3. Object-Oriented Design.

Responsibility Implies Noninterference.

Programming in the Small and in the Large.

Why Begin with Behavior.

A Case Study in RDD.

CRC Cards-Recording Responsibility.

Components and Behavior.

Software Components.

Formalize the Interface.

Designing the Representation.

Implementing Components.

Integration of Components.

Maintenance and Evolution.


4. Classes and Methods.

Encapsulation.

Class Definitions.

Methods.

Variations on Class Themes.


5. Messages, Instances, and Initialization.

Message-Passing Syntax.

Accessing the Receiver from Within a Method.

Object Creation.

Pointers.

Memory Recovery.

Constructors.

Constant Values.

Destructors and Finalizers.

Metaclasses in Smalltalk.


6. A Case Study: The Eight Queens Puzzle.

The Eight-Queens Puzzle.

Using Generators.

The Eight-Queens Puzzle in Each Language.


7. A Case Study: A Billiards Game.

The Elements of Billiards.

Graphical Objects.

The Main Program.

Using Inheritance.


8. Inheritance and Substitution.

An Intuitive Description of Inheritance.

Subclass, Subtype, and Substitution.

Interfaces.

Forms of Inheritance.

Inheritance in Various Languages.

Inheritance and Constructors.

The Benefits of Inheritance.

The Costs of Inheritance.


9. Case Study - A Card Game.

The Class Playing Card.

Data and View Classes.

The Game.

Card Piles-Inheritance in Action.

Playing the Polymorphic Game.

The Graphical User Interface.


10. Subclasses and Subtypes.

Substitutability.

Subtypes.

The Substitutability Paradox.

Is This a Problem?

Dynamically Typed Languages.

Pre and Post-conditions.

Scandinavian Semantics.


11. Static and Dynamic Behavior.

Static versus Dynamic Typing.

Static and Dynamic Classes.

Static versus Dynamic Method Binding.


12. Implications of Substitution.

Memory Layout.

Assignment.

Copies and Clones.

Equality.


13. Multiple Inheritance.

Inheritance as Categorization.

Problems Arising from Multiple Inheritance.

Multiple Inheritance of Interfaces.

Inheritance from Common Ancestors.

Inner Classes.


14. Polymorphism and Software Reuse.

Polymorphism in Programming Languages.

Mechanisms for Software Reuse.

Efficiency and Polymorphism.

Will Widespread Software Reuse Become Reality.


15. Overloading.

Type Signature and Scopes.

Overloading Based on Scopes.

Overloading Based on Type Signatures.

Redefinition.

Polyadicity.

Multi-Methods.


16. Overriding.

Notating Overriding.

Replacement versus Refinement.

Deferred Methods.

Overriding versus Shadowing.

Covariance and Contravariance.

Variations on Overriding.


17. The Polymorphic Variable.

Simple Polymorphic Variables.

The Receiver Variable.

Downcasting.

Pure Polymorphism.


18. Generics.

Template Functions.

Template Classes.

Inheritance in Template Arguments.

Case Study-Combining Separate Classes.


19. Container Classes.

Containers in Dynamically Typed Languages.

Containers in Statically-Typed Languages.

Restricting Element Types.

Iteration.


20. A Case Study: The STL.

Iterators.

Function Objects.

Example Program-An Inventory System.

Example Program-Graphs.

A Concordance.

The Future of OOP.


21. Frameworks.

Reuse and Specialization.

Example Frameworks.


22. An Example Framework: TheAWT and Swing.

The AWT Class Hierarchy.

The Layout Manager.

Listeners.

User Interface Components.

Case Study: A Color Display.

The Swing component Library.


23. Object Interconnections.

Coupling and Cohesion.

Subclass Clients and User Clients.

Control of Access and Visibility.

Intentional Dependency.


24. Design Patterns.

Controlling Information Flow.

Describing Patterns.

Iterator.

Software Factory.

Strategy.

Singleton.

Composite.

Decorator.

The Double-Dispatching Pattern.

Flyweight.

Proxy.

Façade.

Observer.


25. Reflection and Introspection.

Mechanisms for Understanding.

Methods of Objects.

Mechanisms for Modification.

Metaclasses.


26. Network Programming.

Addresses, Ports, and Sockets.

A Simple Client/Server Program.

Multiple Clients.

Transmitting Objects over a Network.

Providing More Complexity.


27. Implementation.

Compilers and Interpreters.

The Receiver as Argument.

Inherited Methods.

Overridden Methods.

Name Encoding.

Dispatch Tables.

Bytecode Interpreters.

Just-in-Time Compilation.


A. Source for the Eight-Queens Puzzle.

Eight-Queens in Apple Object Pascal.

Eight-Queens in C++.

Eight-Queens in Java.

Eight-Queens in Objective C.

Eight-Queens in Smalltalk.


B. Source for the Billiards Game.

The Version without Inheritance.

The Verstion with Inheritance.


C. Source for the Solitaire Game.


Glossary.

For teachers

All the material you need to teach your courses.

Discover teaching material