
Objects Unencapsulated
Java, Eiffel, and C++
Ian Joyner(Author)
Prentice Hall (Publisher)
Published on 29. July 1999
Book
Paperback/Softback
416 pages
978-0-13-014269-6 (ISBN)
Description
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.
More details
Language
English
Place of publication
Upper Saddle River
United States
Publishing group
Pearson Education (US)
Target group
College/higher education
Dimensions
Height: 235 mm
Width: 180 mm
Thickness: 30 mm
Weight
820 gr
ISBN-13
978-0-13-014269-6 (9780130142696)
Copyright in bibliographic data and cover images is held by Nielsen Book Services Limited or by the publishers or by their respective licensors: all rights reserved.
Schweitzer Classification
Person
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.
Content
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.
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.