Loading...
Based on the requirements and use cases, identify the main objects of the system and analyze how they interact and relate to each other...
For each class, define the attributes (data) it will hold and the methods (functions) that operate on the attributes. Ensure they align with the object's responsibilities and adhere to the principle of encapsulation. Write your code in the code editor below.
Explain design tradeoffs you considered. Check and explain whether your design adheres to SOLID principles. Explain how your design can handle changes in scale and whether it would be easy to extend with new functionalities. Identify areas for future improvement...
## Design Patterns Summary
đŻ Command Pattern
Components: Command, CommandImpl, CommandInvoker
Usage: Undoable quiz addition and student enrollment
Benefits: Encapsulates operations as objects, supports undo/redo
đ State Pattern
Course States: DraftCourse â PublishCourse â ArchiveCourse
Quiz States: NotStartedState â InProgressState â SubmittedState â GradedState
Benefits: Clean state transitions, encapsulates state-specific behavior
đ˛ Strategy Pattern
Components: GradingStrategy, AutoGradeingService, GradingService
Usage: Swappable grading algorithms
Benefits: Easy to extend with new grading strategies
đď¸ Facade Pattern
Component: LMSManager
Usage: Single entry point for all LMS operations
Benefits: Simplified API, hides complexity