<?xml version="1.0" encoding="UTF-8" ?> <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/"><channel><title>ObjectOriented</title><link>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/category/687.aspx</link><description>ObjectOriented</description><managingEditor>επιστημη</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>επιστημη</dc:creator><title>わんくま東京勉強会#56 懇親会ふぉろー</title><link>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2011/02/20/197105.aspx</link><pubDate>Sun, 20 Feb 2011 00:32:00 GMT</pubDate><guid>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2011/02/20/197105.aspx</guid><wfw:comment>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/197105.aspx</wfw:comment><comments>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2011/02/20/197105.aspx#Feedback</comments><slash:comments>23</slash:comments><wfw:commentRss>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/commentRss/197105.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/services/trackbacks/197105.aspx</trackback:ping><description>&lt;P&gt;懇親会の席上でおもろいネタで盛り上がってました:&lt;/P&gt;
&lt;P&gt;　&lt;STRONG&gt;「コンストラクタが例外を投げるのはアリか?」&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;僕は「ないわー」派についていたのですが、帰りの電車に揺られて酔いを醒ましてるうちに「アリかも」と思い始めてました。&lt;FONT color=#808080 size=2&gt;# かなはるちゃんいぢめてごめんよー&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;そもそも例外処理てぇのは&lt;BR&gt;「エラーを&lt;STRONG&gt;検出できるが対処できない&lt;/STRONG&gt;」呼ばれ側 と&lt;BR&gt;「エラーに&lt;STRONG&gt;対処できるが検出できない&lt;/STRONG&gt;」呼び側 &lt;BR&gt;との間でエラーをやり取りするためのからくり、なハズです。&lt;/P&gt;
&lt;P&gt;するってーと例外ちゅーのは&lt;BR&gt;"あり得ないこと"が起こった事を知らせるっちゅーより、&lt;BR&gt;"&lt;STRONG&gt;対処不能なこと&lt;/STRONG&gt;"が起こった事を知らせるもんだろ、と。&lt;/P&gt;
&lt;P&gt;であるなら、コンストラクタ内で"対処不能なこと"が起こったのならその旨を呼び側に伝えるべく例外投げるのは&lt;STRONG&gt;アリ&lt;/STRONG&gt;かと思うですね。&lt;/P&gt;
&lt;P&gt;※ かたやデストラクタで例外投げるのはどんなもんよ。&lt;BR&gt;デストラクタは往々にして&lt;STRONG&gt;暗黙のうち&lt;/STRONG&gt;に呼ばれるし、.NETだといつ呼ばれるかはおろか確実に呼ばれるかすら定かじゃない。んなもんcatchできひんやん。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/aggbug/197105.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>わんくま東京勉強会#56 LTふぉろー</title><link>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2011/02/20/197104.aspx</link><pubDate>Sun, 20 Feb 2011 00:29:00 GMT</pubDate><guid>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2011/02/20/197104.aspx</guid><wfw:comment>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/197104.aspx</wfw:comment><comments>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2011/02/20/197104.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/commentRss/197104.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/services/trackbacks/197104.aspx</trackback:ping><description>&lt;P&gt;昨年夏の横浜勉強会以来とーんとご無沙汰してたわんくま勉強会、おさしみぶりに顔出しました。日本マイクロソフト＠品川新社屋に潜入したかったし。&lt;/P&gt;
&lt;P&gt;&amp;#8230;えー、中さんゴメンナサイ。Kinect Game DVDを一枚&lt;STRONG&gt;おシャカ&lt;/STRONG&gt;にしてまいました。この埋め合わせは必ずや。どうかご寛恕いただきますよう平身低頭 _o/L&lt;/P&gt;
&lt;P&gt;今回はえムナウ御大プロデュースでWPF/Silverlightスペシャル。native屋の僕が&lt;STRONG&gt;付け入るスキ&lt;/STRONG&gt;などあろうはずもなく、LTで茶を濁すことに。&lt;/P&gt;
&lt;P&gt;LTやらせろと手ぇ挙げてはみたものの、肝心のネタを決めかね、あろうことか触り始めてわずか二時間の&lt;STRONG&gt;Python&lt;/STRONG&gt;でくっちゃべったわけですが案の定しゃべり足りんうちにTime Overコいてまいました。ちーと悔しいのでここでふぉろー。&lt;/P&gt;
&lt;P&gt;Pythonは多重継承を許します:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;class Base1:&lt;BR&gt;&amp;nbsp; def fun(self):&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print('Base1.fun()')&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;class Base2:&lt;BR&gt;&amp;nbsp; def fun(self):&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print('Base2.fun()')&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;class Derived&lt;FONT color=#0000ff&gt;(Base1,Base2)&lt;/FONT&gt;:&lt;BR&gt;&amp;nbsp; pass # なにもしない&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;とか書けばDerivedはBase1とBase2から導出されます。ここで:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;d = Derived() # インスタンスをこしらえて&lt;BR&gt;d.fun() # fun()を呼ぶ&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;とかやるとd.fun()はBase1.fun()とBase2.fun()のどっちが呼ばれるでしょか。&lt;BR&gt;C++でこんなの書いたらどっちのfun()を呼ぶか決めかねてコンパイルエラーです。&lt;BR&gt;かたやPythonでは動いてしまいます。&lt;/P&gt;
&lt;P&gt;d.fun()されたとき、Derivedそれ自身はfun()を持たないので、基底クラスに遡って探しにいきます。メソッドを解決する順序:&lt;STRONG&gt;MRO&lt;/STRONG&gt;(Method Resolution Order)はクラス定義時にカッコ内にに並べた順となります。&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;class Derived(Base1,Base2):&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;と定義したのでMROは:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;Derived&lt;BR&gt;Base1&lt;BR&gt;Base2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;の順となり、d.fun()はBase1.fun()が呼ばれることになるです。&lt;/P&gt;
&lt;P&gt;MROの裏をかいてみましょうか。&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;class Base1:&lt;BR&gt;class Base2:&lt;BR&gt;class Derived1(&lt;FONT color=#0000ff&gt;Base1&lt;/FONT&gt;,&lt;FONT color=#ff0000&gt;Base2&lt;/FONT&gt;): # [1]&lt;BR&gt;class Derived2(&lt;FONT color=#ff0000&gt;Base2&lt;/FONT&gt;,&lt;FONT color=#0000ff&gt;Base1&lt;/FONT&gt;): # [2]&lt;BR&gt;class MoreDerived(Derived1,Derived2):&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;こんなコード書くとMoreDerivedのMROを決定する際に([1]と[2]においてBase1とBase2の順序が異なるために)Base1とBase2のどっちを先にするか決めかねてエラーになるですよ。&lt;/P&gt;
&lt;P&gt;よーするにPythonの多重継承は単一継承に置き換えることで実現する&lt;STRONG&gt;"なんちゃって多重継承"&lt;/STRONG&gt;と考えられます。だとすれば単一継承しか許さない.NETで実装したPython処理系:IronPythonが作れるのも頷けますです。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/aggbug/197104.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>エンジンがかからない...</title><link>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2009/02/06/167582.aspx</link><pubDate>Fri, 06 Feb 2009 11:09:00 GMT</pubDate><guid>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2009/02/06/167582.aspx</guid><wfw:comment>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/167582.aspx</wfw:comment><comments>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2009/02/06/167582.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/commentRss/167582.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/services/trackbacks/167582.aspx</trackback:ping><description>&lt;P&gt;朝から活性化レベルが落ちてるなー。アタマが回りださないわ。&lt;BR&gt;&lt;BR&gt;昔書いたコード群とか、既存のプロジェクトとかから&lt;STRONG&gt;よさげなコード片&lt;/STRONG&gt;を&lt;BR&gt;くすねて再利用ってよくやります。&lt;BR&gt;&lt;BR&gt;「あ、これもーらいっ♪」って{ から } まで切り取って貼り付けてコンパイル&lt;BR&gt;すると 「...がありません」 て怒られる。&lt;STRONG&gt;別のナニカ&lt;/STRONG&gt;を呼んでたみたい。&lt;BR&gt;なのでそこも切り取って貼り付ける。またしても「...がありません」て怒られる。&lt;BR&gt;...&lt;STRONG&gt;いもづる式&lt;/STRONG&gt;に依存しちゃってんのね。&lt;BR&gt;&lt;BR&gt;そか、こんないもづる依存を断ち切るためにも、&lt;BR&gt;&lt;STRONG&gt;interfaceで実装を分離&lt;/STRONG&gt;するんだよなー。&lt;BR&gt;んでもって&lt;STRONG&gt;DI&lt;/STRONG&gt;(でぺんでんしぃ・いんぢぇくしょん)に繋がるわけかー&lt;BR&gt;とかぽやーと思った。ｱｯﾀﾘﾒｰなんだけど。&lt;BR&gt;&lt;BR&gt;...いかん&lt;STRONG&gt;茶が足りん&lt;/STRONG&gt;。茶っぱのストックが...うあぁぁぁ orz&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/aggbug/167582.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>interfaceとダック・タイピング</title><link>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2009/01/27/166871.aspx</link><pubDate>Tue, 27 Jan 2009 09:12:00 GMT</pubDate><guid>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2009/01/27/166871.aspx</guid><wfw:comment>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/166871.aspx</wfw:comment><comments>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2009/01/27/166871.aspx#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/commentRss/166871.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/services/trackbacks/166871.aspx</trackback:ping><description>&lt;P&gt;ネタ元 → &lt;A id=viewpost.ascx_TitleUrl HREF="/aqua/archive/2009/01/26/166834.aspx"&gt;&lt;FONT color=#0000ff&gt;Interfaceが使いこなせない。&lt;/FONT&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;interfaceは"&lt;STRONG&gt;責務&lt;/STRONG&gt;の集合"に名前(カテゴリ)を与えるものですな。&lt;BR&gt;利用者視点ではその名を冠するものが"～できる"ことが約束されており、&lt;BR&gt;実装者視点ではその名を冠するかぎり"～できる"ことを保証せにゃなりません。&lt;BR&gt;作るひとと使うひとの間の&lt;STRONG&gt;契約&lt;/STRONG&gt;とでも申しましょうか。&lt;BR&gt;&lt;BR&gt;Java/.NETにはinterfaceがありますけども、C++にはありません。&lt;BR&gt;C++は多重継承があるから、純粋仮想関数だけで構成された&lt;BR&gt;classをinterfaceの代わりに用いたりします。&lt;BR&gt;てゆっかー、多重継承のできないJava/.NETが多重継承のかわりに&lt;BR&gt;用意した、って雰囲気なんですけども。&lt;BR&gt;# Java/.NETはinterfaceならいくつも継承(実装)できますからね&lt;BR&gt;&lt;BR&gt;C++ではtemplateを使った&lt;STRONG&gt;ダック・タイピング&lt;/STRONG&gt;って手法があります。&lt;BR&gt;"鴨とはなにか"(=interface:鴨は～できる)が明確に定義されてなくたって、&lt;BR&gt;&lt;STRONG&gt;鴨のようにふるまうならそいつぁ鴨&lt;/STRONG&gt;とみなしていぃじゃない、&lt;BR&gt;ってリクツです。&lt;BR&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;#include &amp;lt;iostream&amp;gt;&lt;BR&gt;using namespace std;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#008000&gt;// トランプの場札&lt;/FONT&gt;&lt;BR&gt;struct &lt;FONT color=#0000ff&gt;CardDeck&lt;/FONT&gt; {&lt;BR&gt;&amp;nbsp; void &lt;FONT color=#ff0000&gt;draw&lt;/FONT&gt;() { cout &amp;lt;&amp;lt; "カードを一枚引く\n"; }&lt;BR&gt;};&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#008000&gt;// 預金口座&lt;/FONT&gt;&lt;BR&gt;struct &lt;FONT color=#0000ff&gt;Account&lt;/FONT&gt; {&lt;BR&gt;&amp;nbsp; void &lt;FONT color=#ff0000&gt;draw&lt;/FONT&gt;() { cout &amp;lt;&amp;lt; "預金を引き出す\n"; }&lt;BR&gt;};&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#008000&gt;// 製図器&lt;/FONT&gt;&lt;BR&gt;struct &lt;FONT color=#0000ff&gt;Drafter&lt;/FONT&gt; {&lt;BR&gt;&amp;nbsp; void &lt;FONT color=#ff0000&gt;draw&lt;/FONT&gt;() { cout &amp;lt;&amp;lt; "図面を描く\n"; }&lt;BR&gt;};&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#008000&gt;// ...に対し draw する： drawできるならDrawableとみなしていいじゃない&lt;BR&gt;&lt;/FONT&gt;template&amp;lt;typename &lt;FONT color=#0000ff&gt;Drawable&lt;/FONT&gt;&amp;gt;&lt;BR&gt;void &lt;STRONG&gt;draw_by&lt;/STRONG&gt;(&lt;FONT color=#0000ff&gt;Drawable&lt;/FONT&gt;&amp;amp; target) {&lt;BR&gt;&amp;nbsp; target.&lt;FONT color=#ff0000&gt;draw&lt;/FONT&gt;();&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;int main() {&lt;BR&gt;&amp;nbsp; draw_by(&lt;FONT color=#0000ff&gt;CardDeck&lt;/FONT&gt;());&lt;BR&gt;&amp;nbsp; draw_by(&lt;FONT color=#0000ff&gt;Account&lt;/FONT&gt;());&lt;BR&gt;&amp;nbsp; draw_by(&lt;FONT color=#0000ff&gt;Drafter&lt;/FONT&gt;());&lt;BR&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;トランプの場札、預金口座、製図器に共通の基底クラス(=interface)はありません。&lt;BR&gt;が、どれも&lt;STRONG&gt;drawできるんだからDrawable&lt;/STRONG&gt;とみなすわけや。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/aggbug/166871.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>かーぢなりちぃとかれぢでんしぃとか(ご意見伺い)</title><link>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2009/01/20/166528.aspx</link><pubDate>Tue, 20 Jan 2009 14:46:00 GMT</pubDate><guid>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2009/01/20/166528.aspx</guid><wfw:comment>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/166528.aspx</wfw:comment><comments>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2009/01/20/166528.aspx#Feedback</comments><slash:comments>16</slash:comments><wfw:commentRss>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/commentRss/166528.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/services/trackbacks/166528.aspx</trackback:ping><description>&lt;P&gt;設計書書いてます。こりこりと。&lt;BR&gt;フェイズ的には機能から詳細に掛かるくらい。&lt;/P&gt;
&lt;P&gt;クラス・ダイアグラムやら状態遷移やらファイル・フォーマットやら、&lt;BR&gt;&lt;STRONG&gt;詳細設計に必要となりそうなもんを&lt;/STRONG&gt;詰め込んでる最中なのですが&lt;BR&gt;&lt;BR&gt;それぞれのクラスについて、そのインスタンスが:&lt;BR&gt;- それはアプリケーション内に&lt;STRONG&gt;常駐&lt;/STRONG&gt;(resident)するか、&lt;BR&gt;　それとも使いたいときにひょこっと起こして(transient)&lt;STRONG&gt;使い捨て&lt;/STRONG&gt;るか。&lt;BR&gt;- それはアプリケーション内に&lt;STRONG&gt;いくつ&lt;/STRONG&gt;ある(cardinality)のか?&lt;BR&gt;　常に1? 常に5? 1個以上いくつでも? 最小0の最大27?&lt;BR&gt;&lt;BR&gt;なんて情報、どこに/どんなふぅに書きます?&lt;BR&gt;クラス・ダイアグラムにはクラス間の関係として1対1とか1対nとか&lt;BR&gt;書きますけどもこれはあくまでクラスとして、ですよね。&lt;BR&gt;&lt;BR&gt;実際に動いてるときの&lt;STRONG&gt;動的な数&lt;/STRONG&gt;はどこに/どのように書くのが吉なんでしょか。&lt;BR&gt;&lt;BR&gt;スマートな案が出てこなかったので、暫定的にcardinality/residencyの章を&lt;BR&gt;こさえてそこにクラス毎の&lt;STRONG&gt;数&lt;/STRONG&gt;および&lt;STRONG&gt;生成/消滅タイミング&lt;/STRONG&gt;を書いてるんだけど、&lt;BR&gt;どぉもしっくりいかない。この章だけが&lt;STRONG&gt;ポコっと浮いちゃう&lt;/STRONG&gt;みたいな。&lt;BR&gt;&lt;BR&gt;「アイデア」とか「俺はこうする/こうしてる」とかあったら教えてくださいまし。&lt;BR&gt;&lt;BR&gt;[追記] ここでナゼか夏椰さんがアタマに浮かぶ(説明不能)...&lt;BR&gt;&lt;BR&gt;あのさ、Databaseで&lt;STRONG&gt;CRUD&lt;/STRONG&gt;(Create, Read, Update, Delete) てのがあるやん。&lt;BR&gt;アレのクラス版を表形式で書くのはどうだろう。&lt;BR&gt;各クラスに対し、インスタンスがCreate, Read, Update, Delete されるタイミングを明記しておくの。&lt;BR&gt;ホントに使い捨てのUtilityクラスはいいとして、主要なクラスについてこの表を&lt;BR&gt;埋めることができない(あるいは悩む)ようなら、まだ設計が甘いことの証左になるよねぇ。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/aggbug/166528.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>interfaceに物申す(3)</title><link>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2009/01/07/165775.aspx</link><pubDate>Wed, 07 Jan 2009 09:24:00 GMT</pubDate><guid>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2009/01/07/165775.aspx</guid><wfw:comment>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/165775.aspx</wfw:comment><comments>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2009/01/07/165775.aspx#Feedback</comments><slash:comments>50</slash:comments><wfw:commentRss>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/commentRss/165775.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/services/trackbacks/165775.aspx</trackback:ping><description>&lt;P&gt;&lt;A id=viewpost.ascx_TitleUrl HREF="/episteme/archive/2009/01/06/165674.aspx"&gt;&lt;FONT color=#0000ff&gt;interfaceに物申す&lt;/FONT&gt;&lt;/A&gt; のコメントでちらっと出てきた NVI について。&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;NVI&lt;/STRONG&gt;:non-virtual interface : 非仮想インタフフェイス &lt;BR&gt;そこそこ名の通ったイディオムかと思うです。&lt;BR&gt;&lt;BR&gt;&lt;FONT face="Courier New"&gt;class なにか {&lt;BR&gt;public:&lt;BR&gt;&amp;nbsp; &lt;STRONG&gt;&lt;FONT color=#ff0000&gt;virtual&lt;/FONT&gt;&lt;/STRONG&gt; void なにかする() { ... }&lt;BR&gt;};&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;じゃなくて&lt;BR&gt;&lt;BR&gt;&lt;FONT face="Courier New"&gt;class なにか {&lt;BR&gt;public:&lt;BR&gt;&amp;nbsp; void なにかする() &lt;FONT color=#008000&gt;// non-virtual&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { あーする(); こーする(); }&lt;BR&gt;protected:&lt;BR&gt;&amp;nbsp; &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;virutal&lt;/FONT&gt;&lt;/STRONG&gt; void あーする();&lt;BR&gt;&amp;nbsp; &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;virtual&lt;/FONT&gt;&lt;/STRONG&gt; void こーする();&lt;BR&gt;};&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;てなｽﾝﾎﾟｰで、公開メソッドをvirtualにしないってスタイル(イディオム)。&lt;BR&gt;導出クラス側では直接 なにかする() を再定義すんじゃなく、&lt;BR&gt;あーする() や こーする() を再定義するなり再利用するなりせぇ、と。&lt;BR&gt;&lt;BR&gt;こうしておけば、後日なんらかの理由で なにかする() のインタフェースが変更に&lt;BR&gt;なったとき、再定義された なにかする() の変更をこいつの導出クラス全員に&lt;BR&gt;&lt;STRONG&gt;お願いして回らんでええ&lt;/STRONG&gt;わけや。&lt;BR&gt;&lt;BR&gt;C++の場合、&lt;STRONG&gt;再定義させない&lt;/STRONG&gt;keyword: finalやsealedに相当するものを&lt;BR&gt;持ち合わせてないのでその代わり、の意味もありますです。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/aggbug/165775.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>interfaceに物申す(2)</title><link>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2009/01/06/165690.aspx</link><pubDate>Tue, 06 Jan 2009 13:33:00 GMT</pubDate><guid>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2009/01/06/165690.aspx</guid><wfw:comment>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/165690.aspx</wfw:comment><comments>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2009/01/06/165690.aspx#Feedback</comments><slash:comments>29</slash:comments><wfw:commentRss>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/commentRss/165690.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/services/trackbacks/165690.aspx</trackback:ping><description>&lt;P&gt;ちょっと長くなりそうだったのでエントリ立て。&lt;BR&gt;&lt;BR&gt;&lt;A id=RecentPosts__ctl2_Hyperlink2 HREF="/episteme/archive/2009/01/06/165674.aspx"&gt;&lt;FONT color=#0000ff&gt;interfaceに物申す&lt;/FONT&gt;&lt;/A&gt;のself コメント:&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#808080&gt;&lt;FONT face="Courier New" size=2&gt;　　interface I商品 { &lt;BR&gt;　　　int 売値(); &lt;BR&gt;　　} &lt;BR&gt;&lt;BR&gt;　　interface I売りもん : I商品 { &lt;BR&gt;　　　int 原価(); &lt;BR&gt;　　} &lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;　　とかやっといて、商店は I売りもん をもってるけど、 &lt;BR&gt;　　お客さんには I商品 として見せろ。 &lt;BR&gt;&lt;BR&gt;　　ってーことかしら。 &lt;BR&gt;　　なんか直接的じゃないんだよなー... &lt;BR&gt;&lt;BR&gt;　　八百屋さんはりんごを I売りもん として扱います。 &lt;BR&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;　　class りんご : I売りもん { &lt;BR&gt;　　　Color 色() { ... } &lt;BR&gt;　　} &lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;　　お客さんには値段しか書かれていない真っ黒な袋に入った &lt;BR&gt;　　I商品として見せろって? &lt;BR&gt;　　じょーだんじゃない、お客は りんご が欲しいんだ。 &lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;ではこれは?&lt;BR&gt;&lt;BR&gt;interface I商品 {&lt;BR&gt;　int 売値();&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;interface I売りもん {&lt;BR&gt;&amp;nbsp; int 原価();&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#008000&gt;// 店頭に並べるりんご： 色と売値を公開。&lt;BR&gt;&lt;/FONT&gt;interface Iりんご : I商品 {&lt;BR&gt;&amp;nbsp; Color 色();&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#008000&gt;// 八百屋が仕入れたりんご。店頭に並べるが原価はナイショ&lt;BR&gt;&lt;/FONT&gt;class 売りもんのりんご : I売りもん, Iりんご {}&lt;BR&gt;&lt;BR&gt;こうすれば八百屋さんはお客に Iりんご を提供できます。&lt;BR&gt;んが、I売りもん と I商品 が泣き別れてます。&lt;BR&gt;これもちょっと考えにくいつか許容し難いつか。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/aggbug/165690.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>interfaceに物申す</title><link>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2009/01/06/165674.aspx</link><pubDate>Tue, 06 Jan 2009 12:10:00 GMT</pubDate><guid>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2009/01/06/165674.aspx</guid><wfw:comment>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/165674.aspx</wfw:comment><comments>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2009/01/06/165674.aspx#Feedback</comments><slash:comments>62</slash:comments><wfw:commentRss>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/commentRss/165674.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/services/trackbacks/165674.aspx</trackback:ping><description>&lt;P&gt;interfaceね。その名の通りインタフェイスのみを宣言したもの。&lt;BR&gt;C++でいえば純粋仮想関数(pure-virtual-function)のみで構成されたクラス(みたいなの)。&lt;/P&gt;
&lt;P&gt;たとえば:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;interface I商品 {&lt;BR&gt;&amp;nbsp; int 売値();&lt;BR&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;JavaにしろC#/VBにしろ、interfaceに記述するメソッド(あるいはプロパティ)は&lt;BR&gt;すべてpublic扱いとなります。&lt;BR&gt;interfaceなんだからそれに対して"何ができるか"は&lt;BR&gt;&lt;STRONG&gt;公開すんのがアタリマエだろ常考&lt;/STRONG&gt;ってリクツでしょう。&lt;BR&gt;&lt;BR&gt;けどね、隠したいメソッド/プロパティもあるんじゃないかしら。&lt;BR&gt;たとえば、商品の原価は売り手にとっては&lt;STRONG&gt;重要だけど&lt;/STRONG&gt;&lt;BR&gt;買い手や競合他社には&lt;STRONG&gt;見せたくない&lt;/STRONG&gt;よね。&lt;BR&gt;だから願わくはinterfaceに書くメソッド/プロパティには&lt;STRONG&gt;公開限定子&lt;/STRONG&gt;を指定できて&lt;BR&gt;ほしいのね。 ↓こんな具合に。&lt;BR&gt;&lt;BR&gt;&lt;FONT face="Courier New"&gt;interface I商品 {&lt;BR&gt;&amp;nbsp; &lt;FONT color=#ff0000&gt;public&lt;/FONT&gt; int 売値();&lt;BR&gt;&amp;nbsp; &lt;FONT color=#ff0000&gt;private&lt;/FONT&gt; int 原価();&lt;BR&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;STRONG&gt;隠しておきたいけど必要&lt;/STRONG&gt;なメソッド/プロパティをどうやって表現するんだろう。&lt;BR&gt;# C++ならprivateなpure-virtual-functionが許されるのにのに&lt;BR&gt;&lt;BR&gt;この疑問はその昔JavaでObservable/Observer使ったときに感じたものです。&lt;BR&gt;Observer.update はObservable側で発した変更通知を受けたときに(のみ）反応すべきもの。&lt;BR&gt;だからこいつは勝手に呼んでもらっちゃ困ります。隠しておきたいはずです。&lt;BR&gt;なのにpublicにならざるを得ないのです。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/aggbug/165674.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>それぢゃいかんだろぉ</title><link>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/07/30/150996.aspx</link><pubDate>Wed, 30 Jul 2008 09:49:00 GMT</pubDate><guid>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/07/30/150996.aspx</guid><wfw:comment>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/150996.aspx</wfw:comment><comments>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/07/30/150996.aspx#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/commentRss/150996.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/services/trackbacks/150996.aspx</trackback:ping><description>&lt;P&gt;&lt;A id=_decb82b48059ef77_HomePageDays_DaysList__ctl0_DayItem_DayList__ctl0_TitleUrl HREF="/episteme/archive/2008/07/30/150978.aspx"&gt;&lt;FONT color=#0000ff&gt;それでいいんですかぃ?&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp;のつづき。&lt;/P&gt;
&lt;P&gt;拡張メソッドによる&lt;STRONG&gt;なんちゃって多重継承&lt;/STRONG&gt;に風穴を空けてみた。&lt;BR&gt;&lt;BR&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;Android&lt;/STRONG&gt; RTI = new Android();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RTI.&lt;FONT color=#800080&gt;move&lt;/FONT&gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;IMachine&lt;/FONT&gt; m = RTI; m.&lt;FONT color=#0000ff&gt;move&lt;/FONT&gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#ff0000&gt;IHuman&lt;/FONT&gt;&amp;nbsp;&amp;nbsp; h = RTI; h.&lt;FONT color=#ff0000&gt;move&lt;/FONT&gt;();&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT face="Courier New"&gt;IMachine&lt;/FONT&gt;/&lt;FONT face="Courier New"&gt;IHuman&lt;/FONT&gt;にキャストしただけで&lt;BR&gt;&lt;FONT face="Courier New"&gt;Android&lt;/FONT&gt;の歩き方を忘れちゃいます。&lt;/P&gt;
&lt;P&gt;正統(?)多重継承(C++)だと:&lt;BR&gt;&lt;BR&gt;&lt;FONT face="Courier New"&gt;#include &amp;lt;iostream&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;class &lt;FONT color=#0000ff&gt;Machine&lt;/FONT&gt; {&lt;BR&gt;public:&lt;BR&gt;&amp;nbsp; virtual void &lt;FONT color=#0000ff&gt;move&lt;/FONT&gt;()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { std::cout &amp;lt;&amp;lt; "計算機がモーターを制御します\n"; }&lt;BR&gt;};&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;class &lt;FONT color=#ff0000&gt;Human&lt;/FONT&gt; {&lt;BR&gt;public:&lt;BR&gt;&amp;nbsp; virtual void &lt;FONT color=#ff0000&gt;move&lt;/FONT&gt;()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { std::cout &amp;lt;&amp;lt; "神経系が筋肉を制御します\n"; }&lt;BR&gt;};&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;class &lt;FONT color=#800080&gt;Android&lt;/FONT&gt; : public &lt;FONT color=#0000ff&gt;Machine&lt;/FONT&gt;, public &lt;FONT color=#ff0000&gt;Human&lt;/FONT&gt; {&lt;BR&gt;public:&lt;BR&gt;&amp;nbsp; virtual void &lt;FONT color=#800080&gt;move&lt;/FONT&gt;()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { std::cout &amp;lt;&amp;lt; "ギコギコ歩きますー\n"; }&lt;BR&gt;};&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;int main() {&lt;BR&gt;&amp;nbsp; &lt;FONT color=#800080&gt;Android&lt;/FONT&gt; RTI;&lt;BR&gt;&amp;nbsp; RTI.&lt;FONT color=#800080&gt;move&lt;/FONT&gt;();&lt;BR&gt;&amp;nbsp; &lt;FONT color=#0000ff&gt;Machine&lt;/FONT&gt;* m = &amp;amp;RTI; m-&amp;gt;&lt;FONT color=#800080&gt;move&lt;/FONT&gt;();&lt;BR&gt;&amp;nbsp; &lt;FONT color=#ff0000&gt;Human&lt;/FONT&gt;*&amp;nbsp;&amp;nbsp; h = &amp;amp;RTI; h-&amp;gt;&lt;FONT color=#800080&gt;move&lt;/FONT&gt;();&lt;BR&gt;};&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;ちゃんと継承してるんで、ちゃんと"ギコギコ"歩きます。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/aggbug/150996.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>それでいいんですかぃ?</title><link>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/07/30/150978.aspx</link><pubDate>Wed, 30 Jul 2008 06:29:00 GMT</pubDate><guid>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/07/30/150978.aspx</guid><wfw:comment>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/150978.aspx</wfw:comment><comments>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/07/30/150978.aspx#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/commentRss/150978.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/services/trackbacks/150978.aspx</trackback:ping><description>&lt;P&gt;某所にて &lt;BR&gt;「インターフェースに対して拡張メソッドでメソッドを追加するようにすれば、&lt;BR&gt;事実上多重継承が実現できます」&lt;BR&gt;&lt;BR&gt;ってゆーてた。えー、どゆことソレ? って突っ込んでみたところ:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; interface &lt;FONT color=#0000ff&gt;Iほげらぶる&lt;/FONT&gt; {};&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; static class &lt;FONT color=#0000ff&gt;ほげらぶる実装&lt;/FONT&gt; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void &lt;FONT color=#0000ff&gt;ほげ&lt;/FONT&gt;(this Iほげらぶる hoge) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("ほげほげー");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; interface &lt;FONT color=#ff0000&gt;Iぱよらぶる&lt;/FONT&gt; {};&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; static class &lt;FONT color=#ff0000&gt;ぱよらぶる実装&lt;/FONT&gt; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void &lt;FONT color=#ff0000&gt;ぱよ&lt;/FONT&gt;(this Iぱよらぶる payo) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("ぱよぱよー");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; class &lt;FONT color=#800080&gt;ぺも&lt;/FONT&gt; : &lt;FONT color=#0000ff&gt;Iほげらぶる&lt;/FONT&gt;, &lt;FONT color=#ff0000&gt;Iぱよらぶる&lt;/FONT&gt; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void Main() {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#800080&gt;ぺも&lt;/FONT&gt; p = new ぺも();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.&lt;FONT color=#0000ff&gt;&lt;STRONG&gt;ほげ&lt;/STRONG&gt;&lt;/FONT&gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.&lt;FONT color=#ff0000&gt;&lt;STRONG&gt;ぱよ&lt;/STRONG&gt;&lt;/FONT&gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;なるほど、拡張メソッドによってインタフェースに実装を貼り付けることが&lt;BR&gt;できるんだから、実装の貼り付いたインタフェースを多重継承すれば双方の&lt;BR&gt;実装を継承できるってわけか。&lt;/P&gt;
&lt;P&gt;でもねー、シグニチャがカブったらどないすんのよ。&lt;BR&gt;&lt;BR&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; interface &lt;FONT color=#0000ff&gt;IMachine&lt;/FONT&gt; {};&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; static class &lt;FONT color=#0000ff&gt;MachineImpl&lt;/FONT&gt; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void &lt;FONT color=#0000ff&gt;move&lt;/FONT&gt;(this IMachine machine) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("計算機がモーターを制御します");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; interface &lt;FONT color=#ff0000&gt;IHuman &lt;/FONT&gt;{};&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; static class &lt;FONT color=#ff0000&gt;HumanImpl&lt;/FONT&gt; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void &lt;FONT color=#ff0000&gt;move&lt;/FONT&gt;(this IHuman human) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("神経系が筋肉を制御します");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; class &lt;FONT color=#800080&gt;Android&lt;/FONT&gt; : &lt;FONT color=#0000ff&gt;IMachine&lt;/FONT&gt;, &lt;FONT color=#ff0000&gt;IHuman&lt;/FONT&gt; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void &lt;FONT color=#800080&gt;move&lt;/FONT&gt;() { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("ギコギコ歩きますー"); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void Main() {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt; &lt;/STRONG&gt;&lt;FONT color=#800080&gt;Android&lt;/FONT&gt; RTI = new Android();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RTI.&lt;FONT color=#800080&gt;&lt;STRONG&gt;move&lt;/STRONG&gt;&lt;/FONT&gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT face="Courier New" color=#000000&gt;Android&lt;/FONT&gt;が&lt;FONT face="Courier New"&gt;move&lt;/FONT&gt;を再定義できるから破綻は免れたけども...&lt;BR&gt;これでも多重継承できたというてえぇのやろうか。意見求ム。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/aggbug/150978.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>