in reply to Re: Re: evolving an OO solution for a bitstream
in thread evolving an OO solution for a bitstream

I can have several BitStream objects.
Oh, sure, and I guess you use a global variable from which object the 128 bits should be taken if you do:
my $bitstr = BitStream::get_bits(128);

You might have objects, but your code snippet doesn't suggest you have them.

This internal state is conveniently encapsulated from the user. The user has no idea how it is implemented, and BitStream's implementation can change at any moment preserving the interface.
The internal state of a hash is also conveniently encapsulated from the user. That doesn't make that hashes are objects. Users have no idea how hashes are implemented, and the implementation of hashes can change at any moment, preserving the interface (and in fact, they did between 5.8.0 and 5.8.1). That still doesn't make hashes objects.

Abigail

Replies are listed 'Best First'.
Re4: evolving an OO solution for a bitstream
by dragonchild (Archbishop) on Oct 21, 2003 at 14:10 UTC
    But, if hashes could perform actions (ala %hash->keys vs. keys %hash), you would consider them objects, right?

    ------
    We are the carpenters and bricklayers of the Information Age.

    The idea is a little like C++ templates, except not quite so brain-meltingly complicated. -- TheDamian, Exegesis 6

    ... strings and arrays will suffice. As they are easily available as native data types in any sane language, ... - blokhead, speaking on evolutionary algorithms

    Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.

      It depends on your definition of objects whether you call something an object due to the syntactic sugar of how to place a method call. Personally, I don't care about the syntactic sugar of whether the method call goes before the object or after.

      For me, objects are instances of classes. A %hash isn't an instance of a class. I can't subclass it. There's no "HASH" class to play around with.

      Now, granted, OO is more a state of mind than syntax. But when acting on data, some object must be present somewhere. And one must stretch the definition of OO to utter uselessness to consider

      my $bitstr = BitStream::get_bits(128);
      to be anywhere near OO. There's no object in sight here, no matter how hard you look. Let alone there's any of Perl's OO machinery getting involved here (there won't be a lookup for a 'get_bits' method in @BitStream::ISA classes, if 'get_bits' wouldn't be defined in the BitStream package for instance).

      Abigail