- useful and proper class (explain why)
- useful and correct abstraction (explain why)
- useful and correct encapsulation (explain why)
- useful and correct inheritance (explain why)
- useful and correct polymorphism (explain why)
- useful and correct object composition (explain why)
- useful and correct base class
- useful and correct abstract base class
- useful and correct virtual function
- no error in object-oriented programming
General
- clean main (i.e. nothing in the main that belongs in a class)
- no globals, but statics if needed
- correct safeguards
- maintainability through clean uniform code style and proper function naming and/or comments everywhere
- separate header files
- one complete project that compiles and does not crash
- fully working project
- sufficient git commits (+/- weekly)
- correct files on git
- working build manual as readme on GitHub (project must be buildable from scratch on a clean PC)
OOP
- at least 2 standard constructors
- Player and PlayGame class.
- at least 2 parameterized constructors
- at least 2 copy constructors
- at least 2 destructors
- Player and PlayGame class.
- member initialization in constructors (the stuff after a colon)
- constructor forwarding
- useful proven (dynamic) polymorphism
- useful use of "this" (if code doesn't work without it)
- useful member function
- default values in function definition
- setPlayerName
- useful member variable
- useful getters and setters for member variables
- correct use of inline function
- useful template function or class
- useful friend function or class
C++
- everything in one or more custom namespaces
- 2 useful unsigned chars or other better use of memory-efficient type
- PlayGame::makePlayerObjects, player.h
- at least 4 useful const references for variables
- at least 4 useful const references for functions
- at least 4 useful bool
- dynamic memory allocation (new)
- dynamic memory delete (delete)
- 2 useful (modern) call-by-references
- useful string class usage
- useful container class
- useful use of nullptr
- useful use of (modern) file I/O
- useful exception handling
- useful use of lambda function
- useful use of threads
Extension
- useful Qt class
- useful use of signals/slots
- test-driven development (= written test plan or unit tests)
- bug ticket resolution (with pull request or commit message issue link and issue branch)
- reporting a bug ticket on another project
- use of a GUI
- use of OpenGL or another 3D engine
- useful use of an external library (not Qt)
- project working with hardware
- a nice extra that you think deserves a rating (things you put time into that are not rewarded by an item above)
- Github Action to compile the program.
- Many DevOps improvements
- Including a few others