Giter Site home page Giter Site logo

drawing-shapes's Introduction

drawing-shapes

Object-oriented programming labs

Screenshot

program interface

Tasks

1. "Familiarization with OOP concepts: inheritance and type polymorphism (virtual methods)"

Construct a class hierarchy for displaying graphic figures: line, rectangle, ellipse, etc. - at least 6 figures. Distribute classes by modules. Create a list of shapes as a separate class. Add all figures to the list in the main program module, and then run drawing shapes from the list. Complete task in C++, C# or Java. Use any suitable graphics library for drawing.

2. "Graphics editor"

Extend the example with figures so that shapes can be created at the user interface level. There are several ways: input coordinates using the mouse, dialog input of values, input in the scripting language. The student can choose any input method. Creating an object must be done so that adding a new class to the system did not require modification of the existing code. The resulting program should looks like a primitive graphic editor.

Note: you can not select a figure type with case, switch and multiple if. Figure classes had not to contain drawing methods. The project should be developed with using version control system Git.

3. "Object serialization"

Select the subject area and build a class hierarchy. The hierarchy should contain at least 6 classes. Implement serialization and deserialization of objects from the received class hierarchy to and from a file, the serialization format is determined by the individual variant.

Variant Format
1 XML
2 Binary
3 Text
4 JSON
5 BSON

The variant number can be received according to formula: (student's number in a group MOD variant count) + 1.

In the user interface you need to implement the following functions:

  • ability to change figure properties
  • add/remove objects to/from the list
  • serialization and deserialization the object list

Note: Adding new classes to the hierarchy should not require the existing code rewriting. Also you can not use case, switch, multiple if and reflection. The project should be developed with using version control system Git. Сomments language: English

4. "Plugins"

Based on the 2nd and the 3rd tasks expand the hierarchy with new classes by using a dynamic loading of module. New modules should add and enlarge the program functionality. A new functions/modules adding shouldnt require code changes. The project should be developed with using version control system Git. Сomments language: English

5. "Configuration properties"

Expand the project with ability to config the program parametres. Add ability to change and save config. A config should be read from XML and saved into XML. Make a XML-doc structure by yourself. Add exception handlers.

6. "User shapes"

Expand the project with ability to create user shapes based on another shapes.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.