On Thu, Oct 17, 2013 at 5:49 PM, Peter Cacioppi
<peter.cacio...@gmail.com> wrote:
> I don't know if I want to step into the flames here, but my understanding has 
> always been that in the absence of polymorphism the best you can do is 
> "object based" programming instead of "object oriented" programming.
>
> Object oriented programming takes things further, most significantly by 
> introducing the idea that the object reference you are referencing might be a 
> run time dependent sub-class. Even Python, which isn't strongly typed, 
> manages polymorphism by allowing the self argument to a sub-class of the 
> method class.

What you've said here is that "without polymorphism, you can't have
polymorphism". :)

The OS/2 PM with SOM (System Object Model) classes does give
polymorphic functionality; here's a bit of an example:

(Reference: http://www.markcrocker.com/rexxtipsntricks/rxtt28.2.0299.html
- class hierarchy, standard classes only)

Part way down you'll see WPFolder. It's a subclass of WPFileSystem
(aka "stuff backed by the disk" as opposed to abstract objects), which
is a subclass of WPObject (aka "stuff you can see and click on"),
which is a subclass of SOMObject (aka "stuff"). The WPFolder class
defines a whole pile of functionality, and its code is all stored in
some library somewhere, as a binary on the disk. Well and good.

Now look at the WPRootFolder class. It's a subclass of WPFolder and
adds a few extra bits and bobs designed for the root of any particular
drive (OS/2 uses an MS-DOS style of drive letters for volumes, rather
than a Unix-style mount points) - menu items for formatting the drive,
getting extra info perhaps, whatever. But most of its functionality
comes from WPFolder.

When a WPFolder method is called on a WPRootFolder, the code has to
handle the fact that it's working with a subclass of that object. As
long as the proper SOM boilerplate is maintained correctly, the
WPFolder code won't even be aware that it's operating on a
WPRootFolder. That's polymorphism, and it's all done in a completely
cross-language way :)

(There are additional complications, as it's possible for a subclass
to WPReplaceClass (I'm probably misremembering the function name)
itself into the position of the parent class, which messes up the
hierarchy a bit - it still all works, but it's less clean to describe.
Most things work the way I'm describing.)

ChrisA
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to