To receive notifications about scheduled maintenance, please subscribe to the mailing-list gitlab-operations@sympa.ethz.ch. You can subscribe to the mailing-list at https://sympa.ethz.ch

Commit ace5ec93 authored by dkammer's avatar dkammer
Browse files

add assignment

parent ba70da61
# Assignment
Up to this point, we have been working on developing the code, such that it solves a given problem. Now, that it works, we would like to turn the code into a library. By creating a cmake project, we already made a first step towards a library. However, there are more aspects to deal with.
One important property of a library is `extensibility`. According to wikipedia, exetensibility is:
> Extensibility is a software engineering and systems design principle that provides for future growth. Extensibility is a measure of the ability to extend a system and the level of effort required to implement the extension. Extensions can be through the addition of new functionality or through modification of existing functionality. The principle provides for enhancements without impairing existing system functions.
>
> An extensible system is one whose internal structure and dataflow are minimally or not affected by new or modified functionality, for example recompiling or changing the original source code might be unnecessary when changing a system’s behavior, either by the creator or other programmers. Because software systems are long lived and will be modified for new features and added functionalities demanded by users, extensibility enables developers to expand or add to the software’s capabilities and facilitates systematic reuse. Some of its approaches include facilities for allowing users’ own program routines to be inserted and the abilities to define new data types as well as to define new formatting markup tags.
One way of achieving extensibility is to use class and inheritance.
The objective of this assignment is to find ways of using classes and inheritance to increase extensibility of our code.
The code is provided in the folder `code`. It can be compile via `cmake`. Follow these steps:
1. `cd code`
2. `mkdir build`
3. `cd build`
4. `ccmake ..`
5. configure and generate
6. `make`
The assignment is to create few slides that summarize the following:
1. discuss options of how to use classes and inheritance to increase extensibility of your code
2. summarize these ideas on slides
3. choose one and implement it
4. check that the result is still the same
5. summarize what you learned on slides
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment