Objects have mothers
and owners
All ElePub page objects have at least one mother and one owner.
This is true for all types of objects placed on a page. The
page itself is the outermost container and the only visualization
object, which only has a mother object but no container. This
is how ElePub pages are constructed and ordered.
ElePub page objects always inherit their
values and attributes from one or several mother (repository)
objects, and additionally they also have an owner object.
The owner is the container object, which holds the particular
page object. The outermost container is the page. Therefore,
all objects on ElePub pages also have an owner (with the exception
of the page itself).
Inheriting
from mother objects
Most attributes of an ElePub page object are inherited from
its mother object, which is stored in the repository. Of course,
any of these inherited attributes can be overwritten locally
by changing the inherited value to something different, which
is then valid only for this one particular page object.
In real life, this is rather the exception.
Typically only positioning and size of a page object will
be different from its mother object.
Inheriting
from the owner (container) object
In most cases inheritance simply works straight up the ancestor
tree as shown on the previous page.
But occasionally and for some attributes it would be favorable
to let them inherit from their container object(s) instead.
This is for cases where a page frame
or a layout container should influence all of the objects
contained inside this container (again possibly over several
container levels) - instead of the mother objects. This can
even be defined for every single attribute so that most attributes
are still inherited from mothers while others are inherited
from containers.
Changing all
members of a container
Sometimes it is desired to change all objects inside a container
(i. e. inside a page, or a layout container, or a table body).
This can be achieved very easily by simply changing the value
inside the particular container and delegating this to all
member objects in that their inheritance precedence rule is
changed from mother to owner. Member objects are all objects
contained inside (held by) a container.
Since containers are mostly grouped in their
own multi-level hierarchy, this inheritance can also span
each level of this container hierarchy. Practically that means
by simply changing a particular value of the page as the outermost
container this can change the values of all objects contained
inside the page.
The same can be applied to a layout container
(typically one level below the page) with all of its components,
or only to a table body, which also is a container, to influence
all table cells (i.e. all the objects contained inside the
table body).
Containers
versus mothers
To choose the inheritance between containers and mothers one
can even influence the inheritance precedence by defining
your own precedence rules, which replace those inherent to
ElePub. But this is the haute cuisine of cooking your own
object inheritance tree - and should be left for later! First,
you should learn how to cook your own Schnitzels!
|