1 Introduction to UML 1. l Models and modelling 1. 2 Methodologies 1. 3 The Unified Modeling Language 1. 4 Design models and code 1. 5 The software development process 1. 6 Summary 1. 7 Exercises 2 Modelling with Objects 2. 1 The object model 2. 2 Objects 2. 3 Object properties 2. 4 Avoiding data replication 2. 5 Links 2. 6 Message passing 2. 7 Polymorphism 2. 8 Dynamic binding 2. 9 Class diagrams 2. 1O The applicability of the object model 2. 11 Summary 2. 12 Exercises 3 Diagram Editor: Use Case View 3.1 Statement of requirements 3.2 The use case view 3.3 Creating new diagrams 3.4 Use case realization 3.5 Creating new elements 3.6 Selecting elements 3.7 Deleting elements 3.8 Moving and resizing elements 3.9 Use case extension 3.1O Use case diagrams 3.1l Summary 3.12 Exercises 4 Diagram Editor: Deign View 4.l The role of the design view 4.2 Classes and associations 4.3 Generalization 4.4 Creation tools 4.5 Selection tools 4.6 Features of classes 4.7 Complete class diagram 4.8 Dynamic modelling of the diagram editor 4.9 A statechart for creation tools 4.1O A statechart for selection tools 4.1l Statecharts for other classes 4.12 Summary 4.13 Exercises 5 Diagram Editor: Implementation View 5.l Application frameworks 5.2 The applet framework 5.3 Implementation of classes 5.4 Implementation of associations 5.5 Implementation of statecharts 5.6 Managing tools 5.7 The document/view architecture 5.8 Summary 5.9 Exercises 6 Class Diagrams 6.1 Primitive notions 6.2 Classes 6.3 Describing objects with classes 6.4 Associations 6.5 The need for generalization 6.6 Generalization and specialization 6.7 Inheritance of attributes and operations 6.8 Association generalization 6.9 Aggregation 6.10 Composite objects 6.11 Association classes 6.12 Qualified associations 6.13 Multiple inheritance 6.14 Summary 6.15 Exercises 7 Interaction Diagrams 7.1 Collaborations 7.2 Classifier roles 7.3 Association roles 7.4 Transient links 7.5 Interaction diagrams 7.6 Object creation 7.7 Object destruction 7.8 Iterated messages 7.9 Multiobjects 7.1O Conditional messages 7.11 Messages to self 7.12 Summary 7.13 Exercises 8 Statecharts 8.1 State-dependent behaviour 8.2 States, events and transitions 8.3 Initial and final states 8.4 Guard conditions 8.5 Actions 8.6 Activities 8.7 Composite states 8.8 History states 8.9 Summary of the CD player 8.1O Dynamic modelling in practice 8.11 Time events 8.12 Activity states 8.13 Summary of the ticket machine 8.14 Summary 8.15 Exercises 9 Constraints 9.1 Standard constraints 9.2 The Object Constraint Language 9.3 The context of a constraint 9.4 Navigation expressions 9.5 Objects and collections 9.6 Constraints 9.7 Stereotyped constraints 9.8 Constraints and generalization 9.9 Summary 9.1O Exercises 1O Implementation Strategies 1O.1 Implementing associations 10.2 Unidirectional implementations 1O.3 Bidirectional implementations 1O.4 Implementing qualifiers 1O.5 Implementing associations as classes 1O.6 Implementing constraints 1O.7 Implementing statecharts 1O.8 Persistency 1O.9 Interfacing to databases 1O.1O Summary 1O.11 Exercises 11 Design Pragmatics 11.1 Physical design 11.2 Interfaces 11.3 Reverse engineering 11.4 Templates 11.5 Optimization of design models 11.6 Summary 11.7 Exercises 12 Principles and Patterns 12.1 The open-closed principle 12.2 No concrete superclasses 12.3 Decouple the interface hierarchy 12.4 The Liskov substitution principle 12.5 Interactions determine structure 12.6 Design patterns 12.7 Recursive structures 12.8 The State and Strategy patterns 12.9 MVC, document/view and Observer 12.1O Applying Visitor to the stock control program 12.1l Summary 12.12 Exercises 13 Cab Dispatching System 13.1 Use cases 13.2 Handling immediate jobs 13.3 Handling prebooked jobs 13.4 Allocating a cab to ajob 13.5 Job confirmation 13.6 Cancelling a job 13.7 Progression of jobs 13.8 Completing the static model 13.9 Implementation overview 13.1O Summary 13.1l Exercises A Summary of Notation Used A.1 Common notations A.2 Use case diagrams A.3 Object diagrams A.4 Collaborations A.5 Sequence diagrams A.6 Collaboration diagrams A.7 Class diagrams A.8 Statechart diagrams A.9 Component diagrams A. 10 Templates References Index