PTG home
Catalog Search:
Search
Related Topics:
COMPUTING
Object Technologies
UML/Notation




Companion Website

 
UML and C++: A Practical Guide to Object-Oriented Development 2/e

Richard C. Lee
William M. Tepfenhart

Published November 2000 by Prentice Hall
Copyright 2001, 557 pp., Paper
ISBN: 0-13-029040-8
List Price:
$55.00

Inventory Status:
In-Stock
   
Preface


Review


Companion Website


Summary

This practical book by two industry leaders continues to be a self-teaching guide for software analysts and developers. This revised edition teaches readers how to actually do object-oriented modeling using UML notation as well as how to implement the model using C++. The authors introduce all of the basic object-oriented fundamentals necessary so readers can understand and apply the object-oriented paradigm.

FEATURES

  • Teaches readers to build an object-oriented application using C++ and make the right trade-off decisions to meet business needs.
  • Exposes a number of the myths surround object-oriented technology while focusing on its practicality as a software engineering tool.
  • Gives readers a "recipe or step-by-step guide to do all of the steps of object-oriented technology.
  • Provides a practical approach to analysis, design, and programming in the object-oriented technology.

NEW TO THE SECOND EDITION

  • Gives a practical approach for the development of use cases as part of object-oriented analysis.
  • Provides greater coverage of UML diagramming.
  • Introduces key C++ libraries that provide important functionality, supporting implementation of an object-oriented model in C++.
  • Improved coverage of dynamic behavior modeling, implementation of the state model, and class projects.


Features

  • NEW - Chapter 4 on use case development—As a means to scope the domain of a problem.
    • Gives students a basic introduction to the key concepts of use cases, and offers a simple approach to developing a use case description. Ex.___

  • NEW - Coverage of C++.
    • Reflects changes in the programming language that resulted during ANSI/ISO standardization. Ex.___

  • NEW - Chapter 15 C++ libraries, including the standard template libraries—Empasizes their use rather than theory by identifying the commonly used libraries and those that should only be used in special circumstances.
    • Allows students to look at those elements which a developer is likely to use in an initial project. Ex.___

  • NEW - Updated chapter on implementing associations and aggregations—Reflects use in the Standard Template Libraries.
    • Offers students additional attention to detail in one of the most useful chapters. Ex.___

  • NEW - Suggestions for a class project—Challenges students to develop a game as they cover material in the book.
    • Allows students to apply concepts as they learn them as they follow the whole OOAD process. Ex.___

  • Expanded use of UML notation for documentation—A combination of the most popular design methodologies of Grady Booch and Jim Rumbaugh.
    • Provides students with an understanding and mastery of the current generation of Software Engineering Diagrams. Ex.___

  • Use Cases.
    • Supply students with ample guidelines for avoiding common mistakes. Ex.___

  • Two case studies presented in the last three chapters illustrate all of the major concepts—A simple Microwave oven and a simple, well-known game, Breakout, as the example applications.
    • Allow students to understand how all of the concepts, techniques, and methods fit together to assist in the development of an Object-Oriented application. Ex.___

  • Wide range of techniques—Explains why they are used.
    • Enables students to accommodate the methodology used in real-world development sites. Ex.___

  • Fundamental concepts.
    • Offers students enough knowledge to start working as team members, able to contribute at every stage of object-oriented development. Ex.___

  • End of chapter step-by-step guides.
    • Provide summaries of techniques in chapters.



Author Bio

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.



back to top