This practical text teaches students how to actually build an object-oriented model using UML notation, and to implement the model using Java. It introduces all of the basic object-oriented fundamentals necessary to start applying and understanding the object-oriented paradigm without having to be an expert in computer science. The volume provides a practical approach to analysis, design and programming in OO technology, and offers students the knowledge needed to start working as team members, able to contribute at every stage of object-oriented development. Included is in-depth coverage of OO technology, which should allow students to understand the need to know objects, classes, relationships and rules, and how they fit into the object paradigm. A wide range of techniques is covered with explanations of why they are used, enabling students to accommodate the methodology used in real-world development sites. The theory is balanced with application practices, introducing students to mechanisms that are valuable in solving real business problems, and an emphasis is placed on reliability, maintainability and flexibility - the most important technical aspects of software development.
Two case studies illustrate all the major concepts covered - a simple microwave oven and a well-known game, "Breakout". The text should fit in with courses in object-oriented design or object-oriented programming with Java offered in computer science and computer engineering departments at both undergraduate and graduate levels.
Table of Contents:
Introduction.
Object-Oriented Technology. Why Unified Modeling Language? Why Java? Our Approach to Object-Oriented Technology. Organization of the Book.
1. Managing Complexity with Abstraction.
Complex Systems. Abstraction Mechanisms. Service Activation Abstractions. Processing Control Abstractions. Relationships. Behavior. Rules.
2. The Object-Oriented Paradigm.
The Object-Oriented Paradigm. Principles of Object-Orientation. Object-Oriented Model of Computation.
3. Building a Specification Model.
Introduction to Use Cases. Documenting Use Cases. Guidelines for Developing Use Cases. Contracts. Recommended Approach.
4. Finding the Objects.
Object Oriented Analysis: Model of an Application Domain. Building the Object-Oriented Model. Identification of Objects, Classes, and Interfaces. Current Techniques. Traditional Techniques. Recommended Approaches.
5. Identifying Responsibilities.
What Is an Object? What Is an Attribute? 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. Techniques for Documenting Static Behavior. Recommended Approach.
7. Dynamic Behavior.
Introduction. Techniques for Identifying Dynamic Behavior. Identifying and Specifying Events. Specifying Dynamic Behavior. Documenting Dynamic Behavior. Recommended Approach.
8. Identifying Relationships.
Accessing Another Object's Services. Relationships. Generalization. Identifying and Specifying Generalization/Specialization. Object Aggregation. Classification of Aggregation. Links Between Objects. Identifying and Specifying Links and Aggregations. Managing Relationships. Documenting Relationships. Recommended Approach.
9. Rules.
Introduction. 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. Documenting Concepts Using UML. Subsystems. Organizing Subsystems. Identifying Subsystems. Documenting Subsystems. Recommended Approach.
11. Design.
Introduction. System Design. Detailed Design. Summary.
12. Java Fundamentals.
Introduction to the Java Language. Programming Elements. Primitive Data Types. What Is a Statement? Statement Flow Control. Branching Statements. Exception Handling. NameSpace. Type Conversion. Recommended Approach.
13. Implementing Class and Interface.
Components of a Class. Class Definition. Class Body. Nested, Inner, and Anonymous Inner Classes. Predefined Java Classes. Interface. Recommended Approach. Summary.
14. Implementing Static Behavior.
What Is a Service? Method Definition. Body. Passing Arguments. Identifiers Scope. Polymorphism. Creating Objects and Destroying Objects. Coding Guidelines. Recommended Approach.
15. Implementing Dynamic Behavior.
Elements of Dynamic Behavior. Simple State Diagrams. Nested State Diagrams. Concurrent State Diagrams.
16. Implementing Generalization/Specialization.
Introduction. Inheritance. Implementing Generalization/Specialization. The Object Class.
17. Implementing More Relationships.
Introduction. References. Static Members. Implementing Association. Implementing Aggregation. Implementing Static Members. Recommended Approach.
Appendix A: Unified Modeling Language.
Introduction. UML Diagrams. UML Glossary.
Appendix B: Java Language Summary.
Reserved Words. Comments. Literals. Variable Declaration. Variable Assignment. Operators. Loops and Conditions. Class and Interface Definitions. Objects. Arrays. Methods and Constructor Definitions. Packages and Importing. Exceptions and Synchronization.
Appendix C: How the Java Language Differs from C and C++.
C Data Types Not Supported. Primitive Data Types. Operators. Arguments. Arrays. Java Strings. Memory Management. Miscellaneous.
Bibliography.
Index.