Applying Principles of Object-Oriented Design to Create Information Molecules
@gnufcl@fosstodon.org Monday, 2nd August 2021
Introduction:
Information molecules represent the core elements of the compounds that populate an information 4.0 system. Due to their self-contained character and minimalist nature, information molecules allow for a much greater flexibility in terms of content modeling and information production.
The aim of the present post is to illustrate how the integration of principles of Object-Oriented Design can improve the abstraction level of molecular information, hence increasing the overall efficiency of an information system.
Molecular Information Theory
In his work on molecular information [1], Bosworth points out the difference between the classical, linear view of “Input – Process – Output” and molecular information theory, in which systems are made up of dynamic molecules that mostly interact in a volatile manner, without any kind of linearity.
In molecular information theory, molecules are defined as entities that are bound to a specific space-time frame within the system lifetime. Along the same line of thought, a system molecule can be compared to an object in object-oriented design. Following this view, information developers and technical communicators can apply concepts of the object-oriented methodology to design an information model where both content and context are loosely coupled to each other.
Abstraction: What is it good for?
Abstraction refers to a “general idea or quality rather than an actual person, object, or event” [2]. For example, we can describe the main components of a pen without specifying its weight or the material involved in its production. In the same line, we can describe the main sections of a user’s instruction manual without specifying its size or the output medium (paper, electronic, etc.).
Abstraction is a fundamental concept in computing and mathematics. Increasing abstraction not only contributes to strengthen the integrity of each molecule, but also improves the performance of our information system. The formal representation of real-world entities and processes makes it easier to focus on the essential matter without having to care about unnecessary details [3].
Classes, Objects and Properties
The overarching concept in an abstraction approach is the class. We can think of a class as being a template that serves to generate multiple objects. By the same line of reasoning, each object represents an instance of a given class [4]. Within every single class, we can define an entire set of properties. These properties in turn represent variables that differ from one object to another. A property can be, for instance, a measuring unit, a color, a date, an ID-number, a material type, etc.
Inheritance and Encapsulation
In addition to abstraction, inheritance and encapsulation represent the core pillars of our object-oriented model. From a hierarchical point of view, inheritance evolves both horizontally and vertically. On the X-axis, inheritance refers to the creation of subclasses by deriving them from a main class. In this case, the subclass inherits its properties from a main class. On the Y-axis, each object inherits the information type of the parent class and a given number of its properties.
Adaptive Evolvement
The technical communicator defines the initial classes with their respective types and properties according to the characteristics of the system. Similarly to natural systems that adapt their requirements in terms of resources according to nature’s constraints, a system developed for information 4.0 would evolve without human intervention. In such a scenario, artificial intelligence allows the system to develop its own classes over time based on the ones designed initially by the technical communicator.
A class of the type “Task” would consist of a specific number of words and a predefined sentence structure. The properties can relate to variable data such as size indications, reference numbers, etc. An object of the class “Task” can be, for example, an “Installation Task” or a “Maintenance Task”. The instantiated object inherits its properties from the parent class. The inheritance concept improves both the performance and the efficiency of the system by reducing the error rate and the production time of information molecules.
The integrity of the information molecules is ensured through encapsulation. In our case, encapsulation means controlling the visibility of all the entities that are declared within a class. This is achieved by declaring three different properties [5]:
- Public: Entities that are declared to be visible for all the other classes.
- Protected: Entities that are declared to be accessed by the current class and all its subclasses.
- Private: Entities that are declared to be accessed exclusively by the current class.
A property that is declared as private cannot be changed from outside its current class. This is useful if we want to modify content according to the profile of our target audience without running the risk of corrupting sensitive data such as member credentials or reference numbers.
Conclusion
Object-Oriented Design is a well-known concept in the programming field. Taking into consideration the requirements in terms of flexibility and delivery time for molecular information, the notions and principles described in this design approach seem to be well adapted to the singularities of information 4.0.
About the author:
Fayçal Alami-Hassani is a technical communicator and owner of GlobalTech Translations, a digital company offering multilingual solutions and technical documentation services. He enjoys tinkering with Linux systems and writing about FOSS projects in his spare time.
GlobalTech Translations © August 2021
[1] Bosworth, James A. Ph.D. Molecular Information: Theory and Practice. Page Publishing, Inc., 2017, pp. 18-24.
[2] Abstract - Definition for English-Language Learners from Merriam-Webster’s Learner’s Dictionary. Accessed 1st Aug. 2021: https://www.learnersdictionary.com/definition/abstract
[3] Data Structures and Algorithms with Object-Oriented Design Patterns in Python [LWN.Net]. Accessed 19th Jul. 2021: https://lwn.net/Articles/54036/
[4] Zandstra, Matt. PHP Objects, Patterns, and Practice. 5th edition, Apress, 2016, pp. 15-18.
[5] Zandstra, Matt. PHP Objects, Patterns, and Practice. 5th edition, Apress, 2016, p. 142.