Final Exam Posted: Apr 29
The Final Exam is in our regular classroom Final Exam: Thursday, May 8, 2:30 - 4:30 pm.
You are responsible for the following:
- lambda functions - Be able to write code with capture and parameters
- UML Relationships multiplicity, generalization (inheritance), composition, and aggregation. Understand the difference between composition and aggregation and when we would use one over the other. Know the UML arrows for them.
- 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
- Dependency Injection - General concepts
- 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 has various types of problems, including short answers, definitions, comparisons, drawing diagrams, 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