Skip to main content
  • Book
  • © 2017

Practical C++ Design

From Programming to Architecture

Apress

Authors:

  • Develop a complete, cross-platform C++ application from a blank canvas

  • Learn to translate a specification document into a practical C++ design

  • Learn the fundamentals of API design

Buy it now

Buying options

eBook USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever

Tax calculation will be finalised at checkout

Other ways to access

This is a preview of subscription content, log in via an institution to check for access.

Table of contents (8 chapters)

  1. Front Matter

    Pages i-xx
  2. Defining the Case Study

    • Adam B. Singer
    Pages 1-7
  3. Decomposition

    • Adam B. Singer
    Pages 9-29
  4. The Stack

    • Adam B. Singer
    Pages 31-55
  5. The Command Dispatcher

    • Adam B. Singer
    Pages 57-96
  6. The Command Line Interface

    • Adam B. Singer
    Pages 97-113
  7. The Graphical User Interface

    • Adam B. Singer
    Pages 115-144
  8. Plugins

    • Adam B. Singer
    Pages 145-193
  9. New Requirements

    • Adam B. Singer
    Pages 195-223
  10. Back Matter

    Pages 225-246

About this book

Go from competent C++ developer to skilled designer or architect using this book as your C++ design master class. This title will guide you through the design and implementation of a fun, engaging case study. Starting with a quick exploration of the requirements for building the application, you'll delve into selecting an appropriate architecture, eventually designing and implementing all of the necessary modules to meet the project’s requirements. By the conclusion of Practical C++ Design, you'll have constructed a fully functioning calculator that builds and executes on multiple platforms. Access to the complete source code will help speed your learning.


Utilize the Model-View-Controller pattern to determine the optimal architecture for the calculator; the observer pattern to design an event system; the singleton pattern as you design the calculator’s central data repository, a reusable stack; the command pattern to design a command system supporting unlimited undo/redo; and the abstract factory pattern for a cross-platform plugin infrastructure to make the calculator extensible.


What You Will Learn

  • Read a specification document and translate it into a practical C++ design
  • Understand trade-offs in selecting between alternative design scenarios
  • Gain practical experience in applying design patterns to realistic development scenarios
  • Learn how to effectively use language elements of modern C++ to create a lasting design
  • Develop a complete C++ program from a blank canvas through to a fully functioning, cross platform application
  • Read, modify, and extend existing, high quality code
  • Learn the fundamentals of API design, including class, module, and plugin interfaces

Who This Book Is For



The experienced C++ developer ready to take the next step to becoming a skilled C++ designer.

Reviews

“Practical C++ Design, is the type of text that can play a significant role in assisting software developers … . It introduces the concepts and features of a C++ environment within the context of developing a project. … The book provides a concise and excellent set of references and a well-constructed index. Recommended. Lower-division undergraduates through faculty and professionals.” (J. Beidler, Choice, Vol. 55 (12), August, 2018)

Authors and Affiliations

  • The Woodlands, USA

    Adam B. Singer

About the author

Adam B. Singer graduated first in his class at the Georgia Institute of Technology in 1999 with a bachelors degree in chemical engineering. He subsequently attended the Massachusetts Institute of Technology on a National Defense, Science, and Engineering Graduate Fellowship. He graduated from MIT with a Ph.D. in chemical engineering in 2004 after defending his thesis titled Global Dynamic Optimization. 


Since graduation, Adam has been a member of the research and engineering staff at an oil and gas major, where he has worked in software development, design, and project management in areas such as optimization, reservoir simulation, decision support under uncertainty, basin modeling, well log modeling, and stratigraphy. He has also served on and chaired committees designing in-house training in the areas of technical software development and computational and applied mathematics. He currently holds a research supervisory position.



Adam additionally held the title of adjunct assistant professor in the Department of Computational and Applied Mathematics at Rice University from 2007-2012. In both 2006 and 2007, he taught a graduate level course, CAAM 520, on computational science. The course focused on the design and implementation of high performance parallel programs.


Bibliographic Information

Buy it now

Buying options

eBook USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever

Tax calculation will be finalised at checkout

Other ways to access