[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Object-oriented philosophy

On 2018-09-06 12:32, Stefan Ram wrote:
> "Michael F. Stemper" <michael.stemper at gmail.com> writes:
>> Is there really any benefit to this change? Yes, I've eliminated
>> some (a few lines per class) duplicate code. On the other hand,
>> I've added the parent class and the (probably small, but not
>> non-existent) overhead of invoking super().
>   You have a operation ?Resistance( V )?.

Mathematically, that's an operation, I suppose. I tend to think of it
as either a function or a method.

>   OOP is advantageous if you can anticipate that you will want
>   to extend operations for other types.

Since the way that each operation (aside from __init__) differs
from one load type to the next, is there really an advantage?

>   I.e., if you anticipate a new type ?ConstantVoltage?, you

Actually, although the possibility of other load models exists,
ConstantVoltage() would be impossible, since these models are
all defined based on the behavior of the load *in response to a
change in voltage*. But your point is well-taken, which is part
of why I considered doing inheritance.

>   can add an operation ?Resistance( V )? for this new type
>   without changing the existing definitions (open-closed
>   principle).
>   Non-OOP is advantageous if you can anticipate that you will
>   want to add new operations for the existing types.
>   (Non-OOP means in this case that you have a single
>   definition of a function ?Resistance( entity, V )? which
>   contains an internal multiple branch on the type of the
>   entity.)

To be honest, that sounds painful and hard to maintain. Of course,
back in my F77 days, it would have been the only option.

Thanks for your time.

Michael F. Stemper
Why doesn't anybody care about apathy?