Developing Yed objects means
developing reusable software components that totally incapsulate their characteristics, hide to external world the implementation of these characteristics and allow to propagate them to other objects. This
is one of the main axioms of object oriented approach, and many object oriented
programming languages like C++ and Java, today,
have reached this target.

Yed objects are written in C.
Why developing software components with these characteristics using the C
language, that is not a pure object oriented programming language?

There are various reasons for this.

Developing incapsulated, data hide, inheritance preset software components
easily allows the reusing of these components in other scenarios. Using
this approach, a C developer can easily understand the
advantages of object oriented approach, because he can use this approach
directly in his C source code without passing to other
programming language. This approach can also facilitate a C
developer in understanding these concepts before passing to pure object
oriented programming languages, that are fully structured in other syntax.

You could be a C developer involved
in a C software project. In this case, passing from C
to pure object oriented programming language like C++ can
be absolutely impossible, or very difficult, because you don't have the
time to plan and project the new scenario, or you don't have the power to
decide this step. With Yed approach, you can develope simple
objects maintaining the C point of view.

The syntax of pure object oriented programming languages
allows the developing of objects in according to all, or a great part of,
object oriented programming axioms, like polymorphism, operator overloading,
inheritance. Unavoidably, the implementation of this syntax causes the decreasing
of the performance of executable or interpreted code, if compared to the
execution or interpreting of code that perform the same task in the same
machine and has been written in a programming language that is not object
oriented.
If you need performance and consider polymorphism not strictly
necessary in your scenario, you can develope simple objects using Yed
approach, and then take advantage to C executable performance.
But in any case it should be always kept in mind that fully object oriented
approach is nearer to human though than any other software approach.

Yed technology allows to
develope objects without the use of external tools, or particular preprocessing
tasks. All you need are your work instruments: your C compiler,
your linker, and one simple header file, whose mean will be explained in the
next paragraphs.

NOTE:
the analysis and comprehension of the object oriented programming theory is
not the purpose of this document. For well understanding these paragraphs, you
should have a base knowledge of object oriented terminology, and a medium knowledge
of C programming, in particular in the use of C pointers.