title: R and object oriented programming
body: <p>Object oriented programming in one way or another is very much possible in R. However, unlike for example Python, there are many ways to achieve object orientation:</p>
  
  <ul>
  <li>The <a href="http://cran.r-project.org/web/packages/R.oo/index.html">R.oo package</a></li>
  <li>S3 and S4 classes</li>
  <li><a href="http://search.r-project.org/library/methods/html/refClass.html">Reference classes</a></li>
  <li>the <a href="http://cran.r-project.org/web/packages/proto/index.html">proto package</a></li>
  </ul>
  
  <p>My question is:</p>
  
  <p>What <strong>major</strong> differences distinguish these ways of OO programming in R?</p>
  
  <p>Ideally the answers here will serve as a reference for R programmers trying to decide which OO programming methods best suits their needs.  </p>
  
  <p>As such, I am asking for detail, presented in an objective manner, based on experience, and backed with facts and reference.  Bonus points for clarifying <em>how</em> these methods map to standard OO practices.</p>