1. Object Orientation and State Systems --;1.1 Finite State Machine Example: Binary Counter --;1.2 Problems with Nonobject-Oriented Programming --;1.3 Benefits of Object Orientation: Binary Counter C++ Implementation --;1.4 Access Restrictions in C++ --;1.5 Instance Generation, Information Hiding, and Restricted Access in OOPS --;Problems --;2. Object Behavior Specification: Software Blueprints --;2.1 Object Behavior Specification --;2.2 Simulating an Object Behavior Specification --;2.3 Definition of Behavior --;Problems --;3. Lists: Behavior Specification, Models and Implementations --;3.1 Domain Restrictions and Legal Sequences --;3.2 An Abstract Model for the List Specification --;3.3 Implementations and Models of Lists --;3.4 Parallel Implementations of Lists --;3.5 Proving and Testing Correctness --;Problems --;4. Inheritance Hierarchies and Hierarchical Construction --;4.1 Specifying and Implementing an and-gate --;4.2 General Switching Functions --;4.3 Inheritance and Derived Classes in C++ --;4.4 Using Inheritance for Alternative Implementations --;4.5 Hierarchical Construction --;4.6 Summary --;Problems --;5. Containers: An Object Behavior Specification --;5.1 Class entity --;5.2 Container Base Class --;5.3 Ensemble Methods --;5.4 Container Subclasses: Unordered --;Problems --;6. C++ Implementation of a Heterogeneous Container Class Library --;6.1 HCCL Implementation Strategy --;6.2 Ensemble Methods in C++ --;6.3 A Macro Approach to Ensemble Methods --;Appendix 1: Ensemble Method Macros --;Appendix 2: C++ Typing Rules That Arise From Inheritance --;Problems --;7. Testing Based on Behavior Specification --;7.1 The Look-and-See Method --;7.2 Testing Rudiments --;7.3 Blueprint-Based Testing --;7.4 Constructing Behavior Samples --;7.5 Testing Constructors for Correct Initialization --;7.6 State Transition-based Testing --;7.7 Transition-Based Test Methodology --;7.8 Transition-Based Testing: More Considerations --;7.9 Combining the Approaches --;Problems --;8. Constructing Inheritance Class Hierarchies --;8.1 How to Construct Inheritance Hierarchies --;8.2 Class Hierarchy Example: Investments --;8.3 Portfolio Selection and Rating Specification --;8.4 Implementing the Investment System --;8.5 Polymorphism and Dynamic Binding --;8.6 Extensibility --;Problems --;9. Ensemble-Based Implementation of Containers --;9.1 More Ensemble Methods --;9.2 Implementing Container Classes by Ensemble Methods --;9.3 Lessons Learned --;Problems --;10. Ordered Containers and Their Implementation --;10.1 Class Order --;10.2 Stacks and Queues --;10.3 List as a Subclass of Order --;Problems --;Appendix: Specifying list as a Subclass of order --;11. More Useful Concepts for Containers --;11.1 Logic Ensemble Methods --;11.2 Container Equality --;11.3 Inclusion, Union, Intersection, and Difference --;11.4 Conversion --;11.5 Container Comparison --;Problems --;Appendix: Specifying and Implementing Set Theory Operations --;12. Design Based on Hierarchical Decomposition and Ensemble Methods --;12.1 Trees as Hierarchical Containers --;12.2 Tree Computations with Ensemble Methods --;12.3 A Class of Graphics Puzzles --;12.4 General Approach to 00 Software Development --;12.5 Alarming a Building --;12.6 Summary --;Problems --;Appendix: Specifying a Graphics Puzzle --;13. Java and Threaded Containers --;13.1 Basic Java --;13.2 Distinctive Java Features --;13.3 Ensemble Methods in Java --;13.4 General Approach to Ensemble Methods in Java --;13.5 Synchronization --;13.6 Hierarchical Graphics Construction in Java --;13.6 Summary --;Problems.
SUMMARY OR ABSTRACT
Text of Note
The author's aim in this textbook is to provide students with a clear understanding of the relationship between the principles of object-oriented programming and software engineering. As a result, students studying software engineering will find this a distinctive and valuable approach to programming and systems engineering.