Objects Unencapsulated: Java, Eiffel, and C++
Ian Joyner, Macquarie University, Australia

ISBN-10: 0130142697
ISBN-13: 9780130142696

Publisher: Prentice Hall
Copyright: 1999
Format: Paper; 416 pp
Status: Out of Print

Suggested retail price: $59.00
Buy from myPearsonStore

BASIC APPROACH PLEASE PROVIDE COURSE INFORMATION

A critical look at the strengths and inherent weaknesses of today's object-oriented languages.

  • How language featuresreallyimpact programmer effectiveness -- for better and for worse.
  • Extensive examples from C++, Java, and Eiffel.
  • A clear roadmap for building better code -- and better languages.



Preface.


Structure of the Book.


About C++ Code Examples.


Acknowledgments.


Why Should We Be Concerned?


1. Language Principles.

Programming. Communication, Abstraction, and Precision. Notation. Tool Integration. Correctness. Types. Flexibility, Correctness, and Reuse. Redundancy and Checking. Encapsulation and Implementation Hiding. Safety and Courtesy Concerns. Implementation and Deployment Concerns. Why OO? On Programming Language Evolution. The Usefulness of Mathematics. Legacy Systems.



2. Entities and Types.

From Bits to Semantics. Basic Structures: The Class. Usefulness of Grammars. Classes and Types. Structs (C++). Typedefs (C++). Global Environments. Class Metadata. Obsolete (Eiffel). Invariants (Eiffel). Components.



3. Modules and Imports.

Namespaces (C++). Clusters (Eiffel). Packages (Java). Header Files (C++). Import (Java). ACE Specification (Eiffel). Separate or Integrate?



4. Members and Features.

Basic Structures. Members (C++ and Java). Anonymous Parameters in Class Definitions (C++). Default Arguments (C++). Local Entity Declarations (Java and C++). Inlines (C++). Pointers and References (C++). Declarations and Definitions (C++). Scope. Constants. Static (C++). Once Routines. Class Variables and Redefinition.



5. Type Extension: Inheritance and Virtuals.

Basic Structures: Inheritance and Derived Classes. The Nature of Inheritance. Multiple Inheritance. Virtual Classes (C++). Nested Classes (Java and C++). Polymorphism and Inheritance. Union. Enumeration Types. Name Overloading. Virtual Functions (C++). Pure Virtual Functions (C++). Function Overloading (C++ and Java). Virtuals and Inlining.



6. Type Extension: Generics and Templates.

Basic Structures. C++ Syntax. Constrained Genericity. Genericity and Code Bloat. An Alternative Form of Genericity. Java and Genericity. Some Theory on Genericity. Genericity and Covariance.



7. Interfaces and Access Control.

7.1 Basic Structures. Friends (C++). Controlled Exports vs. Friends. Multiple Interfaces. External Assignment (C++ and Java). Export Controls and Nesting. Mutable Const (C++). Generalization.



8. Constructors, Destructors, and Other Operators.

Nameless Constructors (C++). Default Constructors (C++ and Java). Constructor Inheritance. Expanded Initialization (Eiffel). Constructor Initialization (C++). Destructors (C++). Dispose (Eiffel). Operator = (C++). and -> (C++). Delete and Delete [] (C++). Prefix and Postfix Operators (C++). || and && (C++). Operator Overloading (C++ and Eiffel). Implicit Conversions and Overloading (C++). Calling Parent Features. Calling Descendant Features. Conditional Expressions.



9. Casts.

Type Casts (C++). RTTI and Type Casts (C++). New Type Casts (C++). Type Inference. Java and Casts. Signature Variance (Eiffel).



10. Compile Time.

Global Analysis. Type-Safe Linkage (C++). Class Interfaces.



11. Run Time.

Concurrency - It’s about Time! Garbage Collection. Constructors and Temporaries (C++). Bad Deletions (C++). Slicing (C++). Program Execution. Dynamic Linking. Exception Handling. LinkageError (Java).



12. Other Details.

Comments. Hexadecimal Literals (Eiffel). Double, Double Toil and Trouble. Class Header Declarations (C++).



13. Projects, Design, and Other Factors.

Design by Contract. Preconditions, Types, and Invariants. The Software Life Cycle. CASE Tools. Reusability and Communication. Reusability and Trust. Reusability and Compatibility. Reusability and Portability. Reusability and Size. Idiomatic Programming. Low-Level Coding. Knowing the Correct Construct. Efficiency and Optimization. Standardization, Stability, and Maturity. Complexity. C++: The Overwhelming OOL of Choice?



14. General Issues.

Pointers. Booleans. Logical and Bitwise Operators. Arrays. Function Arguments. void and void*. NULL vs. 0. char; signed and unsigned. void fn () 340. fn (). fn (void). return. Switch Statements. Metadata in Strings. ++, --. Assignment Operator. Assignment Expressions. Defines. Case Sensitivity. Semicolons. Comments. Cpaghe++i.



Bibliography.


WEBliography.


Bibliographic Index.


Index.

Ian Joyner is a member to the Object Technology Group at the Microsoft Research Institute at Macquarie University in Australia. He has been practicing-and critiquing-object-oriented software since 1979.


1426J-2

Object technology appears to be a bewildering field in constant turmoil. But the core concepts of object-oriented programming endure as a paradigm for advanced programming methodology. By analyzing and comparing three different object-oriented languages, Objects Unencapsulated probes the core of object technology to examine how various language features affect software productivity.

Objects Unencapsulated examines and compares the strengths and weaknesses of Java, Eiffel, and C++. Topics covered include:

  • Objects, classes, modules, and types.
  • Features and interfaces.
  • Inheritance and genericity.
  • Concurrency and garbage collection.

Grounded by his belief that true innovation demands constant re-evaluation, Ian Joyner strips away the superficial distinctions between these languages to find the essence of object-oriented programming. He explains the facts behind the many controversies that an object-oriented practitioner constantly faces. By explaining some essential theory in practical terms, Objects Unencapsulated exposes the principles of the object-oriented paradigm.

View a Sample Chapter PDF: /samplechapter/0130142697.pdf

Pearson Higher Education offers special pricing when you choose to package your text with other student resources. If you're interested in creating a cost-saving package for your students, contact your Pearson Higher Education representative for pricing and ordering information.

Pearson Higher Education offers special pricing when you choose to package your text with other student resources. If you're interested in creating a cost-saving package for your students contact your Pearson Higher Education representative.


Copyright ©2008 Pearson Education. All rights reserved. Legal Notice | Privacy Policy | Permissions