How we did it:
For any feedback, any questions, any notes or just for chat - feel free to follow us on social networks
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
Kathy Sierra, Bert Bates
An interactive guide to the fundamentals of the Java programming language utilizes icons, cartoons, and numerous other visual aids to introduce the features and functions of Java and to teach the principles of designing and writing Java programs.
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.
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.
Robert L. Glass
Regarding the controversial and thought-provoking assessments in this handbook, many software professionals might disagree with the authors, but all will embrace the debate. Glass identifies many of the key problems hampering success in this field. Each fact is supported by insightful discussion and detailed references.
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.
Leandro Nunes de Castro
Natural computing brings together nature and computing to develop new computational tools for problem solving; to synthesize natural patterns and behaviors in computers; and to potentially design novel types of computers. Fundamentals of Natural Computing: Basic Concepts, Algorithms, and Applications presents a wide-ranging survey of novel techniques and important applications of nature-based computing. This book presents theoretical and philosophical discussions, pseudocodes for algorithms, and computing paradigms that illustrate how computational techniques can be used to solve complex problems, simulate nature, explain natural phenomena, and possibly allow the development of new computing technologies. The author features a consistent and approachable, textbook-style format that includes lucid figures, tables, real-world examples, and different types of exercises that complement the concepts while encouraging readers to apply the computational tools in each chapter. Building progressively upon core concepts of nature-inspired techniques, the topics include evolutionary computing, neurocomputing, swarm intelligence, immunocomputing, fractal geometry, artificial life, quantum computing, and DNA computing. Fundamentals of Natural Computing is a self-contained introduction and a practical guide to nature-based computational approaches that will find numerous applications in a variety of growing fields including engineering, computer science, biological modeling, and bioinformatics.