<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>OOP</title>
        <link>http://blogs.ugidotnet.org/rucka/category/OOP.aspx</link>
        <description>OOP</description>
        <language>it-IT</language>
        <copyright>Gianluca Carucci</copyright>
        <generator>Subtext Version 2.6.0.0</generator>
        <item>
            <title>Il golf e le architetture layered</title>
            <link>http://blogs.ugidotnet.org/rucka/archive/2008/07/14/93399.aspx</link>
            <description>&lt;p&gt;Il discorso introduttivo sull'OOD, fatto da &lt;a target="_blank" href="http://blogs.ugidotnet.org/pape/Default.aspx"&gt;Andrea&lt;/a&gt; nella sua &lt;a target="_blank" href="http://www.communitydays.it/events/communitydays2008milano/tut303.aspx"&gt;sessione&lt;/a&gt; ai &lt;a target="_blank" href="http://www.communitydays.it/events/communitydays2008milano.aspx"&gt;Community Days&lt;/a&gt;, mi ha riportato alla mente l'ultima pagina del &lt;a target="_blank" href="http://www.federgolf.it/fileadmin/user_upload/golf/STR/CRC/Regole/RegoleDelGolf2008_print.pdf"&gt;Regolamento del Golf&lt;/a&gt;. Cito testualmente:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Gioca la palla come si trova&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Gioca il campo come lo trovi&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;E se non puoi fare l'una o l'altra cosa,&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;fai ciò che è giusto&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Ma per fare ciò che è giusto,&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;hai bisogno di conoscere &lt;/em&gt;&lt;em&gt;le &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Regole del Golf&lt;/em&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Trovo in queste poche righe molte similitudini su come credo sia necessario approcciare lo sviluppo software. La difficoltà del nostro lavoro sta tutta nel fare "&lt;em&gt;ciò che è giusto&lt;/em&gt;".&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1e5c5e60-20aa-447d-8412-ad88561c1418" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tag: &lt;a rel="tag" href="http://technorati.com/tags/Golf"&gt;Golf&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/OOD"&gt;OOD&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/architettura"&gt;architettura&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/rucka/aggbug/93399.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gianluca Carucci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rucka/archive/2008/07/14/93399.aspx</guid>
            <pubDate>Mon, 14 Jul 2008 18:19:20 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/rucka/archive/2008/07/14/93399.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rucka/comments/commentRss/93399.aspx</wfw:commentRss>
        </item>
        <item>
            <title>AOP NET la parola a Don Box....</title>
            <link>http://blogs.ugidotnet.org/rucka/archive/2005/04/15/14092.aspx</link>
            <description>&lt;p&gt;Riprendo il &lt;a href="http://blogs.ugidotnet.org/lbarbieri/archive/2005/04/15/14090.aspx"&gt;post&lt;/a&gt; di &lt;a href="http://blogs.ugidotnet.org/lbarbieri/"&gt;Lorenzo&lt;/a&gt; riguardo l'AOP e Net fornendo uno stralcio dell'intervista a Don Box (per la quanle nn finirò mai di ringraziare il nostro caro &lt;a href="http://blogs.ugidotnet.org/pape/"&gt;presidente &lt;/a&gt;:) che esprime il suo parere proprio sull'AOP e sulle tecniche di interception. &lt;/p&gt;
&lt;p class="achievement" style="MARGIN-BOTTOM: 3pt; MARGIN-LEFT: 12.25pt; MARGIN-RIGHT: 12.25pt; mso-margin-top-alt: 0cm"&gt;&lt;em&gt;&lt;font face="Arial" size="2"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; LETTER-SPACING: -0.25pt"&gt;Personally, I think there are a lot of interesting programming paradigms out there, and I think that the industry has beaten the "attributes+interception" style of AOP to death.  Personally, I've been much more inspired by the ideas that sprang from functional programming and think that Whidbey brings several of those ideas to the masses. Specifically, C#'s anonymous methods (closures) and iterators are far more interesting than yet another way to inject logging code.&lt;/span&gt;&lt;/font&gt;&lt;font face="Arial" size="2"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; LETTER-SPACING: -0.25pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p class="achievement" style="MARGIN-BOTTOM: 3pt; MARGIN-LEFT: 12.25pt; MARGIN-RIGHT: 12.25pt; mso-margin-top-alt: 0cm"&gt;&lt;font face="Arial" size="2"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; LETTER-SPACING: -0.25pt"&gt;&lt;em&gt;&lt;font size="+0"&gt; &lt;/font&gt;&lt;/em&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Arial" size="2"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; LETTER-SPACING: -0.25pt"&gt;&lt;em&gt;BTW, the definitive method for injecting interceptors is the profiling API, which lets you catch every method invocation, not just those that cross a boundary. That stated, the API is so low level that statistically no one is qualified to program with it. In contrast, the C# features borrowed from functional programming are pretty darned accessible to a wide audience.&lt;/em&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="achievement" style="MARGIN-BOTTOM: 3pt; MARGIN-LEFT: 12.25pt; MARGIN-RIGHT: 12.25pt; mso-margin-top-alt: 0cm"&gt;&lt;font face="Arial" size="2"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; LETTER-SPACING: -0.25pt"&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Arial" size="2"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; LETTER-SPACING: -0.25pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;Il futuro dell'AOP nn sembra molto roseo...:) Prometto di scrivere al più presto un articolo sull'intervista  con il testo integrale e qualche commento e considerazione... Parola di lupetto:D&lt;/p&gt;&lt;div style="margin: 0px; padding: 0px; display: inline;" contenteditable="false" class="wlWriterSmartContent"&gt;Technorati tags: &lt;a rel="tag" href="http://technorati.com/tags/AOP"&gt;AOP&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/design"&gt;design&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/rucka/aggbug/14092.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gianluca Carucci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rucka/archive/2005/04/15/14092.aspx</guid>
            <pubDate>Fri, 15 Apr 2005 12:29:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/rucka/archive/2005/04/15/14092.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rucka/comments/commentRss/14092.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Initializer nei costruttori: C++ Vs C#</title>
            <link>http://blogs.ugidotnet.org/rucka/archive/2004/09/03/2016.aspx</link>
            <description>&lt;P&gt;Spesso, programmando in c++, mi scontro con diversit&amp;#224; nell'interpretazione (ed effettiva implementazione) della programmazione a oggetti rispetto al c#. Quando mi trovo in queste situazioni mi viene da pensare il motivo di questa differenza&amp;nbsp;e perch&amp;#232; in fase di&amp;nbsp;progettazione dei due&amp;nbsp;linguaggi Straustrup e Hejlsberg sono arrivati a due conclusioni differenti. L'esempio pi&amp;#249; eclatante riguarda sicuramente la diatriba sull'ereditariet&amp;#224; multipla. In questo post invece mi volevo soffermare su un problema molto meno rilevante dell'esempio appena citato: l'initializer nei costruttori e in particolare richiamare nell'initializer un'altra versione del&amp;nbsp;costruttore della classe. &lt;/P&gt;
&lt;P&gt;In entrambi i linguaggi l'initializer &amp;#232; opzionale e in c# accetta solo costruttori, tramite la parola chiave this (che invoca un&amp;nbsp;costruttore della stessa classe)&amp;nbsp;o base (che invoca il costruttore della classe base). In c++ l'inizializer accetta solo o membri della classe oppure un costruttore della classe base, senza dare la possibilit&amp;#224; di richiamare un altro costruttore della stessa classe. Vediamo un esempio:&lt;/P&gt;
&lt;P&gt;Abbiamo&amp;nbsp;una classe A e una classe B che eredita da A. Le dichiarazione delle classi &amp;#232; sostanzialmente analoga:&lt;/P&gt;
&lt;P&gt;[C#] &lt;BR&gt;public class A &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp; int _a; &lt;BR&gt;&amp;nbsp;&amp;nbsp; //Constructor.... &lt;BR&gt;} &lt;BR&gt;public class B: A &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp; private int _b; &lt;BR&gt;&amp;nbsp; //Constructor... &lt;BR&gt;} &lt;BR&gt;[C++] &lt;BR&gt;public class A &lt;BR&gt;{ &lt;BR&gt;private: &lt;BR&gt;&amp;nbsp; int _a; &lt;BR&gt;&amp;nbsp; //Constructor.... &lt;BR&gt;}; &lt;BR&gt;public class B: public A &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp; private: &lt;BR&gt;&amp;nbsp; int _b; &lt;BR&gt;&amp;nbsp; //Constructors.... &lt;BR&gt;};&lt;/P&gt;
&lt;P&gt;La parte interessate riguarda l'implementazione dei costruttori. Vediamo i costruttori della classe A:&lt;BR&gt;[C#] &lt;BR&gt;public A() : this(0) &lt;BR&gt;{} &lt;BR&gt;&lt;BR&gt;public A(int a) &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp; _a = a; &lt;BR&gt;} &lt;BR&gt;.... &lt;BR&gt;[C++] &lt;BR&gt;public: &lt;BR&gt;A(void) : _a(0) &lt;BR&gt;{} &lt;BR&gt;&lt;BR&gt;A(int a): _a(a) &lt;BR&gt;{} &lt;BR&gt;&lt;BR&gt;Le differenze tra i due linguaggi balzano subito agli occhi: In C# non possono essere inizializzati i membri nell'initializer (anche perch&amp;#232; in realt&amp;#224; non ci sarebbe differenza, se non sintattica,&amp;nbsp;rispetto ad inizializzarli nel corpo del costruttore) mentre in c++ non pu&amp;#242; essere richiamata dal costruttore A(void) la versione del costruttore A(int a). &lt;BR&gt;Vediamo ora i costruttori della classe B: &lt;BR&gt;[C#] &lt;BR&gt;public B() : this(0) &lt;BR&gt;{} &lt;BR&gt;&lt;BR&gt;public B(int b): this(0, b) &lt;BR&gt;{} &lt;BR&gt;&lt;BR&gt;public B(int a, int b): base(a) &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp; _b = b; &lt;BR&gt;} &lt;BR&gt;.... &lt;BR&gt;[C++] &lt;BR&gt;public: &lt;BR&gt;B(void) : A(0), _b(0)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//Richiamo del costruttore con un parametro della classe base&amp;nbsp;e inizializzazione del membro _b&lt;BR&gt;{} &lt;BR&gt;&lt;BR&gt;B(int b): A(0), _b(b) &lt;BR&gt;{} &lt;BR&gt;&lt;BR&gt;B(int a, int b): A(a), _b(b) &lt;BR&gt;{} &lt;BR&gt;&lt;BR&gt;Dalla classe figlia B balza all'occhio ancora la comodit&amp;#224; (e spesso necessit&amp;#224;) del c++ di inizializzare i membri nell'initializer e&amp;nbsp;l'impossibilit&amp;#224; di richiamare una versione diversa del costruttore della classe. E' possibile invece richiamare un costruttore della classe figlia. &lt;BR&gt;Come si dice in questi casi la domanda nasce spontanea: perch&amp;#232; inell'initializer, n c++, si pu&amp;#242; richiamare un costruttore della classe base e non un costruttore diverso della classe figlia? E' una scelta progettuale ed &amp;#232; dettata da una ragione ben precisa o pi&amp;#249; semplicemente in fase di progettazione del linguaggio non &amp;#232; stata proprio pensata una situazione di questo genere? Visto e considerato che C# &amp;#232; un linguaggio pi&amp;#249; nuovo, e permette questa situazione,&amp;nbsp; mi viene da pensare che sia stata una "dimenticanza" del c++.&amp;nbsp; La sensazione &amp;#232; che a questa domanda pu&amp;#242; rispondere solo Mr. Straustrup:)&lt;/P&gt;Ai POSTeri l'ardua sentenza....&lt;img src="http://blogs.ugidotnet.org/rucka/aggbug/2016.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gianluca Carucci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rucka/archive/2004/09/03/2016.aspx</guid>
            <pubDate>Fri, 03 Sep 2004 17:51:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/rucka/archive/2004/09/03/2016.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rucka/comments/commentRss/2016.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Design Pattern&amp;Reflection</title>
            <link>http://blogs.ugidotnet.org/rucka/archive/2004/04/02/398.aspx</link>
            <description>Volevo fare i complimenti ad Adrian per il bellissimo &lt;A href="http://www.ugidotnet.org/articles/articles_read.aspx?ID=76"&gt;articolo &lt;/A&gt;sulla ricerca del pattern Singleton. Oltre ad essere molto interessante lo trovo scritto veramente bene. Complimenti Adrian! A quanto il prossimo numero?:)&lt;img src="http://blogs.ugidotnet.org/rucka/aggbug/398.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gianluca Carucci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rucka/archive/2004/04/02/398.aspx</guid>
            <pubDate>Fri, 02 Apr 2004 10:37:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/rucka/archive/2004/04/02/398.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rucka/comments/commentRss/398.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Il 90% dei problemi di performance sono nel design non nel codice</title>
            <link>http://blogs.ugidotnet.org/rucka/archive/2004/02/12/393.aspx</link>
            <description>Questa &amp;#232; una delle "Ten Rules of Performaces" scritte da Paul Vick nel suo &lt;A href="http://www.panopticoncentral.net/PermaLink.aspx/eacfc5e0-42df-44b0-bb9a-94354b689b17"&gt;blog&lt;/A&gt;. C'&amp;#232; sempre da imparare... :)&lt;img src="http://blogs.ugidotnet.org/rucka/aggbug/393.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gianluca Carucci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rucka/archive/2004/02/12/393.aspx</guid>
            <pubDate>Thu, 12 Feb 2004 10:25:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/rucka/archive/2004/02/12/393.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rucka/comments/commentRss/393.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>