Open Gryuuum opened 1 year ago
@Melinapouya is the initial assignee with Romina on this assignment, but every member of the team is expected to contribute equally in this sector of the project. Failure to do so affects everyone @FalconistFalconist @SeatedGamer @jhass786 @EthanCortez @armanmha
Implement shape interface and inheritance hierarchy
OBJECTIVE:
You must use inheritance, aggregation, exception handlers, a virtual function, and at least two overloaded operators. At least one class should use templates. At least one class must contain a pointer (a copy constructor needs to be written and tested). Highlight the above in your code
Implement a Shape abstract base class which contains a QPainter data member via an aggregation relationship. Shape has pure virtual functions draw, move, perimeter & area.
Shape inheritance and interface details and requirements
[ ] Types of Shapes: Line, Polyline, Polygon, Rectangle, Ellipse, Text
[ ] Shape Properties: Shape Dimensions, Pen Color, Pen Width, Pen Style, Pen Cap Style, Pen Join Style, Brush Color, Brush Style
[ ] Text Properties: Text String, Text Color, Text Alignment, Text Point Size, Text Font Family, Text Font Style, Text Font Weight (refer to shape_input_file_specs.txt). Line, Polyline, Polygon, Rectangle, Ellipse, Text Classes will override the virtual interface of base class Shape (i.e. interface inheritance)
[ ] All Shape Types will be implemented as separate derived classes which inherit from Shape. Overload the equality and less than relational operators in base class Shape. These overloaded operators will compare shape object ids. This will support sorting shapes by id.
[ ] Disable copy operations (constructor, assignment operator) for all shape types. This can be accomplished by marking the copy constructor and assignment operator for class Shape as being deleted
UML Class diagram
Complete
PUSH WARNING ALL PUSHES MUST BE MADE TO BRANCH
shape_inheritance_interface
DO NOT PUSH TO THIS REPO UNDER ANY CIRCUMSTANCE WITHOUT ENSURING THAT YOUR MACHINE REFLECTS THIS THE CURRENT STATE OF THE REPOSITORY
ANY CHANGES PUSHED MUST ONLY EFFECT YOUR PERSONAL FILES
DO NOT UNDER ANY CIRCUMSTANCE ALTER ANY OTHER TEAMMATES DOCUMENTS
PUSHING AND ERASING ANOTHER TEAMMATES WORK OR CHANGING ANOTHER TEAMMATES WORK WITHOUT PROPER PERMISSION WILL RESULT IN YOU BEING EXPECTED TO REPLACE THE WORK LOST
UNDER NO CIRCUMSTANCES WILL ANY BRANCHES BE CREATED BRANCHED MERGED RENAMED OR DELETED WITHOUT PRIOR APPROVAL FROM SCRUM MASTER.
ANY UNAPPROVED PUSHES TO MAIN BRANCH WITHOUT APPROVAL OF TEAM OR SCRUM MASTER ARE A DETRIMENT TO THE ENTIRE GROUPS GRADE. PLEASE BE CAREFUL WITH YOUR CHANGES AND PUSHES, ALWAYS MAKE SURE YOUR REPO IS UP TO DATE.
THANK YOU AND LOVE YOU ALL!