Skip to content

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.

License

Notifications You must be signed in to change notification settings

RamMichaeli17/Final-Project-Object-Oriented-Programming-Course

Repository files navigation

GitHub repo size GitHub language count Contributors Stargazers MIT License LinkedIn Gmail


Logo

Final Project Object Oriented Programming: "Just Draw It"

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
  1. About The Project
  2. Build Requirements
  3. Getting Started
  4. Usage
  5. License
  6. Contributors
  7. Contact

About The Project

image

This is my first OOP project in C++.
In this project you may find several subjects such as:

  1. 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.
  2. Composition. Friend functions and friend classes. The "this" pointer. Static class members. Const.
  3. Operator Overloading. Class members vs. friend functions. Unary and binary operators. Operators new and delete.
  4. Inheritance. Base and derived classes, protected members, indirect base classes, composition vs. inheritance. Multiple inheritance.
  5. Abstract and concrete classes. Polymorphism. Dynamic binding.
  6. STL. Data Structures and Algorithms in C++ and STL.
  7. Windows Programming in C++. File I/O and Serialization.
  8. 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.

(back to top)

Build Requirements

Visual Studio 2017

  • 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

Visual Studio 2019

  • 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

Visual Studio 2022

  • 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

(back to top)

Getting Started

Follow these simple steps:

Installation

  1. Clone the repo
    git clone https://github.com/RamMichaeli17/Final-Project-Object-Oriented-Programming-Course.git
  2. Run the program
    press ctrl+F5 or press the "start without debugging" button
    image

(back to top)

Usage

  1. Create a shape (rectangle, square, circle, ellipse, straight line) which is stored in an array of shapes.
  2. Option to choose whether the shape will have a thick or thin frame.
  3. Option to choose what color the shape will be, and also what color the frame will be (CPen, CBrush).
  4. Option to enter a sample name "X" and receive output "Hello X".
  5. Option to choose the color of the name.
  6. A button that calculates the perimeter of a shape (by clicking on the button and then clicking on a specific shape)
  7. A button that calculates the area of a shape in the same way.
  8. A tool that displays a current date.
  9. Clear button, which deletes all shapes in the array by calling the RemoveAll function.
  10. Resize button, which resizes a shape by clicking the button, then clicking the shape and dragging the mouse.
  11. Delete Shape button, which deletes a specific shape by clicking on the button and then clicking on a shape we want to delete.
  12. Move Shape button, which moves an existing shape by pressing the button and then dragging the shape.
  13. Draw button, which switches to "drawing" mode by clicking on it.
  14. Undo button, which transfers the last drawn shape to another array (not printed to the screen) thus effectively deleting the last action we did.
  15. Redo button, which returns the shapes stored in an unprinted array to the screen to an array that prints, one after the other.
  16. 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.
  17. Load button, which works in the same way only this time reads the data from the file.

Just Draw It - Demo Gif

For more examples, please refer to the Documentation

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contributors

We thank the following people who contributed to this project:


Ram Michaeli

Gal Israeli

(back to top)

Contact

Ram Michaeli - ram153486@gmail.com

Project Link: https://github.com/RamMichaeli17/Final-Project-Object-Oriented-Programming-Course

(back to top)

About

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.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published