<?xml version="1.0" encoding="windows-1252"?>
<node id="291385" title="Re: perl OO - to use or not to use" created="2003-09-14 09:14:23" updated="2005-08-09 12:10:01">
<type id="11">
note</type>
<author id="186362">
adrianh</author>
<data>
<field name="doctext">
&lt;blockquote&gt;&lt;em&gt;Are there instances where OO perl is the only choice?&lt;/em&gt;&lt;/blockquote&gt;

&lt;p&gt;Not really. You can always write a piece of procedural code that will do the same thing as a piece of OO code.&lt;/p&gt;

&lt;p&gt;However, there are many times when OO is a sensible choice. For example if you've got an existing OO system that needs extending, or an OO framework that matches your application.&lt;/p&gt;

&lt;p&gt;Personally I find an OO approach makes most non-trivial applications simpler to develop - but this edges onto religious argument territory.&lt;/p&gt;

&lt;p&gt;You may find [id://91080] of interest.&lt;/p&gt;

&lt;blockquote&gt;&lt;em&gt;Say you've written a pretty large program written mostly in proceduaral perl. Can you easily re-write that program in OO perl later if you choose to?&lt;/em&gt;&lt;/blockquote&gt;

&lt;p&gt;Depends. Often not. Procedural code often tends to separate data and the processes applied to that data. OO tends to do the opposite.&lt;/p&gt;

&lt;p&gt;It is possible of course, but may be non-trivial.&lt;/p&gt;

&lt;blockquote&gt;&lt;em&gt;Does anybody have any idea how perl 6's implementation of OO perl is going to be like? If so, is it going to be differnt from the current implementation?
&lt;/em&gt;&lt;/blockquote&gt;

&lt;p&gt;Yes it will be different. We won't know the details until the next Apocalypse comes out. Reading the other Apocalypses gives some hints. At the very least we will see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Classes as first class objects&lt;/li&gt;
&lt;li&gt;Multi-methods&lt;/li&gt;
&lt;li&gt;Decent encapsulation of attributes and code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Probably a lot more.&lt;/p&gt;

&lt;p&gt;As I understand it the old Perl 5 style object system will still be usable, but the newer structures offer considerably more flexibility.&lt;/p&gt;</field>
<field name="root_node">
291379</field>
<field name="parent_node">
291379</field>
</data>
</node>
