Implementation hiding

so so at so.so
Wed Jun 29 22:14:58 PDT 2011


On Thu, 30 Jun 2011 06:31:58 +0300, Ary Manzana <ary at esperanto.org.ar>  
wrote:

>> The solution is to be able to override new. In Ruby you can do this:
>>
>> ---
>> class Foo
>> end
>>
>> class Bar
>> def self.new
>> Foo.new
>> end
>> end
>> ---
>>
>> Now you do:
>>
>> Bar.new #=> #<Foo:0x0000010180bf90>
>>
>> and as you see, you get a Foo instance.

Ruby is a dynamic language, that is why i said irrelevant :)

> In fact, I don't understand well what's the problem with point 1 in the  
> article. If you want to show the users how to use your class, document  
> its usage. Don't just throw the code at them...

---
Declare the implementation as private:
#include "implementation.h"

class Foo
{
private:
     ... the implementation ...

// the interface
public:
     void bar()
     {
         ... manipulate the implementation ...
     }
};
---

With "point 1" if you mean this one:

For starters it is not an interface but the implementation itself.
Many C users rightly criticize when they see codes like this, most C++  
users won't say anything. It is perfectly fine for your own code, that  
everything is in your hand.

* Nothing is hidden, you can see and change everything.
* Whenever you make a change to the implementation, you also change the  
interface. You have to distribute both.
...

Taft types in C is great. As a result every single C API relies on it.

Well well, i was expecting some discussions.
Looks like my troubles with languages are not among the popular ones!


More information about the Digitalmars-d mailing list