Child pages
  • Object Oriented Modelling with automaIT
Skip to end of metadata
Go to start of metadata

Table of Contents

Component and Component Instance

automaIT's own language implements the object oriented paradigm. Many terms can be mapped from OO to automaIT XML. A component for example is like a class. It defines the behaviour of the component instances. A component instance is created by installing a component on a host. A component is an element of the meta-model. It models component instances which are themselves a model for the physical system. The developer creates the meta-model. The operator imports that meta-model into the server. The operator also triggers the installation of components. Thereby he creates an instance of the meta-model.

Paradigms

Inheritance

Inheritance allows reuse and encapsulation of functionality as well as the definition of hierarchical objects. In this example the Vehicle component encapsulates the functionality shared by Car and by Bicycle. Both have wheels and both know how to drive. If we reduce the function drive down to "How many meters do I travel with a given velocity?" the implementation for both, the Car and the Bicycle, will be the same and can be done in Vehicle. Vehicle also knows that it has some wheels. Since the exact amount of wheels is only known by the specialized component it is marked as ABSTRACT (for more information see Access and Modifier). Car is a specialized Vehicle and can declare more attributes as needed (like horsePower).

inheritance_example

Access and Modifier

Access is granted for:

  • PATH - components from the same path
  • PRIVATE - only inside the component, external access is denied
  • PROTECED - only inside the component or inheriting components
  • PUBLIC - everyone
What a modifier ensures highly depends on the element it is placed on. Generally one can say that
  • ABSTRACT - can not be instantiated
  • FINAL - can not be modified

The following example illustrates the use of these values. There are four components (Car, Bicycle, Tree and Porsche). They are separated into two paths /info/novatec/automait/vehicles and /info/novatec/automait/nature. Porsche inherits the variables from Car. The variable horsePower is defined ABSTRACT on Car. Therefore Porsche is forced to declare horsePower with a specific value in order to use it. The variable manufacturer is PRIVATE and therefore can only be read inside the component Car. The variable serialNo is PROTECTED thus readable by Car and Porsche. The component Tree can read the variable wheels of Porsche because it is marked as PUBLIC. The variable horsePower can be read by components Bicycle, Car and Porsche but not by Tree because Tree is not on the same PATH. Variables set to FINAL can not be modified by the user.

access_and_modifier_example

References

Polymorphism

 

 

 

  • No labels