UML and C++ : A Practical Guide to Object-Oriented Development
For courses in Object-Oriented Programming or Object Oriented C++ courses offered in Computer Science and Computer Engineering programs at both the undergraduate and graduate levels.This practical book teaches readers how to actually do object-oriented modeling using UML notation and implementing the model using C++. The authors introduce all of the basic object-oriented fundamentals necessary to start applying and understanding the object-oriented paradigmwithout being an expert.
- Paperback | 557 pages
- 176 x 230 x 22mm | 762.05g
- 30 Nov 2000
- Pearson Education (US)
- United States
- 2nd edition
About Richard Char-Tung Lee
RICHARD LEE has more than 35 years of experience developing and managing software projects. He has worked and/or managed leading-edge development in electronic publishing, embedded systems, large IMS projects, multi-media, operating support systems, process control, transaction processing, and switching. Being one of the earlier adopters of object-oriented technology, his current interest is making more object-oriented projects successful.WILLIAM TEPFENHART is currently an Associate Professor in the Software Engineering Department at Monmouth University. He has eighteen years of experience developing manufacturing, military, and telecommunications applications as a programmer, developer, and technologist. He has developed object-oriented systems over the past 17 years. He is one of the developers of a compiler for R++ (a programming language that adds rules to C++).
Table of contents
1. The Information Management Dilemma. The Problem.Modern Corporations Are Headed Toward Disaster.What Does the Customer Want? Why Object-Oriented Is Important to Developers. Summary.2. Managing Complexity: Analysis and Design. Abstraction Mechanism.Function. Modules. Abstract Data Types.Classes/Objects.Message Passing. Generalization/Specialization and Polymorphism.Additional Relationship.Associations. Aggregation.Behavior.Static Behavior. Dynamic Behavior.Rules. Complex Systems. Summary.3. Object-Oriented Programming. What Is Object-Oriented Programming?Not a Silver Bullet. An Advanced Paradigm.Basic Object-Oriented Programming Concepts. Object-Oriented Programming Languages.Object-Based Programming. Class-Based Programming. Object-Oriented Programming. Advanced OO Programming. Leading-Edge Object-Oriented Programming.Why C++. Ways of Organizing Reality. Simulation Model of Computation. Object-Oriented Way of Organizing Reality. Summary.4. Bounding the Domain. Introduction to Use Cases.System. Actors. Use Cases. Use Case Bundles.Documenting Use Cases.Use Case Diagram. Sequence Diagram: Documenting the Details. Textual Description.Guidelines for Developing Use Cases.Avoiding Analysis Paralysis. Identifying Actors. Identifying High-Level and Essential Use Cases. Establishing Use Case Bundles. Developing Use Case Details. Identifying Supporting Use Cases. Developing Boundary Use Cases.Contracts. Recommended Approach.Example.Summary.5. Finding the Objects. Object-Oriented Analysis: Model of an Application Domain. Building the OO Model. Identification of Objects. Current Techniques.Using the Things to Be Modeled. Using the Definitions of Objects and Classes. Using Object Decomposition. Using Generalization. Using Subclasses. Using Object-Oriented Domain Analysis. Reusing an Application Framework. Reusing Class Hierarchies. Reusing Individual Objects and Classes. Using Subassemblies. Using Personal Experience.Traditional Techniques.Using Nouns. Using Traditional Data Flow Diagrams. Using Class-Responsibility-Collaboration (CRC) Cards.Recommended Approaches.Example.Summary.6. Identifying Responsibilities. What Is an Object? What Is an Attribute?Descriptive Attributes. Naming Attributes.What Is a Service? What Is a Method? Identifying Attributes. Specifying Attributes. Identifying Services. Specifying Services. Recommended Approach.Example.Summary.7. Specifying Static Behavior. What Is Behavior? Techniques for Specifying Static Behavior. Techniques for Specifying Control. Techniques for Documenting Control.Activity Diagrams. Collaboration Diagram. Sequence Diagram.Techniques for Documenting Static Behavior.Preconditions and Postconditions. Flowcharting. Data Flow Diagrams. Structured English.Recommended Approach.Example.Summary.8. Dynamic Behavior. Introduction. Techniques for Identifying Dynamic Behavior.Common Lifecycle Forms. Models for Capturing Lifecycle.Identifying and Specifying Events.Use Case and Scenario. Sequence Diagram. Example.Specifying Dynamic Behavior.Event List. State Transition Table.Documenting Dynamic Behavior.State Diagrams.Recommended Approach. Summary.9. Identifying Relationships. Accessing Another Object's Services. Relationships. Generalization. Identifying and Specifying Generalization/Specialization. Object Aggregation. Classification of Aggregation.Assembly-Parts (Component-Integral Composition). Material-Object Composition. Portion-Object Composition. Place-Area Composition. Collection-Members Composition. Container-Content (Member-Bunch Composition). Member-Partnership Composition. Objects and Aggregation Relationships.Links between Objects. Identifying and Specifying Links and Aggregations. Managing Relationships. Documenting Relationships. Recommended Approach. Example. Summary.10. Rules. Introduction. Rules. Identifying Declarative Statements. Specifying and Documenting Rules. Mapping Rules to the Proper OO Concept. Documenting the Rules Using UML. Implementing Rules. Recommended Approach. Summary.11. The Model. Concepts. Concepts and Object-Oriented Model.Class. Association. Class Aggregation. Generalization/Specialization. Polymorphism. Instantiation.Documenting Concepts Using UML.Class Concept. Association. Class Aggregation. Generalization/Specialization. Polymorphism. Instantiation.Refining the Model. Subsystems.Domain. Bridge.Organizing Subsystems.Horizontal Layers. Vertical Partitions. Combination.Identifying Subsystems. Documenting Subsystems. Recommended Approach.Example. Refinement. Subsystems.Summary.12. Design. Introduction. System Design.Subsystems. Architectural Frameworks. Documenting System Design.Detailed Design.Class Design. Association Design. Generalization and Inheritance. Delegation. Orlando Treaty. Multiple Inheritance. Documenting Detailed Design.Summary.13. C++ Fundamentals. History. Programming Elements.Keywords. Identifiers. Literals. Operators. Punctuators.Native Data Types.Basic Data Types. Constant Values. Symbolic Variables. Pointer Types. Constant Types. Reference Types. Enumeration Types. Array Types. Typedef Names.What Is a Statement?Expressions. Compound Statements.Statement Flow Control.If Statement. For Statement.What Is a Function? Function Invocation.Function Definition. Function Prototype. Inlining.Storage Class.Auto. Extern. Register. Static. Volatile.Type Conversion.Static_Cast. Const_Cast. Dynamic_Cast. Reinterpret_Clast.Namespace. Recommended Approach. Summary.14. Implementing Class. Components of a Class. Class Definition. Class Body.Visibility. Data Members. Member Functions.Generalization Using Inheritance. Recommended Approach.Example.Summary.15. C++ Libraries. C Standard Libraries. C++ Class Libraries. Standard Template Library. Recommended Approach. Summary.16. Implementing Static Behavior. Function Definition.Return Type. Return Statement. Function Argument List.Passing Arguments.Pass-By-Value. Reference or Pointer Argument.Return-Type as Reference or Pointer. Casting. Const and Defaults.Const. Default Initializers.Identifiers Scope. Recommended Approach.Definition in .h file. Definition in .C file.Summary.17. Implementing Dynamic Behavior. Elements of Dynamic Behavior.Simple State Diagrams. Nested State Diagrams. Concurrent State Diagrams.Recommended Approach. Summary.18. Instantiating and Deleting Objects. Introduction. Constructors. Destructors. Using Constructors and Destructors Properly. Generalization and Constructors. Recommended Approach.Creating an Object. Destroying an Object.Coding Guidelines.Constructor Coding Guidelines. Destructor Guidelines.Summary.19. Implementing Generalization/Specialization. Inheritance.Specifying a Derived Class. Inheriting from a Derived Class and Implementing Association. Adding Polymorphism. Abstract Class.Multiple Inheritance. Virtual Destructors. Derived Class Visibility. Summary.20. Implementing More Relationships. Introduction.Implementing Association. Implementing Attributes of an Association. Implementing Aggregation.Pointers. Arrays. Friends. Static Members. Implementing Association.Binary Association. Many-to-One Association. Many-to-Many Association.Implementing Friends.Class as a Friend. Function as a Friend. Implementing a One-Many Association Using a Friend.Implementing Aggregation.Buried Pointers OO. Embedded Objects.Implementing Static Members. Recommended Approach. Summary.21. Introduction to the Case Studies. Case Study 1: Breakout.Requirements. Acquiring Domain Expertise. Expert's Knowledge. Provided Technology Services.Case Study 2: Microwave Oven.Problem Definition. General Description.22. Case Study: The Breakout Game. Step 1: Finding the Objects. Step 2: Identifying Responsibilities.Looking at Adjectives. Asking Question1. Asking Question 2. Asking Question 3. Looking at Services.Step 3: Specifying Behaviors. Step 4: Specifying Relationships. Step 5: Refinement. Step 6: Design. Step 7: Implementation.Implementing Class. Implementing Static Behavior. Instantiating Objects. Implementing Inheritance. Implementing Relationships.23. Case Study: Microwave Oven. Use Cases.Use Case 1: Cook without Interruption. Use Case 2: Cancel Cooking. Use Case 3: Interrupt Cooking.Solution 1: The Controller Class Design.Step 1: Finding the Objects. Step 2: Identifying Responsibilities. Step 3: Specifying Behavior. Step 4: Specifying Relationships. Step 5: Refinement. Discussion.Solution 2: Distributed Responsibility with High Coupling.Step 1: Identify the Objects. Step 2: Identifying Responsibilities. Step 3: Specifying Behavior. Step 4: Specifying Relationships. Step 5: Refinement. Discussion.Solution 3: Distributed Responsibility Using the Observer Mechanism.Step 5: Refinement. Discussion.Appendix: A Unified Modeling Language. Introduction.What Is the Unified Modeling Language? What Is Not UML? What Are the Goals of UML? Why Use UML? What Are the Diagrams of UML? What Are the Most Important UML Diagrams?UML Diagrams.Use Case Diagram. Class Diagram. Sequence Diagram. Collaboration Diagram. Statechart Diagram. Activity Diagram. Component Diagram. Deployment Diagram.UML Glossary.Bibliography.
"The authors have done a great job in making the concepts clear, while still being thorough. Overall organization of topics and depth of coverage are excellent. The Guidelines and the Recommended Approach sections are great!"-Michael N. Huhns, University of South Carolina "Quite good at showing the relationship between UML modeling and implementation in C++."-Scott Henninger, University of Nebraska