Video description
In Video Editions the narrator reads the book while the content, figures, code listings, diagrams, and text appear on the screen. Like an audiobook that you can also watch as a video.
Learn the fundamentals of Object-Oriented design by investigating good—and bad—code!
Well-designed applications run more efficiently, have fewer bugs, and are easier to revise and maintain. Using an engaging “before-and-after” approach, Object-Oriented Software Design in C++ shows you exactly what bad software looks like and how to fix it with good design principles and patterns.
In Object-Oriented Software Design in C++, you’ll find:
- Design-code-test iterations that improve code with each revision
- Gathering requirements to make sure you’re developing the right application
- Design principles like encapsulation and delegation that solve programming problems
- Design patterns including Observer Design Pattern that fix architecture issues
- Using recursion and multithreading to simplify common solutions
Object-Oriented Software Design in C++ is a vital guide to building the kind of high performance applications delivered by the pros—all using industry-proven design principles and patterns. You’ll learn how to gather and analyze requirements so you’re building exactly what your client is looking for, backtrack mistakes with iterative development, and build a toolbox of design patterns that troubleshoot common issues with application architecture. The book’s accessible examples are written in C++ 17, but its universal principles can be applied to any object-oriented language.
About the Technology
Good design is the foundation of great software. Mastering the principles of object-oriented design is the surest way to create applications that run fast, have few bugs, and last well into the future. Written especially for new C++ programmers, this easy-to-read book gently mentors you in the art of designing great software.
About the Book
Object-Oriented Software Design in C++ introduces object-oriented design principles, practices, and patterns in clear, jargon-free language. The instantly-familiar before-and-after examples highlight the benefits of good design. Each chapter is full of friendly conversations that anticipate your questions and help point out the subtleties you might overlook. Along the way, you’ll pick up tips about idiomatic C++ style that will set your code apart.
What's Inside
- Design-code-test iterations
- Design principles for common programming problems
- Architecture design patterns in plain English
- Recursion and multithreading
About the Reader
Examples are in C++ 17.
About the Author
Ronald Mak is a former NASA senior scientist. Currently, he teaches computer science at San Jose State University.
The technical editor on this book was Juan Rufes.
Quotes
It is a joy to see these timeless and pragmatic lessons! If you have basic C++ knowledge, you will become a better programmer by mastering these principles and patterns of object-oriented design.
- Cay Horstmann, author of Core Java and Big C++
Ron Mak has mentored many, many students and through this book you can benefit from his knowledge and experience.
- Dan Harkey, Director of Software Engineering, San Jose State University
Elevate your software design skills with this exceptional guide. A brilliantly crafted masterpiece that goes deep into the art of designing software.
- Eros Pedrini, NTT Data
Table of contents
- Part 1. Introduction
- Chapter 1. The path to well-designed software
- Chapter 1. What you will learn from this book
- Chapter 1. The benefits of good software design
- Chapter 1. A few design examples
- Chapter 1. Make sure we’re going to build the right application; then, build it right
- Chapter 1. Good design doesn’t come easily
- Chapter 1. Change and complexity are the enemies of good design
- Chapter 1. Design with object-oriented programming concepts
- Chapter 1. Summary
- Chapter 2. Iterate to achieve good design
- Chapter 2. Don’t let changes leak out
- Chapter 2. Iterate to achieve good design
- Chapter 2. Summary
- Part 2. Design the right application
- Chapter 3. Get requirements to build the right application
- Chapter 3. Functional requirements: What must the application do?
- Chapter 3. Nonfunctional requirements: Constraints on the application
- Chapter 3. What are good requirements?
- Chapter 3. How to get requirements
- Chapter 3. Unified Modeling Language diagrams for creating and documenting design
- Chapter 3. Use cases provide context for the requirements
- Chapter 3. The functional specification and software validation
- Chapter 3. Where do classes come from?
- Chapter 3. Summary
- Chapter 4. Good class design to build the application right
- Chapter 4. Two important goals for good class design
- Chapter 4. UML class diagrams to document class design
- Chapter 4. Class relationships determine runtime interactions
- Chapter 4. UML state diagram: How an object changes state
- Chapter 4. UML sequence diagram: How objects interact [optional]
- Chapter 4. The design specification and software verification
- Chapter 4. Summary
- Part 3. Design the application right
- Chapter 5. Hide class implementations
- Chapter 5. Public getter and setter functions access hidden implementation selectively
- Chapter 5. Class Date: An example of implementation hiding
- Chapter 5. Public setter functions carefully modify hidden implementation
- Chapter 5. Beware of dangerous setter functions
- Chapter 5. Rules from the Law of Demeter
- Chapter 5. But is the implementation really hidden?
- Chapter 5. The Open-Closed Principle supports code stability
- Chapter 5. Summary
- Chapter 6. Don’t surprise your users
- Chapter 6. Poor performance is an unwelcome surprise
- Chapter 6. Programming by Contract helps to eliminate surprises [optional]
- Chapter 6. Summary
- Chapter 7. Design subclasses right
- Chapter 7. The Liskov Substitution Principle and proper subclasses
- Chapter 7. Use a factory function with the Code to the Interface Principle
- Chapter 7. Programming by Contract with subclasses [optional]
- Chapter 7. Summary
- Part 4. Design patterns solve application architecture problems
- Chapter 8. The Template Method and Strategy Design Patterns
- Chapter 8. The Strategy Design Pattern encapsulates algorithms
- Chapter 8. Choose between Template Method and Strategy
- Chapter 8. Summary
- Chapter 9. The Factory Method and Abstract Factory Design Patterns
- Chapter 9. The Abstract Factory Design Pattern creates families of objects
- Chapter 9. Summary
- Chapter 10. The Adapter and Façade Design Patterns
- Chapter 10. The Façade Design Pattern hides a subsystem of interfaces
- Chapter 10. Summary
- Chapter 11. The Iterator and Visitor Design Patterns
- Chapter 11. The Visitor Design Pattern encapsulates different algorithms that operate on a data collection
- Chapter 11. After using the Visitor Design Pattern
- Chapter 11. Summary
- Chapter 12. The Observer Design Pattern
- Chapter 12. Summary
- Chapter 13. The State Design Pattern
- Chapter 13. Summary
- Chapter 14. The Singleton, Composite, and Decorator Design Patterns
- Chapter 14. The Composite Design Pattern treats individual and composite objects uniformly
- Chapter 14. The Decorator Design Pattern dynamically adds object responsibilities
- Chapter 14. Summary
- Part 5. Additional Design Techniques
- Chapter 15. Designing solutions with recursion and backtracking
- Chapter 15. Finding the largest value by recursion
- Chapter 15. Reversing a vector by recursion
- Chapter 15. Solve the Towers of Hanoi puzzle by recursion
- Chapter 15. Recursive algorithms for a binary search tree
- Chapter 15. Quicksort an array with recursion
- Chapter 15. The Fibonacci sequence and a recursion disaster
- Chapter 15. Dynamic backtracking increases the power of recursion
- Chapter 15. Solving the eight queens puzzle with recursion and backtracking
- Chapter 15. Solving Sudoku puzzles with recursion and backtracking
- Chapter 15. Summary
- Chapter 16. Designing multithreaded programs
- Chapter 16. A mutex enforces mutual exclusion
- Chapter 16. Condition variables synchronize threads
- Chapter 16. A final note on multithreading
- Chapter 16. Summary
Product information
- Title: Object-Oriented Software Design in C++, Video Edition
- Author(s):
- Release date: June 2024
- Publisher(s): Manning Publications
- ISBN: None
You might also like
book
Object-Oriented Software Design in C++
Learn the fundamentals of Object-Oriented design by investigating good—and bad—code! Well-designed applications run more efficiently, have …
book
Software Architecture with C++
Apply business requirements to IT infrastructure and deliver a high-quality product by understanding architectures such as …
video
C++ Concurrency in Action, Second Edition, Video Edition
"This book should be on every C++ programmer’s desk. It’s clear, concise, and valuable." Rob Green, …
book
Game Programming in C++: Creating 3D Games, First Edition
You can program games in many languages, but C++ remains the key language used by many …