وبلاگ بلیان

UML for Java Programmers (Robert C. Martin)

معرفی کتاب «UML for Java Programmers (Robert C. Martin)» نوشتهٔ Martin, Robert Cecil، منتشرشده توسط نشر Prentice Hall PTR در سال 2002. این کتاب در فرمت pdf، زبان انگلیسی ارائه شده است. «UML for Java Programmers (Robert C. Martin)» در دستهٔ بدون دسته‌بندی قرار دارد.

Using a practical, problem-solving approach -- written from an engineering (rather than a computer science) point of view -- this book teaches the fundamental concepts of object-oriented design and how those concepts can be applied using C++. It provides readers with the tools to deal with larger and more complex projects than they may be used to, and shows how to develop an object-oriented application -- from the early stages of analysis, through the low level design, and into the implementation. Focuses on the practical approaches to software engineering (both in the creation of the logical design, and the physical development environment); highlights traps, pitfalls, and work-arounds in the application of C ++ to OOD; shows how to use the Booch method of OOD (exploring the notation in detail, using it to present the concepts of OOD, and where appropriate, translating the notation into corresponding C++ code); and presents the different forms of object-oriented multiprocessing and the tools and principles of designing object-oriented applications using them. For engineers who want to build software systems in C++ using Object-Oriented Design techniques, and for software engineers who want to learn the nitty gritty details of building Object-Oriented software. Taking on a global orientation to software programming, this practical guide offers scores of tested methods for using the C++ programming language with object-oriented design techniques for creating a variety of applications and solving a host of programming problems. Overview of UML for Java Programmers 12 Diagram Types 13 Class Diagrams 15 Object Diagrams 16 Sequence Diagrams 17 Collaboration Diagrams 17 State Diagrams 18 Conclusion 19 Bibliography 19 Working with Diagrams 20 Why Model? 20 Why build models of software? 21 Why should we build comprehensive designs before coding? 21 Making Effective use of UML 21 Communicating with Others. 22 Back end Documentation 24 What to keep, and What to throw away. 25 Iterative Refinement 26 Behavior first. 26 Check the structure 28 Envisioning the code. 30 Iterative Refinement 31 Minimalism 32 When and how to draw diagrams. 32 When to draw diagrams, and when to stop. 32 CASE Tools. 33 But what about documentation? 34 And Javadocs? 34 Conclusion 35 Class Diagrams 36 The Basics 36 Classes 36 Association 37 Multiplicity 37 Inheritance 38 An Example Class Diagram 39 The Details 41 Class Stereotypes 41 Abstract classes 42 Properties 42 Aggregation 43 Composition 44 Multiplicity 45 Association Stereotypes 46 Inner Classes 47 Anonymous Inner Classes 47 Association classes 48 Association Qualifiers 49 Conclusion 49 Bibliography 50 Sequence Diagrams 52 The Basics 52 Objects, Lifelines, Messages, and other odds and ends. 52 Creation and Destruction 54 Simple Loops 55 Cases and Scenarios 55 Advanced Concepts 59 Loops and Conditions 59 Messages that take time. 60 Asynchronous Messages. 62 Multiple Threads 64 Active Objects 65 Sending Messages to Interfaces. 65 Conclusion 67 Use Cases 68 Writing Use Cases 68 What is a use case. 69 The Primary Course 69 Alternate Courses 70 What else? 70 Use Cases Diagrams 71 System Boundary Diagram 71 Use Case Relationships 72 Conclusion 72 Principles of OOD 74 Design Quality 74 Design Smells. 74 Dependency Management 75 The Single Reponsibility Principle (SRP) 75 The Open Closed Principle (OCP) 77 The Liskov Substitution Principle (LSP) 89 The Dependency Inversion Principle (DIP) 91 The Interface Segregation Principle 92 Conclusion 93 Bibliography 94 The Practices: dX 96 Iterative Development 96 The Initial Exploration 96 Estimating the features 97 Spikes 98 Planning 98 Planning Releases 98 Planning Iterations 98 The midpoint. 99 Velocity Feedback. 100 Organizing the Iterations into Management Phases 100 What’s in an Iteration? 100 Developing in Pairs 101 Acceptance Tests 101 Unit Tests 102 Refactoring 102 Open Office 103 Continuous Integration 103 Conclusion 103 Bibliography 104 Packages 106 Java Packages 106 Packages 106 Dependencies 107 Binary Components -- .jar files. 108 Principles of Package Design 108 The Release/Reuse Equivalency Principle (REP) 109 The Common Closure Principle (CCP) 109 The Common Reuse Principle (CRP) 110 The Acyclic Dependencies Principle (ADP) 110 The Stable Dependencies Principle (SDP) 110 The Stable Abstractions Principle (SAP) 111 Conclusion 111 Object Diagrams 114 A Snapshot in Time. 114 Active Objects 116 Conclusion 119 State Diagrams 120 The Basics 120 Special Events 121 Super States 122 Initial and Final Pseudo States 124 Using FSM Diagrams 124 SMC 125 ICE: A Case Study 127 Conclusion 132 Heuristics and Coffee 134 The Mark IV Special Coffee Maker 134 A Challenge. 137 A Common, but Hideous, Coffee Maker Solution 137 MissingMethods. 137 Vapor Classes 138 Imaginary Abstraction 139 God Classes 140 A Coffee Maker Solution 140 Crossed Wires 141 The Coffee Maker User Interface 142 Use Case 1: User pushes brew button. 142 Use Case 2: Containment Vessel not Ready. 143 Use Case 3: Brewing Complete. 143 Use Case 4: Coffee all gone. 145 Implementing the Abstract Model. 145 Use Case 1. User pushes Brew Button (Mark IV) 146 Implementing the isReady() functions. 147 Implementing the start() functions. 148 How does M4UserInterface.checkButton get called? 149 Completing the Coffee Maker 150 The Benefits of this design. 152 How did I really come up with this design? 152 SMC Remote Service: Case Study 164 Caveat Emptor 164 Unit Tests. 165 The SMCRemote System. 165 SMCRemoteClient 165 SMCRemoteClient Command Line 166 SMCRemote Communication Protocols 166 SMCRemoteClient 168 The Loggers 175 The Remote Sessions. 176 RemoteSessionBase 177 The Remote Registrar 180 The Remote Compiler 182 FileCarrier 187 SMCRemoteClient Conclusion 188 SMCRemoteServer 189 SocketService 189 SMCRemoteService 194 SMCRemoteServer 198 ServerSession 201 Three Level FSM 203 UserRepository 203 OReillyEmailSender 213 PasswordGenerator 213 Conclusion. 214 Tests for SMCRemoteClient 215 Tests for SocketService 222 Tests for SMCRemoteServer 225 Other Tests 235 ServerController (SMC Generated) 238 Bibliography 246 Overview of UML for Java Programmers......Page 12 Diagram Types......Page 13 Class Diagrams......Page 15 Object Diagrams......Page 16 Collaboration Diagrams......Page 17 State Diagrams......Page 18 Bibliography......Page 19 Why Model?......Page 20 Making Effective use of UML......Page 21 Communicating with Others.......Page 22 Back end Documentation......Page 24 What to keep, and What to throw away.......Page 25 Behavior first.......Page 26 Check the structure......Page 28 Envisioning the code.......Page 30 Iterative Refinement......Page 31 When to draw diagrams, and when to stop.......Page 32 CASE Tools.......Page 33 And Javadocs?......Page 34 Conclusion......Page 35 Classes......Page 36 Multiplicity......Page 37 Inheritance......Page 38 An Example Class Diagram......Page 39 Class Stereotypes......Page 41 Properties......Page 42 Aggregation......Page 43 Composition......Page 44 Multiplicity......Page 45 Association Stereotypes......Page 46 Anonymous Inner Classes......Page 47 Association classes......Page 48 Conclusion......Page 49 Bibliography......Page 50 Objects, Lifelines, Messages, and other odds and ends.......Page 52 Creation and Destruction......Page 54 Cases and Scenarios......Page 55 Loops and Conditions......Page 59 Messages that take time.......Page 60 Asynchronous Messages.......Page 62 Multiple Threads......Page 64 Sending Messages to Interfaces.......Page 65 Conclusion......Page 67 Writing Use Cases......Page 68 The Primary Course......Page 69 What else?......Page 70 System Boundary Diagram......Page 71 Conclusion......Page 72 Design Smells.......Page 74 The Single Reponsibility Principle (SRP)......Page 75 The Open Closed Principle (OCP)......Page 77 The Liskov Substitution Principle (LSP)......Page 89 The Dependency Inversion Principle (DIP)......Page 91 The Interface Segregation Principle......Page 92 Conclusion......Page 93 Bibliography......Page 94 The Initial Exploration......Page 96 Estimating the features......Page 97 Planning Iterations......Page 98 The midpoint.......Page 99 What’s in an Iteration?......Page 100 Acceptance Tests......Page 101 Refactoring......Page 102 Conclusion......Page 103 Bibliography......Page 104 Packages......Page 106 Dependencies......Page 107 Principles of Package Design......Page 108 The Common Closure Principle (CCP)......Page 109 The Stable Dependencies Principle (SDP)......Page 110 Conclusion......Page 111 A Snapshot in Time.......Page 114 Active Objects......Page 116 Conclusion......Page 119 The Basics......Page 120 Special Events......Page 121 Super States......Page 122 Using FSM Diagrams......Page 124 SMC......Page 125 ICE: A Case Study......Page 127 Conclusion......Page 132 The Mark IV Special Coffee Maker......Page 134 MissingMethods.......Page 137 Vapor Classes......Page 138 Imaginary Abstraction......Page 139 A Coffee Maker Solution......Page 140 Crossed Wires......Page 141 Use Case 1: User pushes brew button.......Page 142 Use Case 3: Brewing Complete.......Page 143 Implementing the Abstract Model.......Page 145 Use Case 1. User pushes Brew Button (Mark IV)......Page 146 Implementing the isReady() functions.......Page 147 Implementing the start() functions.......Page 148 How does M4UserInterface.checkButton get called?......Page 149 Completing the Coffee Maker......Page 150 How did I really come up with this design?......Page 152 Caveat Emptor......Page 164 SMCRemoteClient......Page 165 SMCRemote Communication Protocols......Page 166 SMCRemoteClient......Page 168 The Loggers......Page 175 The Remote Sessions.......Page 176 RemoteSessionBase......Page 177 The Remote Registrar......Page 180 The Remote Compiler......Page 182 FileCarrier......Page 187 SMCRemoteClient Conclusion......Page 188 SocketService......Page 189 SMCRemoteService......Page 194 SMCRemoteServer......Page 198 ServerSession......Page 201 UserRepository......Page 203 PasswordGenerator......Page 213 Conclusion.......Page 214 Tests for SMCRemoteClient......Page 215 Tests for SocketService......Page 222 Tests for SMCRemoteServer......Page 225 Other Tests......Page 235 ServerController (SMC Generated)......Page 238 Bibliography......Page 246 UML for Java Programmers Robert C. Martin All the UML Java developers need to know You don't use UML in a vacuum: you use it to build software with a specific programming language. If that language is Java, you need UML for Java Programmers . In this book, one of the world's leading object design experts becomes your personal coach on UML 1&2 techniques and best practices for the Java environment. Robert C. Martin illuminates every UML 1&2 feature and concept directly relevant to writing better Java software--and ignores features irrelevant to Java developers. He explains what problems UML can and can't solve, how Java and UML map to each other, and exactly how and when to apply those mappings. Pragmatic coverage of UML as a working tool for Java developers Shows Java code alongside corresponding UML diagrams Covers every UML diagram relevant to Java programmers, including class, object, sequence, collaboration, and state diagrams Introduces dX, a lightweight, powerfully productive RUP and XP-derived process for successful software modeling Includes a detailed, start-to-finish case study: remote service client, server, sockets, and tests You don't use UML in a vacuum: you use it to build software with a specific programming language. If that language is Java, you need UML for Java Programmers. In this book, one of the world's leading object design experts becomes your personal coach on UML 1 & 2 techniques and best practices for the Java environment. Robert C. Martin illuminates every UML 1 & 2 feature and concept directly relevant to writing better Java software--and ignores features irrelevant to Java developers. He explains what problems UML can and can't solve, how Java and UML map to each other, and exactly how and when to apply those mappings. Pragmatic coverage of UML as a working tool for Java developers; Shows Java code alongside corresponding UML diagrams; Covers every UML diagram relevant to Java programmers, including class, object, sequence, collaboration, and state diagrams; Introduces dX, a lightweight, powerfully productive RUP & XP-derived process for successful software modeling; Includes a detailed, start-to-finish case study: remote service client, server, sockets, and tests The Unified Modeling Language has become the industry standard for the expression of software designs. The Java programming language continues to grow in popularity as the language of choice for the serious application developer. Using UML and Java together would appear to be a natural marriage, one that can produce considerable benefit. However, there are nuances that the seasoned developer needs to keep in mind when using UML and Java together. Software expert Robert Martin presents a concise guide, with numerous examples, that will help the programmer leverage the power of both development concepts. The author ignores features of UML that do not apply to java programmers, saving the reader time and effort. He provides direct guidance and points the reader to real-world usage scenarios. The overall practical approach of this book brings key information related to Java to the many presentations. The result is an highly practical guide to using the UML with Java. For senior/graduate level courses on Object Oriented Design using C++, and the Booch (BC) - OOD book. A practical, problem-solving approach to the fundamental concepts of Object Oriented Design and their application using C++. This book is written for the "engineer in the trenches". It is a serious guide for practitioners of Object-Oriented design. The style is narrative, and accessible for the beginner, and yet the topics are covered in enough depth to be relevant to the consumate designer. The principles of OOD explained, one by one, and then demonstrated with numerous examples and case studies. Useful for senior/graduate level courses on Object Oriented Design using C++, with the Booch (BC) method. This book provides a problem-solving approach to the fundamental concepts of OOD and their application using C++. It is a guide for practitioners of OOD. It covers the topics in depth to be relevant to the consumate designer.
دانلود کتاب UML for Java Programmers (Robert C. Martin)