Do Screencasts Really Work? Assessing Student Learning through Instructional Screencasts
Overview of Design Patterns in C++schmidt/cs251/2020-PDFs/patterns-overvie… · •See my website...
Transcript of Overview of Design Patterns in C++schmidt/cs251/2020-PDFs/patterns-overvie… · •See my website...
![Page 1: Overview of Design Patterns in C++schmidt/cs251/2020-PDFs/patterns-overvie… · •See my website for many more videos & screencasts related to programming with patterns, frameworks,](https://reader033.fdocuments.us/reader033/viewer/2022052020/60340b4bb259a3322d3a7286/html5/thumbnails/1.jpg)
Overview of Design Patterns in C++
Douglas C. Schmidt
www.dre.vanderbilt.edu/~schmidt
Professor of Computer Science
Institute for Software Integrated Systems
Vanderbilt University Nashville, Tennessee, USA
![Page 2: Overview of Design Patterns in C++schmidt/cs251/2020-PDFs/patterns-overvie… · •See my website for many more videos & screencasts related to programming with patterns, frameworks,](https://reader033.fdocuments.us/reader033/viewer/2022052020/60340b4bb259a3322d3a7286/html5/thumbnails/2.jpg)
2
Learning Objectives in this Lesson• Know what topics we’ll cover
![Page 3: Overview of Design Patterns in C++schmidt/cs251/2020-PDFs/patterns-overvie… · •See my website for many more videos & screencasts related to programming with patterns, frameworks,](https://reader033.fdocuments.us/reader033/viewer/2022052020/60340b4bb259a3322d3a7286/html5/thumbnails/3.jpg)
3
• Know what topics we’ll cover
• Be aware of other digitallearning resources
Learning Objectives in this Lesson
![Page 4: Overview of Design Patterns in C++schmidt/cs251/2020-PDFs/patterns-overvie… · •See my website for many more videos & screencasts related to programming with patterns, frameworks,](https://reader033.fdocuments.us/reader033/viewer/2022052020/60340b4bb259a3322d3a7286/html5/thumbnails/4.jpg)
4See github.com/douglascraigschmidt/CPlusPlus/tree/master/expression-tree
Learning Objectives in this Lesson
We’ll just focus on the Expression_Tree example, but feel free to clone or
download the entire repo!
• Know what topics we’ll cover
• Be aware of other digitallearning resources
• Be able to locate examples of the C++ case study app
![Page 5: Overview of Design Patterns in C++schmidt/cs251/2020-PDFs/patterns-overvie… · •See my website for many more videos & screencasts related to programming with patterns, frameworks,](https://reader033.fdocuments.us/reader033/viewer/2022052020/60340b4bb259a3322d3a7286/html5/thumbnails/5.jpg)
Overview of this Part of the Course
![Page 6: Overview of Design Patterns in C++schmidt/cs251/2020-PDFs/patterns-overvie… · •See my website for many more videos & screencasts related to programming with patterns, frameworks,](https://reader033.fdocuments.us/reader033/viewer/2022052020/60340b4bb259a3322d3a7286/html5/thumbnails/6.jpg)
6
• We focus on programming “Gang-of-Four” (GoF) design patterns in C++, e.g.
Overview of this Part of the Course
![Page 7: Overview of Design Patterns in C++schmidt/cs251/2020-PDFs/patterns-overvie… · •See my website for many more videos & screencasts related to programming with patterns, frameworks,](https://reader033.fdocuments.us/reader033/viewer/2022052020/60340b4bb259a3322d3a7286/html5/thumbnails/7.jpg)
7
• We apply many GoF patterns in the context of a case study app
Design Problem Pattern
Non-extensible & error-prone designs Composite
Minimizing impact of variability Bridge
Inflexible expression input processing Interpreter
Inflexible interpreter output Builder
Scattered request implementations Command
Inflexible creation of variabilities Factory Method
Inflexible expression tree traversal Iterator
Obtrusive behavior changes Strategy
Non-extensible tree operations Visitor
Incorrect user request ordering State
Non-extensible operating modes Template Method
Minimizing global variable liabilities Singleton
Overview of this Part of the Course
See github.com/douglascraigschmidt/CPlusPlus/tree/master/expression-tree
![Page 8: Overview of Design Patterns in C++schmidt/cs251/2020-PDFs/patterns-overvie… · •See my website for many more videos & screencasts related to programming with patterns, frameworks,](https://reader033.fdocuments.us/reader033/viewer/2022052020/60340b4bb259a3322d3a7286/html5/thumbnails/8.jpg)
8
Expression_Tree
expr_tree = ...;
Visitor print_visitor
= ...;
for (auto iter = tree.begin
(order);
iter != tree.end
(order);
++iter)
(*iter).accept
(print_visitor);
• This course focuses on both pattern-oriented design & implementation topics
Overview of this Part of the Course
![Page 9: Overview of Design Patterns in C++schmidt/cs251/2020-PDFs/patterns-overvie… · •See my website for many more videos & screencasts related to programming with patterns, frameworks,](https://reader033.fdocuments.us/reader033/viewer/2022052020/60340b4bb259a3322d3a7286/html5/thumbnails/9.jpg)
9
• The C++ expression tree processing app we cover is available on github
Overview of this Part of the Course
See github.com/douglascraigschmidt/CPlusPlus/tree/master/expression-tree
![Page 10: Overview of Design Patterns in C++schmidt/cs251/2020-PDFs/patterns-overvie… · •See my website for many more videos & screencasts related to programming with patterns, frameworks,](https://reader033.fdocuments.us/reader033/viewer/2022052020/60340b4bb259a3322d3a7286/html5/thumbnails/10.jpg)
Other Digital Learning Resources
![Page 11: Overview of Design Patterns in C++schmidt/cs251/2020-PDFs/patterns-overvie… · •See my website for many more videos & screencasts related to programming with patterns, frameworks,](https://reader033.fdocuments.us/reader033/viewer/2022052020/60340b4bb259a3322d3a7286/html5/thumbnails/11.jpg)
11
• See my website for many more videos & screencasts related to programmingwith patterns, frameworks, C++, Java, etc.
Other Digital Learning Resources
See www.dre.vanderbilt.edu/~schmidt/DigitalLearning
![Page 12: Overview of Design Patterns in C++schmidt/cs251/2020-PDFs/patterns-overvie… · •See my website for many more videos & screencasts related to programming with patterns, frameworks,](https://reader033.fdocuments.us/reader033/viewer/2022052020/60340b4bb259a3322d3a7286/html5/thumbnails/12.jpg)
12See www.youtube.com/playlist?list=PLZ9NgFYEMxp6CHE-QQ040tlDILNcBqJnc
• See my website for many more videos & screencasts related to programmingwith patterns, frameworks, C++, Java, etc.
• Videos from my MOOC “Pattern-Oriented Software Architecture” are relevant!
Other Digital Learning Resources
![Page 13: Overview of Design Patterns in C++schmidt/cs251/2020-PDFs/patterns-overvie… · •See my website for many more videos & screencasts related to programming with patterns, frameworks,](https://reader033.fdocuments.us/reader033/viewer/2022052020/60340b4bb259a3322d3a7286/html5/thumbnails/13.jpg)
13See en.wikipedia.org/wiki/Design_Patterns
• The book Design Patterns: Elements of Reusable Object-Oriented Software describesall the Gang-of-Four (GoF) patterns in detail
Other Digital Learning Resources
![Page 14: Overview of Design Patterns in C++schmidt/cs251/2020-PDFs/patterns-overvie… · •See my website for many more videos & screencasts related to programming with patterns, frameworks,](https://reader033.fdocuments.us/reader033/viewer/2022052020/60340b4bb259a3322d3a7286/html5/thumbnails/14.jpg)
14See www.dre.vanderbilt.edu/~schmidt/POSA
• The “POSA” books contain good sources of material on other types of patterns & pattern relationships
Other Digital Learning Resources
![Page 15: Overview of Design Patterns in C++schmidt/cs251/2020-PDFs/patterns-overvie… · •See my website for many more videos & screencasts related to programming with patterns, frameworks,](https://reader033.fdocuments.us/reader033/viewer/2022052020/60340b4bb259a3322d3a7286/html5/thumbnails/15.jpg)
End of Course Overview