
The project is a paint program that stores the figures in an array and prints them to the screen , every figure has its own attributes. There are functions that can be used on the figures to change their size , move them , delete them , and so on , and there's also mathematical functions that prints area and perimeter. There is also an option to "undo" and "redo" drawn shapes. The shapes can be saved to and loaded from a file.
Table of Contents
This is my first OOP project in C++.
In this project you may find several subjects such as:
- Class Members. Instance and Static Members. Use of Accessibility Modifiers. Fields. Data abstraction and information hiding, separating interface from implementation, implementing Abstract Data Types with classes, constructors, destructors.
- Composition. Friend functions and friend classes. The "this" pointer. Static class members. Const.
- Operator Overloading. Class members vs. friend functions. Unary and binary operators. Operators new and delete.
- Inheritance. Base and derived classes, protected members, indirect base classes, composition vs. inheritance. Multiple inheritance.
- Abstract and concrete classes. Polymorphism. Dynamic binding.
- STL. Data Structures and Algorithms in C++ and STL.
- Windows Programming in C++. File I/O and Serialization.
- MFC - Microsoft foundation classes: Microsoft foundation classes (MFC) are C++ language and Windows application programming interface (API) classes bundled in a software application development library. The MFC library is a collection of many different classes, including Windows APIs.
- Community, Professional or Enterprise Edition
- VC++ 2017 latest v141 tools
- Visual C++ compilers and libraries for (ARM, ARM64)
- Windows XP support for C++
- Visual C++ MFC for (x86 and x64, ARM, ARM64)
- Visual C++ ATL for (x86 and x64, ARM, ARM64)
- Windows 10 SDK
- Community, Professional or Enterprise Edition
- MSVC v142 - VS 2019 C++ (x64/x86, ARM, ARM64) build tools (Latest)
- C++ MFC for latest v142 build tools (x86 & x64, ARM, ARM64)
- C++ ATL for latest v142 build tools (x86 & x64, ARM, ARM64)
- Windows 10 SDK
- Community, Professional or Enterprise Edition
- MSVC v143 Buildtools (x64/x86, ARM, ARM64)
- C++ MFC for latest v143 build tools (x64/x86, ARM, ARM64)
- C++ ATL for latest v143 build tools (x64/x86, ARM, ARM64)
- Windows 10 SDK
Follow these simple steps:
- Clone the repo
git clone https://github.com/RamMichaeli17/Final-Project-Object-Oriented-Programming-Course.git
- Run the program
press ctrl+F5 or press the "start without debugging" button
- Create a shape (rectangle, square, circle, ellipse, straight line) which is stored in an array of shapes.
- Option to choose whether the shape will have a thick or thin frame.
- Option to choose what color the shape will be, and also what color the frame will be (CPen, CBrush).
- Option to enter a sample name "X" and receive output "Hello X".
- Option to choose the color of the name.
- A button that calculates the perimeter of a shape (by clicking on the button and then clicking on a specific shape)
- A button that calculates the area of a shape in the same way.
- A tool that displays a current date.
- Clear button, which deletes all shapes in the array by calling the RemoveAll function.
- Resize button, which resizes a shape by clicking the button, then clicking the shape and dragging the mouse.
- Delete Shape button, which deletes a specific shape by clicking on the button and then clicking on a shape we want to delete.
- Move Shape button, which moves an existing shape by pressing the button and then dragging the shape.
- Draw button, which switches to "drawing" mode by clicking on it.
- Undo button, which transfers the last drawn shape to another array (not printed to the screen) thus effectively deleting the last action we did.
- Redo button, which returns the shapes stored in an unprinted array to the screen to an array that prints, one after the other.
- Save button, which with the help of serialization saves the array of shapes (including all its properties) in a "fig" file in a particular path on the computer.
- Load button, which works in the same way only this time reads the data from the file.
For more examples, please refer to the Documentation
Distributed under the MIT License. See LICENSE.txt
for more information.
We thank the following people who contributed to this project:
Ram Michaeli |
Gal Israeli |
Ram Michaeli - ram153486@gmail.com
Project Link: https://github.com/RamMichaeli17/Final-Project-Object-Oriented-Programming-Course