Preface Object-Oriented Technology Why Unified Modeling Language? Why Java? Our Approach to Object-Oriented Technology Organization of the Book Using This Book Acknowledgments 1 Managing Complexity with Abstraction Complex Systems System Development Is Modeling A Strategy for Modeling Abstraction Mechanisms Basic Data Types Functions Modules Abstract Data Types Objects Class Generalization/Specialization Polymorphism Interface Reflection Service Activation Abstractions Function Call Event Processing (Asynchronous Communication) Message Passing (Synchronous Communication) Subscription (Asynchronous Communication) Processing Control Abstractions Single Program Execution Multitasking Sequential Execution Multithreading Relationships Associations Aggregation Behavior Static Behavior Dynamic Behavior Rules 2 The Object-Oriented Paradigm The Object-Oriented Paradigm What Is an Object? What Is a Class? Principles of Object-Orientation Principle 1. Encapsulation Principle 2. Information Hiding Principle 3. Message Passing Principle 4. Late Binding Principle 5. Delegation Principle 6. Class/Instance/Object Principle 7. Generalization/Specialization without Polymorphism Principle 8. Generalization/Specialization with Polymorphism Principle 9. Relationships Principle 10. Interface/Instance/Object Principle 11. Generalization/Specialization of Interfaces Principle 12. Reflection Principle 13. Multithreading Object-Oriented Model of Computation 3 Building a Specification Model 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 Contracts Recommended Approach 4 Finding the Objects Object-Oriented Analysis: Model of an Application Domain Building the Objected-Oriented Model Identification of Objects, Classes, and Interfaces Current Techniques Using the Things to Be Modeled Using the Definitions of Objects, Categories, and Types 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 5 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 6 Specifying Static Behavior What Is Behavior? Java Services (Operations) That Affect the Behavior Specification Techniques for Specifying Static Behavior Techniques for Specifying Control Techniques for Documenting Control Activity Diagrams Collaboration Diagram Sequence Diagram Techniques for Documenting Static Behavior Pre-conditions and Post-conditions Flowcharting Data Flow Diagrams Structured English Recommended Approach 7 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 Specifying Dynamic Behavior Event List State Transition Table Documenting Dynamic Behavior State Diagrams Recommended Approach 8 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 9 Rules Introduction Rules Identifying Declarative Statements Specifying and Documenting Rules Mapping Rules to the Proper Object-Oriented Concepts Documenting the Rules Using UML Implementing Rules Recommended Approach 10 The Model Concepts Concepts and Object-Oriented Model Class Interface Association Class Aggregation Generalization/Specialization of Classes Polymorphism Instantiation Documenting Concepts Using UML Class Concept Basic Class Construct Parameterized Class and Bounded Class Construct Interface Construct Association Class Aggregation Generalization/Specialization of Class Generalization/Specialization of Interface Polymorphism Instantiation Refining the Model Subsystems Domain Bridge Organizing Subsystems Horizontal Layers Vertical Partitions Combination Identifying Subsystems Documenting Subsystem Recommended Approach Subsystems 11 Design Introduction System Design Subsystems Architectural Frameworks Software Control Within a Framework Documenting System Design Detailed Design Class Design Association Design Generalization and Inheritance Delegation Orlando Treaty Multiple Inheritance Documenting Detailed Design 12 Java Fundamentals Introduction to the Java Language Example Statements Unicode Character Programming Elements Comments Reserved Words (Keywords) Identifiers Literals Operators Arithmetic Operators Boolean Operators Conditional and Relational Operators Bitwise Operators Class-Defined Operators Punctuators Primitive Data Types Primitive Data Types Constant Values Symbolic Variables Reference Variables Constants Class "Data Type" What Is a Statement.9 Expressions Null Statement Assignment Statement Service Request Statement Block (Compound Statement) Statement Flow Control If Statement If-Else Statement For Statement Switch Statement While Statement Do-While Statement Branching Statements The Break Statement The Continue Statement The Return Statement Exception Handling Throws and Try-Catch Block Throwable Class NameSpace No Global Variables Package and Imports Packages of the Java API Filenames and Directories Access to Members of a Class Public Private Protected Package Summary Type Conversion Casting Between Primitive Data Types Casting Objects Converting Primitive Data Types to Objects Recommended Approach 13 Implementing Class and Interface Components of a Class Class Defnition Class Body Visibility Data Variables Instance Data Variables Class Data Variables Constants Initialization of Member Variables Other Attributes of a Class Member Member Methods Class Method Details of Member Method Prototype Abstract Class Nested, Inner, and Anonymous Inner Classes Nested Classes Inner Class Anonymous Inner Classes Predefined Java Classes String Data Type String Concatenation Conversion of an Object to a String Instance Conversion from String to Integer and Vice Versa Substrings Length of String Individual Characters in a String Immutable Property StringBuffer Data Type Number Data Types Array Data Type Declaring a Variable to Hold an Array Initialization of an Array Access and Assignment by Position Multidimensional Array Interface Interface Declaration Interface Body Using an Interface as a Data Type Implementing the Interface Why Can't I Just Use an Abstract Class? Do Interfaces Provide for Multiple Inheritance? What Can I Use Interfaces For? Recommended Approach 14 Implementing Static Behavior What Is a Service? Method Definition Method (Service) Prototype Method Implementation Return Type Return Statement Body this super Local Variables Service Argument List Passing Arguments Pass-By-Value Pass-By-Reference (or Pointer) Identifier's Scope Polymorphism Overriding Methods Calling the Original Method Creating Objects and Destroying Objects Introduction Constructor Methods Calling Another Constructor Overloading Constructors Calling Sequence of Constructors Visibility of Constructor Finalizer Method Constructor and Finalizer Coding Guidelines Recommended Approach 15 Implementing Dynamic Behavior Elements of Dynamic Behavior Simple State Diagrams Implement the Actions Performed by the Object Adding State Introduce Helper Methods for Managing State Entry and Exit Actions Implement the Event Handlers (Methods) for Responding to Events Nested State Diagrams Implement the Actions Performed by the Object Adding State Introduce Helper Methods for Managing State Entry and Exit Actions Implement the Event Handlers (Methods) for Responding to Events Concurrent State Diagrams Introduction Changes to the Microwave Class Creating a Parallel State Machine Extending Thread Class Implement the Actions Performed by the Object Creating States Introduce Helper Methods for Managing State Entry and Exit Actions Implement the Event Handlers (Methods) for Responding to Events 16 Implementing Generalization/Specialization Introduction Java Inheritance Hierarchy Generalization/Specialization Mapping to Inheritance Inheritance Derived Class and Base Class Specifying a Derived Class Inheriting from a Derived Class and Implementing Association Adding Polymorphism Abstract Class Abstract Service (Method) Implementing Generalization/Specialization Interfaces Aggregation with Delegation The Object Class Clone Method Equals and HashCode Methods Finalize Method ToString Method GetClass Method Notify, NotifyAll, and Wait Methods 17 Implementin9 More Relationships Introduction Implementing Association Implementing Attributes of an Association Implementing Aggregation References Static Members Implementing Association Binary Association Many-to-One Association Many-to-Many Association Implementing Aggregation Buried Reference Inner Classes Implementing Static Members Recommended Approach A Unified Modeling Language Introduction What Is the Unified Modeling Language? What UML Is Not 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 B Java Language Summary Reserved Words Comments Literals Variable Declaration Variable Assignment Operators Loops and Conditions Class and Interface Definitions Objects Arrays Method and Constructor Definitions Packages and Importing Exceptions and Synchronization C How the Java Language Differs from C and C++ C Data Types Not Supported Pointers Struct and Union Enumerated Data Types Primitive Data Types Operators Arguments Command Line Method Arguments Arrays Java Strings Memory Management Miscellaneous Bibliography Index