How we did it:
Ralph Johnson, Erich Gamma, John Vlissides, Richard Helm
Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves. The authors begin by describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. With Design Patterns as your guide, you will learn how these important patterns fit into the software development process, and how you can leverage them to solve your own design problems most efficiently. Each pattern describes the circumstances in which it is applicable, when it can be applied in view of other design constraints, and the consequences and trade-offs of using the pattern within a larger design. All patterns are compiled from real systems and are based on real-world examples. Each pattern also includes code that demonstrates how it may be implemented in object-oriented programming languages like C++ or Smalltalk. 0201633612B07092001
This volume is a handbook for enterprise system developers, guiding them through the intricacies and lessons learned in enterprise application development. It provides proven solutions to the everyday problems facing information systems developers.
Features the best practices in the art and science of constructing software--topics include design, applying good techniques to construction, eliminating errors, planning, managing construction activities, and relating personal character to superior software. Original. (Intermediate)
Martin Fowler, Kent Beck
Users can dramatically improve the design, performance, and manageability of object-oriented code without altering its interfaces or behavior. "Refactoring" shows users exactly how to spot the best opportunities for refactoring and exactly how to do it, step by step.
Robert C. Martin
Written by a software developer for software developers, this book is a unique collection of the latest software development methods. The author incudes OOD, UML, Design Patterns, Agile and XP methods with a detailed description of a complete software design for reusable programs in C++ and Java. Using a practical, problem-solving approach, it shows how to develop an object-oriented application -- from the early stages of analysis, through the low-level design and into the implementation. Walks readers through the designer's thoughts — showing the errors, blind alleys, and creative insights that occur throughout the software design process. Covers: Statics and Dynamics; Principles of Class Design; Complexity Management; Principles of Package Design; Analysis and Design; Patterns and Paradigm Crossings. Explains the principles of OOD, one by one, and then demonstrates them with numerous examples, completely worked-through designs, and case studies. Covers traps, pitfalls, and work arounds in the application of C++ and OOD and then shows how Agile methods can be used. Discusses the methods for designing and developing big software in detail. Features a three-chapter, in-depth, single case study of a building security system. For Software Engineers, Programmers, and Analysts who want to understand how to design object oriented software with state of the art methods.
This is, quite simply, the definitive reference on the most important development in software technology for the last 20 years: object-orientation.A whole generation was introduced to object technology through the first edition of this book. This long-awaited new edition retains the qualities of clarity, practicality and scholarship that made the first an instant best-seller, but has been thoroughly revised and expanded. Among the new topics covered in depth are: Concurrency, distribution, client/server and the Internet; object-oriented databases; design by contract; fundamental design patterns; finding classes; the use and misuse of inheritance; abstract data types; and typing issues. The book also includes completely updated discussions of reusability, modularity, software quality, object-oriented languages, memory management, and many other essential topics.All software developers and computer science students, worldwide.
In his long-awaited book, Martin Fowler has done for application domain patterns what the Gang of Four [Gamma et al.] have done for general purpose design patterns in their book, Design Patterns: Elements of Reusable Object-Oriented Software. This book is a must have for all analysts and designers doing object-oriented business modeling and business process re-engineering. —Donald G. Firesmith, Knowledge Systems Corporation Fowler shares with you his wealth of object modeling experience and his keen eye for identifying repeating problems and transforming them into reusable models. Analysis Patterns provides a catalogue of patterns that have emerged in a wide range of domains, including trading, measurement, accounting, and organizational relationships.
The long-awaited revision of THE book on learning proper OO analysis and design, from UML founder Grady Booch is back!
Arthur J. Riel
Wouldn't you like to have a seasoned OO design expert looking over your shoulder, critiquing your work, and giving advice on how to improve it? Here are 60 language-independent guidelines for evaluating the quality and integrity of object-oriented designs that will help you pinpoint where your design needs help and how to improve it. The guidelines range from such topics as classes and objects (with emphasis on their relationships) to physical object-oriented design. In particular, you will gain an understanding of the synergy between design heuristics, which can highlight a problem, and design patterns, which can provide the solution.
This revision of Grady Booch's classic offers the first industry-wide standard for notation in developing large scale object-oriented systems. Laying the groundwork for the development of complex systems based on the object model, the author works in C++ to provide five fully-developed design examples, along with many smaller applications. Three of these capstone projects are new with this edition, including an inventory tracking system which implements a client server. The other four span problem domains as diverse as data acquisition for scientific tools, framework, artificial intelligence, and command and control. To measure progress, metrics in object development are suggested so that the developer knows how the project is going. In addition, the author demonstrates good and bad object designs and shows how to manage the trade-offs in complex systems.
Master the Unified Modeling Language, the new standard for object orientation. It's not enough just to learn an object-oriented language. A proficient programmer must also have the ability to design robust, scalable, maintainable systems. Applying UML and Patterns was written especially to provide the foundation for a complete understanding of the object paradigm, and how to put it to practical use. "Applying UML and Patterns" provides beginning object programmers with a detailed activity roadmap to guide them through each step of requirements, analysis, design, and coding. This book strongly emphasizes translating theoretical concepts to practical applications, including: Mapping object-oriented diagrams directly to Java code Expressing models using UML Integrating patterns for analysis and design Creating layered architectures Building frameworks Using a single integrated case study throughout the book, "Applying UML and Patterns" provides a comprehensive, hands-on approach that gives a thorough grounding to beginning and intermediate programmers. This book is also available as part of Applying UML and Patterns - The Complete Video Course (ISBN: 0-13-025559-9).
David M. Beazley
Python Essential Reference, 3rd Edition,is a comprehensive reference to the Python programming language. The focus of this latest edition is to add coverage of significant new features and new library modules added to the language over the past five years. Clearly written with concise organization, the new features covered include new style classes, unification of types and classes, xmlrpclip, intertools, bz2 and optparse, making it the most up-to-date Python book on the market.
Peter Coad, Mark Mayfield, Jonathan Kern
In this completely updated book, internationally-respected object oriented development experts Peter Coad and Mark Mayfield bring discipline to Java development, showing how to design Java client/server apps for maximum efficiency and reliability. They review object models, scenario views, multithreading, concurrency, exceptions, and more, presenting leading-edge design techniques that are proven to work. This new edition features UML 1.1 notation throughout; six powerful new strategies for designing with interfaces; important new coverage of swing classes, design models for Enterprise Beans, inner classes, packages, Infobus architecture and much more. The CD-ROM contains the breakthrough TOGETHER/J Whiteboard Edition, a completely free, Java-based, full UML, platform-independent visual modeler for enterprise-wide software development. For any professional software developer interested in client/server programming with Java.
Introduction: What does it mean to be object-oriented, anyway? Object-orientation - Who ordered that? Object-oriented design notation. The basic notation for classes em methods. Inheritance and aggregation diagrams. The object-communication diagram. State-transition diagrams. Additional OODN diagrams. The principles of object-oriented design: Encapsulation and connascence. Domains, encumbrance, and cohesion. Properties of classes and subclasses. The perils of inheritance and polymorphism. Class interfaces. Appendix A: Checklist for an object-oriented design walkthrough. Appendix B: The Object-oriented design owner's manual. Appendix C: Blitz guide to object-oriented terminology.
Sherman R. Alpert, Kyle Brown, Bobby Woolf
In this new book, intended as a language companion to the classic Design Patterns , noted Smalltalk and design patterns experts implement the 23 design patterns using Smalltalk code. This approach has produced a language-specific companion that tailors the topic of design patterns to the Smalltalk programmer. The authors have worked closely with the authors of Design Patterns to ensure that this companion volume meets the same quality standards that made the original a bestseller and indispensable resource. The full source code will be available on the AWL web site.
Robert C. Martin
Taking a global orientation to software programming, this practical guide offers scores of tested methods for using the C++ programming language with object-orientated design techniques, for creating a variety of applications and solving a host of programming problems. The reference provides extensive coverage on complexity management; designing the physical model; preparing code for implementation; C++, OOP, and concurrent processes; and other key areas of Object-Orientated and C++ programming.