IT翻訳 Nobuyuki の仕事部屋

ボランティアでソフトウエアーローカライズのために翻訳をしている。

Mozilla DOM Hacking Guide: Introduction to XPCOM18

2006-01-27 23:50:19 | InDraft
本日はモーツアルトの誕生日だそうである。生誕250年。テレビやラジオでこの事を今日すでに2、3回聞かされた。なぜ?

それは、日本人がモーツアルトが大好きだからです。オーストリア以外のヨーロッパの国はともかく、他の国の作曲家の誕生日がこれほど話題になる国は日本だけです。ほぼ間違いない。。。日本の大作曲家、山田耕作も、滝廉太郎もモーツアルトには勝てない。

昔大学の教養課程で履修した音楽の講義で、先生に言われたことを思いだす。日本人のモーツアルト好きは、もし本国のオーストリアでモーツアルトの音楽が演奏されなくなったとしても、日本へくればそれが聴けるであろうというくらいなのだと。

確かにモーツアルトの音楽は美しい。人の心を捉えて放さない。そしてそのちょうど良い長さ。シンフォニーも、コンチェルトも、弦楽四重奏も30分以内に終わる。。。しかし、日本人が彼を好きな最大の理由は、やはりその天才であり夭折した人生への感銘だろう。日本人は悲劇の主人公が大好きなのだ。天才の割には、幸せといえなかった人生。映画アマデウスがどこまで、彼の人生の真実を描いているかは分からないが、そこに描かれたのはけっして幸福といえない人生を送った天才の話だった。

今日のBGMは、もちろんモーツアルト。弦楽四重奏16番 K428 イタリア弦楽四重奏団、明るい。。。
--------------------------------------------------------------

原文:  青色表示
訳文:  黒色表示
注記/訂正: 赤色表示

F. Interface inheritance (Advanced topic)

The inheritance model in Mozilla is of course the same as the class inheritance model of C++. If you are familiar with object-oriented programming you will have no problem understanding this discussion.


F. インターフェイスの継承(中級編)

Mozilla における継承のパターンは当然 C++ の継承パターンと同じです。オブジェクト指向のプログラミングに詳しい方であれば、この議論の理解には問題はないでしょう。


Raw interface inheritance

The first concept is easy to grasp, it's the "interface inheritance". If we look at any interface definition, in XPIDL or as a header, we can see that it always inherits from another interface. For instance, we have the following "chain" for the nsIDOMHTMLAnchorElement interface:
nsISupports -> nsIDOMNode -> nsIDOMElement -> nsIDOMHTMLElement -> nsIDOMHTMLAnchorElement.


生のインターフェイスの継承

最初の概念は理解するのは難しくありません。それは、”インターフェイスの継承”です。XPIDL や header にインターフェイスの定義があれば、そのインターフェイスは必ず他のインターフェイスを継承しています。たとえば、 nsIDOMHTMLAnchorElement インターフェイスにとって以下の”連鎖”を備えています:
nsISupports -> nsIDOMNode -> nsIDOMElement -> nsIDOMHTMLElement -> nsIDOMHTMLAnchorElement.


This means that, if a class implements one of the interfaces in the chain, it has to also implement all the ancestors of that interface. For example if a real class implements nsIDOMElement, it also has to implement nsIDOMNode and nsISupports.

すなわち、クラスが連鎖にあるインターフェイスの 1 つを実装すると、そのクラスは実装されたインターフェイスのすべての祖先を実装しなければならないという事です。たとえば、実際のクラスが、nsIDOMElement を実装するなら、そのクラスは nsIDOMNode と nsISupports をも実装しなければならないのです。

さてさて、いよいよ最後の節まで来た。長い文書であるが、もう少しの辛抱だ。先は長くない。。。