Steve Litt <sl...@troubleshooters.com> writes:

> On Sun, 22 Nov 2015 13:13:47 +0000
> Rainer Weikusat <rainerweiku...@virginmedia.com> wrote:
>
>> Edward Bartolo <edb...@gmail.com> writes:
>> > Is it possible to use classes and objects while using gtk2/3? I
>> > noticed that only functions are used and that class use is ovoided
>> > by prepending functions with a group string. As far as I know, C can
>> > still use structs that are attached to a set of data and a set of
>> > functions, but without inheritance and polymorphyism.
>> 
>> C structs can be embedded into each other which means they can
>> 'inherit' other structs, eg, for a totally contrived example
>> 
>> struct something {
>>      int number0, number1;
>> };
>> 
>> struct another {
>>      struct something parent;
>>         int drei;
>> };
>
> That's composition, not inheritance. It's "has-a", not "is-a". You need
> to name the whole chain when calling an element (someth->anoth->drei
> rather than someth->drei).

That's the implementation without any compiler support hiding its
details. There's also no independent 'something object' involved here
whose identity could change.

[...]

> * Encapsulation
> * Inheritance
> * Polymorphism
>
> In my personal opinion, Encapsulation is by far the strongest benefit,
> and in fact I seldom use inheritance and almost never use
> polymorphism.

'Encapsulation' is something which exists by virtue of using abstract
interfaces. And if you look at this:

void print_result(struct something *sth)
{
    printf("Result: %d\n", calc(sth));
}

you ought to note that the code doesn't access the implementation of the
passed object but invokes an abstract function with a pointer and hence,
will work with different objects: That's exactly what 'encapsulation' is
about.
_______________________________________________
Dng mailing list
Dng@lists.dyne.org
https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng

Reply via email to