上で定義されているような(訳註:Personクラスの)DESTORYメソッドを、(たぶん継承されて)"借りた"としましょう。変数は変化させられます。新しいクラスのパッケージの名前空間の$Censusではありません。したら、このことは、あなたの望むものかもしれませんが、十中八九違うでしょう。name.)これを修正する方法があります。リファレンスを蓄えます。最初のアンダースコアは、いつもCプログラマに不思議な感覚を伝えるからです。思い出させる、たんなる、記憶を助ける工夫です。respectively.クラスにデバッグのメカニズムがあるのは、一般的です。オブジェクトが作られるか、破壊される時に、(訳註:デバッグ情報を)見たいでしょう。するためには、デバッグの値をファイルスコープのレキシカル変数に加えます。このために、警告と致命的なメッセージを発する標準のCarpモジュールを呼びましょう。variable.さて、新しいクラスメソッドに、変数のアクセスを加えましょう。these:ひょっとしたら、オブジェクトごとに、デバッグ状態を持ちたいかも知れません。follows:こうするためには、デバッグメソッドは、"二頂の"メソッドでなければなりません。クラスとオブジェクトの両方で動くメソッドです。example,オブジェクトのデストラクタは、それぞれの別個のオブジェクトごとの死を取り扱います。した掃除が欲しいときもあります。そのクラスパッケージの中に、ENDと名付けられる関数を作ります。ENDの働きは、伝統的なモジュールのEND関数とちょうど似ています。プログラムが実行されないか、とらえられないシグナルで死んで、プログラムが終了したときにいつでも呼ばれます。クラスがロードされたのと反対の順番(LIFOの順番)で呼ばれます。interface:そして、ドキュメントがあります:今まで、このPersonクラスの実装を見せています。Personクラスのインターフェースは、Personクラスのドキュメントになります。ファイルの中に、下に続くドキュメントを配置します。このドキュメントがほとんどコードに見えても、違います。プログラムで使われます。Perlのコンパイラは、podをまったく無視します。翻訳者がコードを無視するのと同じです。fate.インターフェース対実装の問題があります。いじくりまわすようなプログラマには、保証が無効になります。彼らの運命を気に病むべきではありません。warranty.後になって、よりよい名前を実装するために、クラスを変えたくなったとしましょう。ファミリーネーム(名字と呼ばれる)の両方と、それに加えて、ニックネームと称号もサポートしたくなったとします。適切にアクセスしていれば、簡単にその下にある実装を変更することが出来ます。なければ、Personクラスを使う人は損をします。契約を破り、保証を失効したむくいです。way:次のようにして、他のクラスを作ります。最初に、それをどのように使いたいかを把握しなければなりません。them:Fullnameクラスがあります。modules.)オブジェクト指向プログラミングのシステムは、全て、継承の考えをサポートします。継承は、一つのクラスが他のクラスの上におんぶすることを意味します。同じコードをくり返し、くり返し、書かなくて済みます。ソフトウェアの再利用です。メカニズムもまた、コードの再利用の形です。method.継承の文法は、時に、言語の核に組み込まれていることがあれば、そうでないときもあります。Perlは、一つのクラス(や、複数のクラス)から、継承するのに特別な文法はありません。その代わりに、意味論においては、全て厳しい。@ISAと呼ばれる変数があり、@ISAは、(メソッド)継承を治めるものです。Perlは、見付からないメソッドを検索するさいに、@ISAを見て、他のパッケージを探しに行きます。my()で作られるファイルスコープのレキシカル変数であってはいけません。ほとんどのクラスで、@ISA配列には一つのものしかありません。このことは、"単一継承"と呼ばれるものです。省略して、SIとも呼ばれます。必要なら、その、他のクラスからメソッドを継承することを始めることだけです。Employeeクラスには、それ自身のメソッドを与えてはいません。Employeeクラスに、ちょうどPersonクラスのような振る舞いを当てにします。this:このような空のクラスを作ることは、"空のサブクラステスト"と呼ばれます。これは、基底クラスから継承する以外には、なにもしない派生クラスを作ることです。新しい派生クラスは、古いものの差し込み式の置換として、使われます。ok.適切な設計によって、そうできます。グローバルなデータに直接アクセスするのを避け、何もexportしない設計のことです。上の方で定義しているPerson::new()関数を見返したら、そうするように注意しています。そのリファレンスを通して、パッケージデータにアクセスします。それで、よしとすべきです。原則的には、メソッドです。メソッドの両方が呼んでいる関数です。この2つを同じものとして扱うなら、すぐに壊れたプラグラムしか残されないことを理解してください。第二に、関数呼び出しは継承をしませんが、メソッド呼び出しは継承をします。method.ですので、メソッドを呼ぼうとしているときに関数呼び出しを使わないでください。date.従業員が、ただの、Personだったら、それはあまり面白くありません。さあ、他のメソッドを追加しましょう。飽きたとしても、落胆しないでください。いくつかの種々の便利なメカニズムについて説明します。そのメソッドは派生クラスのもの(訳註:version)を得ます。従業員で、peers()メソッドを呼ぶと、(訳註:Personとは、)少々違った動きをさせたいとしましょう。同僚の名前のリストをただ返す代わりに、ちょっと違った文字列を返しましょう。ファイルに加えるだけです。デモンストレーションをしています。われわれ自身の目的に適応するように、存在するオブジェクトを変更します。これは、不精の形です。見せようと決めるときに起こることです)。両方をきっかけをメソッドに呼ばせたいでしょう。メソッドでは、十中八九、そうだとうなずけます。debug()関数を呼びます。良い設計にとっては、こうするのは、ひじょーに、壊れやすいものです。次のようにする方が、良いです。sayですが、まだ、ハードコードしすぎです。次のようにする方が、良いです。methods.これは、Person内で、debug()メソッドを探し始める楽しいやりかたです。オーバーライドされたオブジェクトメソッドで、よく見ます。here.少しのものがまだ、あります。スーパークラスの名前をハードコードしています。継承するクラスを変えるか、他のものを加えたら、このことは、特に、悪いです。幸運なことに、仮名クラスのSUPERが、ここで、助けになります。call.こうすると、自分のクラスの@ISAをのぞき始ます。これは、メソッドコール内から意味をなすだけです。他のどこからも、SUPER::の何にも、アクセスしようとしないでください。いうのは、上書きされたメソッド呼出の外側には存在しないからです。one:事態は、ちょっと複雑になってきています。空のサブクラスを経由するテストです。Employeeから、新しい空のサブクラスを生成できます。way:実行すると、まだ、大丈夫です。way:ふーむ、何かがなくなっています。それらに、何も、undefさえもセットしていません。それらが見えなかったのです。メソッドがありません。Personのnew()メソッドは、Employeeについて知りません。知っていてもよいと指示しています。その逆は同様ではありません)。