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

Published by Pearson (October 12, 2001) © 2002

  • Timothy A. Budd Oregon State University
$165.32

  • Hardcover, paperback or looseleaf edition
  • Affordable rental option for select titles

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.

  • NEW! Extensive comparisons between C++, C# and Java.
  • NEW! Integration and utilization of UML notation and diagrams.
  • NEW! An expanded discussion of the subclass/subtype distinction.
  • NEW! An in-depth exploration of multiple inheritance as it is used in several recent object-oriented languages, including multiple interfaces and nested classes.
  • NEW! Examples drawn from a wider range of languages, including Eiffel, CLOS, and Python in addition to the mainstream languages.
  • NEW! A greatly expanded exploration of the various forms of polymorphism found in object-oriented languages.
  • NEW! An investigation of the way polymorphism is used in the creation of software frameworks.
  • NEW! Case studies that explore the application of polymorphism in the STL in C++ and the AWT in Java.
  • NEW! Advanced sections on Design Patterns, Reflection and Introspection, Network programming, and the Implementation of Object-Oriented Languages.


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.

Need help? Get in touch

Video
Play
Privacy and cookies
By watching, you agree Pearson can share your viewership data for marketing and analytics for one year, revocable upon changing cookie preferences. Disabling cookies may affect video functionality. More info...

Pearson eTextbook: What’s on the inside just might surprise you

They say you can’t judge a book by its cover. It’s the same with your students. Meet each one right where they are with an engaging, interactive, personalized learning experience that goes beyond the textbook to fit any schedule, any budget, and any lifestyle.Â