in reply to Re^3: OO Pattern Container x Elements and Method Chaining
in thread OO Pattern Container x Elements and Method Chaining

as I said $cont->get_elem('one') can return another object belonging to a wrapper class "MemberElement" dynamically cloned from $elem0 and enriched with the container info.

MemberElement could inherit from Element to make sure all methods are transparently available or use AUTOLOAD to delegate methods to $elem0

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery

Replies are listed 'Best First'.
Re^5: OO Pattern Container x Elements and Method Chaining
by jdporter (Paladin) on Oct 13, 2021 at 03:53 UTC

    yes, sure, that's all cool.... but I don't believe that has any bearing on method chaining.

      For instance see https://atomicobject.com/resources/oo-programming/other-oo-class-relationships

        Association implies symmetry; both classes know each other and can message each other.

        A Product class object may need to know the last sale that it was involved with. We could put a pointer to a Sale class object inside the private part of Product.

        A Sale class object may need to know all of the Products involved with the Sale. We can put a pointer to a pointer (double pointer) in Sale that will let us store zero or more Products associated with a Sale.

      hence this is not uncommon

      $stock->product("Book")->lastSale()->undo()

      and affects both objects

      update

      a maybe better example I found is the part_of association of Apartment <-> Room

      A $room can only belong to one containing $apartment and has a (weakened) back-reference

      Like this if $room->burns() than $apartment->burns()

      > but I don't believe that has any bearing on method chaining.

      $street->apartment("5a")->room("living")->burns()

      HTH! :)

      Cheers Rolf
      (addicted to the Perl Programming Language :)
      Wikisyntax for the Monastery