On Tuesday, 17 May 2022 at 04:37:58 UTC, Ali Çehreli wrote:
...
2) If you want to have a shape hierarchy, then you can start by defining its interface and implement that interface by concrete shape types. Drawing is ordinarily handled by member functions:
...

Hi Ali, I'm not the author but I have a question, in your second example, let's say that sometimes it would be required to "draw" with some scale factor, so (As a newbie) I would do something like this:

interface Shape {
  void draw();
  void draw(float scale);
}

Then in Circle class:

  void draw(float scale) {
    writeln("This circle's radius is ", radius*scale);
  }
  void draw(){ draw(1); }

Then in Rectangular class:

  void draw(float scale) {
writefln!"This rectangle's dimensions are %sx%s."(width*scale,height*scale);
  }
  void draw(){ draw(1); }


So calling shape.draw() would draw with the original scale, otherwise you could call as shape.draw(some_scale);

The problem is these are just 2 shapes and it could be much more, so it would required to repeat all this.

In D there would be a better way to do such thing?

Thanks,

Matheus.

Reply via email to