Final Exam Posted: Apr 28
The Final Exam is in our regular classroom Final Exam: Thursday, May 7, 2:30 - 4:30 pm.
You are responsible for the following:
- lambda functions - Be able to write code with capture and parameters
- UML - Multiplicity and the five relationships: generalization (inheritance), dependency, association, composition, and aggregation. Be able to list and briefly explain the relationships, including an UML Class Diagram. Know the proper arrows for each relationship.
- Extension points - Four implementations: A) Callbacks using lambda functions, B) Direct inheritance from a Base class, C) Inheritance from a Handler used by a Base class, D) C++ Templates. Be able to compare at least two of these approaches on a small code example, including a small UML Class Diagram (except for D).
- RAII - What it means, why it is important, how to implement
- SOLID - Know the list of principles, both abbreviations and full names
- Coupling - Definition, list of types of coupling, why decoupling is important
- API - Definition
- PIMPL - General concepts
- Dispatch - Static vs. Dynamic, Given code and output, change code to generate the proper output
- Libraries - Difference between static libraries and shared libraries (dynamic libraries)
- Extra: vtable and how it works
The exam includes various types of problems, such as short answers, definitions, comparisons, diagram drawing, and coding.
The questions are based on what I covered in class, including the book, the exercises, and the projects. If I did not cover it in class, it is not on the exam.
The following exam answers are taken from your work on the XMLFramework Project. You will not answer them on the Final Exam
- UML multiplicity, generalization (inheritance), composition, and aggregation. Know the syntax of the diagrams for each. Given code, state the relationship, and draw a UML diagram.
- Design Patterns - general concepts, specific patterns: Template Method, Factory Method, Composite, Command, Adapter, Facade, Singleton.
- exception handling Given exception handling code, show the result. Add exception handling to a code example.
- Software Architecture - Given a problem, compare and contrast solutions using these two architectures.
- C++ Inheritance specifiers: override and final
- C++ Constructor Specifiers: explicit, mutable, default, delete