rent-now

Rent More, Save More! Use code: ECRENTAL

5% off 1 book, 7% off 2 books, 10% off 3+ books

9780130290403

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

by ;
  • ISBN13:

    9780130290403

  • ISBN10:

    0130290408

  • Edition: 2nd
  • Format: Paperback
  • Copyright: 2001-01-01
  • Publisher: Prentice Hall
  • Purchase Benefits
  • Free Shipping Icon Free Shipping On Orders Over $35!
    Your order must be $35 or more to qualify for free economy shipping. Bulk sales, PO's, Marketplace items, eBooks and apparel do not qualify for this offer.
  • eCampus.com Logo Get Rewarded for Ordering Your Textbooks! Enroll Now
List Price: $63.00

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 bull; bull;Teaches readers to build an object-oriented application using C++ and make the right trade-off decisions to meet business needs. bull;Exposes a number of the myths surround object-oriented technology while focusing on its practicality as a software engineering tool. bull;Gives readers a "recipe or step-by-step guide to do all of the steps of object-oriented technology. bull;Provides a practical approach to analysis, design, and programming in the object-oriented technology. NEW TO THE SECOND EDITION bull; bull;Gives a practical approach for the development of use cases as part of object-oriented analysis. bull;Provides greater coverage of UML diagramming. bull;Introduces key C++ libraries that provide important functionality, supporting implementation of an object-oriented model in C++. bull;Improved coverage of dynamic behavior modeling, implementation of the state model, and class projects.

Table of Contents

Preface to Second Edition xvii
Preface to First Edition xxvii
The Information Management Dilemma
1(6)
The Problem
1(3)
Modern Corporations Are Headed Toward Disaster
3(1)
What Does the Customer Want?
4(1)
Why Object-Oriented Is Important to Developers
5(1)
Summary
6(1)
Managing Complexity: Analysis and Design
7(16)
Abstraction Mechanism
9(2)
Functions
9(1)
Modules
10(1)
Abstract Data Types
11(1)
Classes/Objects
11(2)
Message Passing
12(1)
Generalization/Specialization and Polymorphism
12(1)
Additional Relationships
13(3)
Associations
13(2)
Aggregation
15(1)
Behavior
16(3)
Static Behavior
16(1)
Dynamic Behavior
17(2)
Rules
19(1)
Complex Systems
20(1)
Summary
21(2)
Object-Oriented Programming
23(18)
What Is Object-Oriented Programming?
24(1)
Not a Silver Bullet
24(1)
An Advanced Paradigm
24(1)
Basic Object-Oriented Programming Concepts
24(5)
Object-Oriented Programming Languages
29(1)
Object-Based Programming
29(1)
Class-Based Programming
29(1)
Object-Oriented Programming
29(1)
Advanced OO Programming
29(1)
Leading-Edge Object-Oriented Programming
30(1)
Why C++?
30(1)
Ways of Organizing Reality
31(2)
Simulation Model of Computation
33(1)
Object-Oriented Way of Organizing Reality
33(6)
Summary
39(2)
Bounding the Domain
41(32)
Introduction to Use Cases
42(9)
System
42(1)
Actors
43(1)
Use Cases
44(6)
Use Case Bundles
50(1)
Documenting Use Cases
51(3)
Use Case Diagram
51(1)
Sequence Diagram: Documenting the Details
52(1)
Textual Description
53(1)
Guidelines for Developing Use Cases
54(8)
Avoiding Analysis Paralysis
54(1)
Identifying Actors
55(2)
Identifying High-Level and Essential Use Cases
57(1)
Establishing Use Case Bundles
58(1)
Developing Use Case Details
59(2)
Identifying Supporting Use Cases
61(1)
Developing Boundary Use Cases
62(1)
Contracts
62(2)
Recommended Approach
64(7)
Example
64(7)
Summary
71(2)
Finding the Objects
73(18)
Object-Oriented Analysis: Model of an Application Domain
74(1)
Building the OO Model
74(1)
Identification of Objects
75(2)
Current Techniques
77(5)
Using the Things to be Modeled
77(1)
Using the Definitions of Objects and Classes
78(1)
Using Object Decomposition
78(1)
Using Generalization
78(1)
Using Subclasses
79(1)
Using Object-Oriented Domain Analysis
79(1)
Reusing an Application Framework
80(1)
Reusing Class Hierarchies
80(1)
Reusing Individual Objects and Classes
81(1)
Using Subassemblies
81(1)
Using Personal Experience
82(1)
Traditional Techniques
82(4)
Using Nouns
82(1)
Using Traditional Data Flow Diagrams
83(1)
Using Class-Responsibility-Collaboration (CRC) Cards
84(2)
Recommended Approaches
86(3)
Example
88(1)
Summary
89(2)
Identifying Responsibilities
91(12)
What Is an Object?
91(1)
What Is an Attribute?
92(1)
Descriptive Attributes
93(1)
Naming Attributes
93(1)
What Is a Service?
93(1)
What Is a Method?
94(1)
Identifying Attributes
94(2)
Specifying Attributes
96(1)
Identifying Services
97(1)
Specifying Services
98(1)
Recommended Approach
99(3)
Example
100(2)
Summary
102(1)
Specifying Static Behavior
103(14)
What Is Behavior?
103(1)
Techniques for Specifying Static Behavior
104(2)
Techniques for Specifying Control
106(1)
Techniques for Documenting Control
107(3)
Activity Diagrams
107(1)
Collaboration Diagram
108(1)
Sequence Diagram
109(1)
Techniques for Documenting Static Behavior
110(2)
Preconditions and Postconditions
110(1)
Flowcharting
110(1)
Data Flow Diagrams
110(1)
Structured English
111(1)
Recommended Approach
112(4)
Example
112(4)
Summary
116(1)
Dynamic Behavior
117(24)
Introduction
118(1)
Techniques for Identifying Dynamic Behavior
119(4)
Common Lifecycle Forms
120(1)
Models for Capturing Lifecycle
121(2)
Identifying and Specifying Events
123(5)
Use Case and Scenario
123(1)
Sequence Diagram
123(1)
Example
124(4)
Specifying Dynamic Behavior
128(6)
Event List
128(2)
State Transition Table
130(4)
Documenting Dynamic Behavior
134(5)
State Diagrams
134(5)
Recommended Approach
139(1)
Summary
140(1)
Identifying Relationships
141(22)
Accessing Another Object's Services
141(1)
Relationships
142(1)
Generalization
143(2)
Identifying and Specifying Generalization/Specialization
145(2)
Object Aggregation
147(1)
Classification of Aggregation
148(5)
Assembly-Parts (Component-Integral Composition)
149(1)
Material-Object Composition
149(1)
Portion-Object Composition
150(1)
Place-Area Composition
151(1)
Collection-Members Composition
151(1)
Container-Content (Member-Bunch Composition)
152(1)
Member-Partnership Composition
152(1)
Objects and Aggregation Relationships
153(1)
Links Between Objects
153(2)
Identifying and Specifying Links and Aggregations
155(1)
Managing Relationships
156(2)
Documenting Relationships
158(1)
Recommended Approach
159(1)
Example
160(1)
Summary
161(2)
Rules
163(10)
Introduction
163(2)
Rules
165(1)
Identifying Declarative Statements
165(1)
Specifying and Documenting Rules
166(2)
Mapping Rules to the Proper OO Concept
168(1)
Documenting the Rules Using UML
169(1)
Implementing Rules
170(1)
Recommended Approach
171(1)
Summary
171(2)
The Model
173(22)
Concepts
173(1)
Concepts and Object-Oriented Model
174(4)
Class
175(1)
Association
175(1)
Class Aggregation
176(1)
Generalization/Specialization
176(1)
Polymorphism
177(1)
Instantiation
178(1)
Documenting Concepts Using UML
178(4)
Class Concept
178(1)
Association
179(1)
Class Aggregation
180(1)
Generalization/Specialization
181(1)
Polymorphism
181(1)
Instantiation
181(1)
Refining the Model
182(1)
Subsystems
182(2)
Domain
182(1)
Bridge
183(1)
Organizing Subsystems
184(1)
Horizontal Layers
184(1)
Vertical Partitions
184(1)
Combination
185(1)
Identifying Subsystems
185(1)
Documenting Subsystems
185(1)
Recommended Approach
186(7)
Example
186(1)
Refinement
187(4)
Subsystems
191(2)
Summary
193(2)
Design
195(16)
Introduction
195(1)
System Design
196(5)
Subsystems
196(1)
Architectural Frameworks
197(3)
Documenting System Design
200(1)
Detailed Design
201(8)
Class Design
202(2)
Association Design
204(1)
Generalization and Inheritance
205(1)
Delegation
206(1)
Orlando Treaty
207(1)
Multiple Inheritance
208(1)
Documenting Detailed Design
209(1)
Summary
209(2)
C++ Fundamentals
211(22)
History
211(1)
Programming Elements
212(3)
Keywords
213(1)
Identifiers
213(1)
Literals
214(1)
Operators
214(1)
Punctuators
215(1)
Native Data Types
215(5)
Basic Data Types
216(1)
Constant Values
216(1)
Symbolic Variables
217(1)
Pointer Types
218(1)
Constant Types
218(1)
Reference Types
219(1)
Enumeration Types
219(1)
Array Types
220(1)
Typedef Names
220(1)
What Is a Statement?
220(2)
Expressions
221(1)
Compound Statements
221(1)
Statement Flow Control
222(1)
If Statement
222(1)
For Statement
223(1)
What Is a Function?
223(1)
Function Invocation
224(2)
Function Definition
225(1)
Function Prototype
226(1)
Inlining
226(1)
Storage Class
226(2)
Auto
226(1)
Extern
227(1)
Register
227(1)
Static
227(1)
Volatile
228(1)
Type Conversion
228(2)
Static_cast
228(1)
const_cast
229(1)
dynamic_cast
229(1)
reinterpret_clast
229(1)
Namespace
230(1)
Recommended Approach
231(1)
Summary
231(2)
Implementing Class
233(8)
Components of a Class
233(1)
Class Definition
234(1)
Class Body
235(3)
Visibility
235(1)
Data Members
235(1)
Member Functions
236(2)
Generalization Using Inheritance
238(1)
Recommended Approach
238(2)
Example
239(1)
Summary
240(1)
C++ Libraries
241(20)
C Standard Libraries
242(3)
<cassert>
242(1)
<cctype>
242(1)
<cerrno>
242(1)
<cfloat>
243(1)
<ciso646>
243(1)
<climits>
243(1)
<clocale>
243(1)
<cmath>
243(1)
<csetjmp>
243(1)
<csignal>
243(1)
<cstdarg>
243(1)
<cstddef>
243(1)
<cstdio>
244(1)
<cstdlib>
244(1)
<cstring>
244(1)
<ctime>
244(1)
<cwchar>
245(1)
<cwctype>
245(1)
C++ Class Libraries
245(5)
<bits>
245(1)
<bitstream>
245(1)
<complex>
245(1)
<defines>
246(1)
<dynarray>
246(1)
<exceptions>
246(1)
<fstream>
246(1)
<iomanip>
246(1)
<ios>
246(1)
<iostream>
246(2)
<istream>
248(1)
<new>
248(1)
<ostream>
248(1)
<ptrdynarry>
249(1)
<sstream>
249(1)
<streambuf>
249(1)
<string>
249(1)
<strstream>
249(1)
<typeinfo>
250(1)
<wstring>
250(1)
Standard Template Library
250(10)
<algorithm>
251(1)
<bitset>
251(1)
<complex>
251(1)
<deque>
251(1)
<functional>
251(1)
<iterator>
251(1)
<list>
252(1)
<map>
252(5)
<memory>
257(1)
<numerics>
257(1)
<queue>
257(1)
<set>
257(3)
<stack>
260(1)
<utility>
260(1)
<valarray>
260(1)
<vector>
260(1)
Recommended Approach
260(1)
Summary
260(1)
Implementing Static Behavior
261(18)
Function Definition
261(5)
Return Type
262(1)
Return Statement
263(1)
Function Argument List
264(2)
Passing Arguments
266(3)
Pass-By-Value
266(1)
Reference or Pointer Argument
267(2)
Return-Type as Reference or Pointer
269(1)
Casting
270(1)
Const and Defaults
271(2)
Const
271(2)
Default Initializers
273(1)
Identifiers Scope
273(1)
Recommended Approach
274(3)
Definition in h file
274(2)
Definition in C file
276(1)
Summary
277(2)
Implementing Dynamic Behavior
279(16)
Elements of Dynamic Behavior
280(12)
Simple State Diagrams
280(6)
Nested State Diagrams
286(6)
Concurrent State Diagrams
292(1)
Recommended Approach
292(1)
Summary
293(2)
Instantiating and Deleting Objects
295(14)
Introduction
295(1)
Constructors
296(3)
Destructors
299(3)
Using Constructors and Destructors Properly
302(1)
Generalization and Constructors
303(1)
Recommended Approach
304(2)
Creating an Object
304(1)
Destroying an Object
304(2)
Coding Guidelines
306(1)
Constructor Coding Guidelines
306(1)
Destructor Coding Guidelines
306(1)
Summary
307(2)
Implementing Generalization/Specialization
309(18)
Inheritance
309(9)
Specifying a Derived Class
310(2)
Inheriting from a Derived Class and Implementing Association
312(2)
Adding Polymorphism
314(2)
Abstract Class
316(2)
Multiple Inheritance
318(5)
Virtual Destructors
323(1)
Derived Class Visibility
324(1)
Summary
325(2)
Implementing More Relationships
327(20)
Introduction
327(2)
Implementing Association
327(1)
Implementing Attributes of an Association
328(1)
Implementing Aggregation
329(1)
Pointers
329(2)
Arrays
331(2)
Friends
333(1)
Static Members
333(1)
Implementing Association
334(4)
Binary Association
334(1)
Many-to-One Association
335(2)
Many-to-Many Association
337(1)
Implementing Friends
338(3)
Class as a Friend
338(1)
Function as a Friend
339(1)
Implementing a One-Many Association Using a Friend
340(1)
Implementing Aggregation
341(2)
Buried Pointers OO
341(1)
Embedded Objects
342(1)
Implementing Static Members
343(2)
Recommended Approach
345(1)
Summary
345(2)
Introduction to the Case Studies
347(10)
Case Study 1: Breakout
347(6)
Requirements
348(1)
Acquiring Domain Expertise
349(1)
Expert's Knowledge
350(1)
Provided Technology Services
351(2)
Case Study 2: Microwave Oven
353(4)
Problem Definition
353(2)
General Description
355(2)
Case Study: The Breakout Game
357(118)
Step 1: Finding the Objects
357(1)
Step 2: Identifying Responsibilities
358(18)
Looking at Adjectives
358(1)
Asking Question 1
359(7)
Asking Question 2
366(4)
Asking Question 3
370(3)
Looking at Services
373(3)
Step 3: Specifying Behaviors
376(10)
Step 4: Specifying Relationships
386(7)
Step 5: Refinement
393(22)
Step 6: Design
415(10)
Step 7: Implementation
425(50)
Implementing Class
425(14)
Implementing Static Behavior
439(3)
Instantiating Objects
442(4)
Implementing Inheritance
446(19)
Implementing Relationships
465(10)
Case Study: Microwave Oven
475(36)
Use Cases
476(4)
Use Case 1: Cook Without Interruption
476(2)
Use Case 2: Cancel Cooking
478(1)
Use Case 3: Interrupt Cooking
479(1)
Solution 1: The Controller Class Design
480(9)
Step 1: Finding the Objects
480(1)
Step 2: Identifying Responsibilities
481(3)
Step 3: Specifying Behavior
484(4)
Step 4: Specifying Relationships
488(1)
Step 5: Refinement
489(1)
Discussion
489(1)
Solution 2: Distributed Responsibility with High Coupling
489(7)
Step 1: Identify the Objects
489(1)
Step 2: Identifying Responsibilities
489(2)
Step 3: Specifying Behavior
491(4)
Step 4: Specifying Relationships
495(1)
Step 5: Refinement
495(1)
Discussion
495(1)
Solution 3: Distributed Responsibility Using the Observer Mechanism
496(15)
Step 5: Refinement
497(12)
Discussion
509(2)
Appendix A Unified Modeling Language 511(30)
Introduction
511(3)
What Is the Unified Modeling Language?
511(1)
What Is Not UML?
512(1)
What Are the Goals of UML?
512(1)
Why Use UML?
512(1)
What Are the Diagrams of UML?
512(1)
What Are the Most Important UML Diagrams?
513(1)
UML Diagrams
514(22)
Use Case Diagram
514(1)
Use Case Diagram
514(1)
Class Diagram
515(11)
Sequence Diagram
526(1)
Collaboration Diagram
527(2)
Statechart Diagram
529(3)
Activity Diagram
532(2)
Component Diagram
534(1)
Deployment Diagram
535(1)
UML Glossary
536(5)
Bibliography 541(4)
Acknowledgments 545

Supplemental Materials

What is included with this book?

The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.

The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.

Excerpts

Preface UML and C++: A Practical Guide to Object-Oriented Developmentcontinues to be aimed at busy professional software analysts and developers who work on large systems, especially those who need to integrate their new systems with legacy systems. If you do not have time to take a class yet and get up-to-speed on object-oriented (OO) technology using Unified Modeling Language and C++, this book is a self-teaching guide for you. It will help you understand the differences between OO analysis, OO design, and OO programming. Our goals in the first edition were to: Teach you to build an object-oriented application using C++ and make the right trade-off decisions to meet your business needs; Clarify the basic concepts associated with object-oriented technology; Supply sufficient depth in coverage for students and practitioners entering the field to get them up to speed; Expose some of the myths surrounding OO technology while focusing on its practicality as a software engineering tool; Give you a "recipe" or step-by-step guide to do all of the steps of object-oriented technology; Advocate the view that OO, rule-based concepts, fuzzy logic, multimedia, and data modeling integrated into a single model can address the current and future business challenges for information technology organizations; Provide a practical approach to analysis, design, and programming in the OO technology. Show how to implement OO technology using C++ (though not an object-oriented language it is an extremely powerful multi-paradigm language); and Balance theory with application practices in the existing literature. This, the second edition, has extended those goals to include: Give a practical approach for the development of use cases as part of OO analysis; Provide greater coverage of UML diagramming; and Introduce key C++ libraries that provide important functionality supporting implementation of an OO model in C++. In addition, the second edition made improvements on the following topics: Dynamic behavior modeling Implementation of the state model Class projects As always, you do not have know computer science or advanced mathematics to understand the important object-oriented concepts and issues in depth. Even the programming chapters do not require a background in C++; they illustrate how working rode in C++ is produced. Object-Oriented Technology We are software developers of large systems. We believe that OO technology is the most important software evolution (revolution) of the 1990s. It is changing the way we build software and the way applications intercommunicate over worldwide networks and across mufti-vendor computers. Moreover, the OO model is changing the way we design business processes and the way we think about an enterprise. Most enterprises need redesigning today in order to meet future business challenges. Business process redesign is one of the most important functions of an information technology organization. A model that captures the business processes, procedures, policies, and rules facilitates design. Tools that translate the model into an operational system speed the implementation of the redesign. When the market or business condition changes, these systems should be regenerated to reflect these changes by updating the model and using these tools. Information science (engineering) has taken us further and faster than any other approach in previous decades. However, it needs constant updating through even better, more refined methods to meet our business needs and challenges through OO modeling and OO programming. More and more people believe that OO technology will put a dent into the software crisis, meaning that the mechanisms of OO will become for software what the bolts and beams are for the construction design and

Rewards Program