Practical Object-Oriented Development with UML and Java is for busy professional software analysts and developers who work on large systems. If you do not have time to take a class and need to get up-to-speed on object-oriented technology using unified modeling language (UML) and Java, then this book is a self-teaching guide for you. It will help you understand the differences between object-oriented analysis, object-oriented design, and object-oriented programming. Our goals are to Teach you to build an object-oriented application using Java 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 object-oriented technology while focusing on its practicality as a software engineering tool Provide a practical approach to analysis, design, and programming in object-oriented technology Show how to implement object-oriented technology using Java Balance theory with application practices in the existing literature You do not have to 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 Java; they illustrate how working code in Java is produced. OBJECT-ORIENTED TECHNOLOGY We are software developers of large systems. We have delivered code written in several dozen programming languages representing a half-dozen software technologies. There have been few software revolutions that we have not experienced over the last 30 years. So it is from some nontrivial perspective that we say that it is our belief that object-oriented technology is the most important software technology with which we have worked. Why do we say this? Well, object-orientation has changed the way we build software and the way applications intercommunicate over worldwide networks and across mufti-vendor computers. Moreover, the object model is changing the way we design business processes and the way we think about an enterprise. Most enterprises are in the process of redesigning themselves to meet current business challenges introduced by the Internet. Object-orientation is playing a major role in this effort by providing a model that captures the business processes, procedures, policies, and rules that facilitate design. The use of tools that translate the model into an operational system speeds implementation of the redesign. As-market or business conditions change, these systems should be regenerated to reflect these changes by updating the model and using these tools. Solid software engineering practices have taken us farther and faster than any other approach in previous decades. It is a common belief that object-oriented technology has put a dent in the software crisis, meaning that the mechanisms of object-oriented technology are becoming for software what the bolts and beams are for construction design and what the chip is for computer hardware design. This belief stems from the following: The proficiency of a higher-level object-oriented model provides the software designer with real-world, programmable components, thereby reducing software development costs. Its capability to share and reuse code with object-oriented techniques reduce time to develop an application. Its capability to localize and minimize the effects of modifications through programming abstraction mechanisms allows for faster enhancement development and provides more reliable and more robust software. Its capability to manage complexity allows developers to address more difficult applications. The collection of object-oriented concepts is a tool set for modeling reality. This object-oriented tool set gives developers the best means of managing the complexity. Certain object-oriented concepts help developers produce flexible and maintainable software. WHY UNIFIED MODELING LANGUAGE? As practitioners of object-oriented technology, we know that all the methods, if practiced properly, result in the same or a similar model. Different modeling language notations, however, can be impediments to progress. The unified modeling language (UML) has become an industrial standard that has integrated different modeling notations into a single modeling language notation. This is reason enough to have chosen the UML. UML is a language for documenting our analysis and design models. It gives us all the drawing icons necessary to capture most of the concepts or mechanisms that we find valuable in solving real business problems. Also, it provides all the necessary diagrams that are vital for documenting our models. Finally, it is a living language that gives us the ability to extend the notation for mechanisms not yet defined by the distinguished group of Grady Booch, James Rumbaugh, and Ivor Jacobson at Rational Software Corporation. UML is not the central subject of this book. It is presented as a means of documenting the analysis and design models that are developed as a result of the methods that are the central subject of this book. All of the figures of UML are presented and discussed in terms of what information is captured within them and how that information is captured. WHY JAVA? It is true that Java is exclusively an object-oriented programming language and that this exclusivity tends to limit its use compared to the multi-paradigm programming language C++. Yet Java has one benefit that far outweighs any general limitations. In particular, Java runs on the Java Virtual Machine (Java VM). This allows a Java program to run on any machine that has an implementation of the Java VM running on it. This frees developers from having to design and implement the same functionality for several different combinations of hardware and operating systems. There are positive consequences to the use of the virtual machine that may not be apparent at first glance. For one, vendors can now focus on development of tools and products knowing that they have to invest development dollars on only one implementation and not five or six. This means that they can emphasize the realization of greater functionality (read that as greater business value). This impacts reuse efforts as well. One can develop libraries on any hardware running any operating system and reuse the code without modification for platform differences. Programming errors will not appear in one version of the code for a given platform and not in another. The broader base of reuse of the same code means that greater reliability of components can be achieved in less time and cost. Analysis can focus on business value; design can focus on greater flexibility and maintainability; and implementation and testing can now focus on quality, reliability, and performance. The net result of this change in focus is better code for less money. These benefits are seen when one looks at the large number of Java libraries (frameworks) that are now available from Sun. There is now a good set of general utility libraries, a high-performance graphical user interface library (e.g., SWING), and libraries of special-purpose business classes available to developers. Compared to the C++ versions of these libraries, they are far more sophisticated, provide much greater functionality, and are more easily incorporated into a final product. Because these libraries are available across all projects and are well documented in other books, they are widely used. Hence, expertise in their use is readily available. This is to be compared to the C++ versions that have entirely different application programming interfaces (APIs). In the C++ world, a developer may be an expert for one product on one platform and know nothing about other products for other platforms. Few programmers have actually written code for the PC, Mac, and Unix platforms. The direct incorporation of the Java VM in modern web browsers makes it possible for Java programs to be downloaded from the Internet and run from within the browser. This has helped provide greater functionality within the browser environment and has spawned a new class of applications. It is safe to say that it would have been impossible for us to have achieved the recent gains in functionality, being delivered to users via the Internet without Java. Java programs now appear as both client and server applications. The widespread use of Java in the modern World Wide Web is unlikely to diminish until a new (as yet unrecognized) technology provides a greater set of abstractions and the same broad platform support. OUR APPROACH TO OBJECT-ORIENTED TECHNOLOGY We are not object-oriented purists, and neither are we theorists. We are developers willing to use any good idea that will help us achieve two very critical business goals: lower development cost and reduced time-to-market for enhancements. We believe that these technical objectives reliability, maintainability, and flexibility are critical to meeting these business goals. Our approach to using object-oriented technology is to mange the complexity of developing software so it is reliable, maintainable, and flexible. Managing complexity is the key to achieving these objectives and, thus, our business goals. To manage complexity in complex problem domains, we find that the developers are required to know how objects, classes, relationships, and rules fit into the object paradigm. When we model most complex problem domains, we find objects, classes, and many relationships among objects. In addition, we need to capture the rules (policies) within that domain. Thus, we have to use very rich static modeling techniques to capture the data (object) relationships. Many object-oriented experts consider relationships as "bad" because they violate the encapsulation principle. From our perspective, it helps us manage the complexity of the problem domain and helps us to achieve our business goals. We gladly use it, and we look for more mechanisms and language support in ...
评分
评分
评分
评分
这本书在软件工程方法论层面的探讨,也是我非常赞赏的一部分。它并非孤立地讲解UML和Java,而是将它们置于一个更加宏大的软件开发背景之下。作者在书中穿插了不少关于迭代开发、需求变更处理的讨论,这些都是我们在日常维护工作中会遇到的“硬骨头”。它巧妙地展示了,为什么一个良好的UML设计文档,能在需求不断变化时,成为团队协作的定海神针。相比于那些只关注编码规范的书籍,这本书更像是在教授一种“职业素养”——如何通过规范化的设计文档来降低沟通成本,提高团队的整体效率。读完之后,我感觉自己不仅仅是技术能力得到了提升,更是在软件设计哲学和项目管理思路上也有了质的飞跃,这对于长期职业发展至关重要。
评分这本书简直是为我这种想深入理解面向对象编程的“老鸟”量身定做的。我接触Java已经有一段时间了,也能写出能跑的代码,但总感觉在架构设计上缺了点火候,尤其是在面对复杂的业务需求时,代码的耦合度和可维护性就成了大问题。这本书没有上来就堆砌晦涩难懂的理论,而是非常巧妙地将UML作为一种沟通和设计的工具,贯穿于整个开发流程中。读完前几章,我才真正理解了为什么说“设计先行”。以前我总是习惯于边敲代码边摸索,结果往往是返工率高,代码结构混乱。这本书的价值在于,它提供了一套结构化的思维框架,让你在动手写一行代码之前,就能在图纸上把整个系统的骨架搭起来,明确各个组件的职责和它们之间的交互方式。特别是关于如何用UML来描述那些复杂的并发和状态管理,讲解得极为清晰,让我对如何构建健壮、可扩展的系统有了全新的认识。它不是那种教你语法、API的“工具书”,而是一本真正教你“如何思考”的“心法秘籍”。
评分如果非要找一个可以改进的地方,也许是书中对新兴的微服务架构或函数式编程范式在OO设计中的融合讨论相对较少,但这或许是受限于其核心主题的专注性。抛开这点不谈,这本书对于扎实掌握传统企业级应用、复杂业务系统的面向对象设计,依然是无可替代的经典。它的深度和广度兼备,既有对设计原则的深刻洞察,又有对具体Java实现的细致指导。我将其视为我个人OO开发知识体系中的“基石”,很多我过去依赖的“直觉”式判断,现在都有了理论依据和规范化的表达方式。这本书的阅读体验非常流畅,逻辑严密,绝对是值得每个希望成为高级软件工程师的人,在书架上占据重要位置的一本书。
评分对于初学者来说,这本书可能需要一点耐心,但绝对是物超所值的投资。我之前学OO的一些概念,比如继承、多态,总是在代码层面打转,感觉很抽象。这本书厉害之处在于,它通过UML这条“视觉语言”,把这些抽象的概念具象化了。当我看到类图、序列图是如何精确描绘继承层次和方法调用的时,那些原本模糊的概念瞬间变得清晰可见。作者似乎非常理解学习者的困惑点,总是能在关键的地方加入一些“过来人的忠告”,比如如何避免过度设计,以及什么时候应该选择组合而非继承。我尤其喜欢它对领域建模的阐述,引导读者如何从现实世界的业务需求中提炼出核心的领域对象,而不是一头扎进技术实现细节里出不来。这种自上而下的设计方法论,极大地改善了我以往“需求一到,先写Service”的糟糕习惯。
评分说实话,我一开始是被“Practical”(实践性)这个词吸引的,因为很多OOAD的书读起来太像在啃教科书,理论扎实但落地困难。然而,这本书在实践层面的处理方式,简直是教科书级别的范本。它没有停留在泛泛而谈的“高内聚、低耦合”上,而是通过一系列精心挑选的案例,展示了如何在实际项目中应用设计原则。比如,书中对几种经典设计模式的讲解,不是简单地罗列结构图,而是深入剖析了它们在解决特定设计难题时的适用场景和权衡。我特别欣赏作者在介绍“工厂模式”和“策略模式”时,对比了它们在不同业务场景下的优劣,这让我明白,没有“银弹”,只有最适合当前问题的“利器”。书中的代码示例质量非常高,都是可以直接借鉴和学习的典范,清晰地展示了UML模型是如何一步步转化为可执行的Java代码的,这种无缝衔接的体验,极大地提升了我的开发信心。
评分 评分 评分 评分 评分本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2026 book.wenda123.org All Rights Reserved. 图书目录大全 版权所有