Property systems in graphics frameworks
Loikkanen, Tatu (2019)
Loikkanen, Tatu
2019
Tietotekniikka
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2019-05-24
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tty-201905311788
https://urn.fi/URN:NBN:fi:tty-201905311788
Tiivistelmä
A property system is a concept about having special class members, properties, in an object oriented programming language. Properties can be classified to partially implement reflection, which represents the program’s ability to introspect its objects and their metadata. Reflection itself is a part of the programming concept known as metaprogramming. The C++ programming language offers a very limited amount of tools for reflection in its standard library, hence implementing a non-standard property system has became a viable solution to patch this need.
This Bachelor of Science thesis studies the background theory, implementation and usage of a property system written in C++. Two existing property systems are used as a study material: the property systems provided by Rightware and The Qt Company, in their product families Kanzi and Qt. A lightweight focus of this thesis is on comparing these two systems, specializing in how the Kanzi’s implementation could be enhanced further. Both of the product families are graphics frameworks, although they are quite different in terms of codebase size, targeted market segments and release license.
The theoretical background of this thesis begins from the concepts of metaprogramming and reflection, falling all the way to the year 1982 and to Brian Cantwell Smith’s Ph.D thesis Procedural Reflection in Programming Languages. In his thesis Smith coins and defines the term reflection. Several other scientific releases about modern day reflection and implementing a reflection library in C++ are used as a source material too. For the property-system-specific research the main sources are the associated documentations and the source codes of each system.
As a final result of this thesis, the research on the property systems did not reveal anything radical or revolutionary. Both compared systems turned out to be useful tools when working with user interface development. Some possible improvements for Kanzi’s property system were discovered, but no critical design or implementation flaws were found, which was expected. One generic result worth noticing was that the property system as a separate third-party C++ library may possibly lose its usefulness as new C++ standards are released as time passes.
This Bachelor of Science thesis studies the background theory, implementation and usage of a property system written in C++. Two existing property systems are used as a study material: the property systems provided by Rightware and The Qt Company, in their product families Kanzi and Qt. A lightweight focus of this thesis is on comparing these two systems, specializing in how the Kanzi’s implementation could be enhanced further. Both of the product families are graphics frameworks, although they are quite different in terms of codebase size, targeted market segments and release license.
The theoretical background of this thesis begins from the concepts of metaprogramming and reflection, falling all the way to the year 1982 and to Brian Cantwell Smith’s Ph.D thesis Procedural Reflection in Programming Languages. In his thesis Smith coins and defines the term reflection. Several other scientific releases about modern day reflection and implementing a reflection library in C++ are used as a source material too. For the property-system-specific research the main sources are the associated documentations and the source codes of each system.
As a final result of this thesis, the research on the property systems did not reveal anything radical or revolutionary. Both compared systems turned out to be useful tools when working with user interface development. Some possible improvements for Kanzi’s property system were discovered, but no critical design or implementation flaws were found, which was expected. One generic result worth noticing was that the property system as a separate third-party C++ library may possibly lose its usefulness as new C++ standards are released as time passes.
Kokoelmat
- Kandidaatintutkielmat [8800]