Question on shapes

bauss jj_1337 at live.dk
Tue May 17 06:13:27 UTC 2022


On Tuesday, 17 May 2022 at 00:10:55 UTC, Alain De Vos wrote:
> Let's say a shape is ,a circle with a radius ,or a square with 
> a rectangular size.
> I want to pass shapes to functions, eg to draw them on the 
> screen,
> draw(myshape) or myshape.draw();
> But how do i implement best shapes ?

In addition to all the answers, just remember that if you want to 
make a square class then it should inherit from the shape class 
and not the rectangle class.

It might seem like the obvious rule is for square to inherit 
rectangle, since a square is a rectangle, but it's only true on 
the surface, not in functionality.

An example is below:

```d
void changeRectangle(Rectangle rectangle, int amount)
{
   rectangle.length = rectangle.length + amount;
}

...

// While this works, then it's functional wrong as you must 
change both the length/height of a square, since they cannot 
differ.
changeRectangle(new Square(100, 100), 50);
```

You might think that it's easy to just not call changeRectangle 
with a square, but what if you store the rectangles in a list, 
map, get it from an external data source etc. then it starts 
being more and more complex and for no reason at all!

I know your post really isn't about such things, but I think it's 
a good thing to learn already.


More information about the Digitalmars-d-learn mailing list