2009年10月4日日曜日

子育てをオブジェクト指向で表現すると

うちの娘たちが、だんだん口答えするようになったが、その口調が私やカミさんにそっくり。まさに「子は親の鏡」。

ところで、子供たちは、私やカミさんを「継承」しているのか、それとも口答えを「実装」しているのだろうか? というのが気になったので、子育てをオブジェクト指向で表現してみた。

駄文です。意味はないです。オブジェクト指向を知らない人は無視してください。(そもそも、私のオブジェクト指向の理解だって怪しいし・・・)。あと、コード例はPHPかPerlのつもりですが、全て適当です。

子供はインスタンス? それともクラス?

そもそも、子供って私のインスタンス?

$長女 = new 私();
$次女 = new 私();
$三女 = new 私();

これでは、全ての娘が同じになってしまう。プロパティを変えることはできるが、例えば長女だけ「ポニョを踊る」メソッドを定義できない。そこで、一人ずつクラスを定義すると・・・?

class 長女 extends 俺{
    // 長女の性格・・・
}

これだと、複数の長女インスタンスが存在してしまう。

$長女1 = new 長女();
$長女2 = new 長女();
$長女3 = new 長女();

そこで、長女をシングルトンで定義する。

class 長女 extends 俺{

    private static $instance = null;
    // コンストラクタ
    private function __construct() {
        echo "ホギャ~\n";
    }
    // 長女の誕生
    public static function birth() {
        if ( 長女::$instance == null) {
            長女::$instance = new 長女();
        }
        return 長女::$instance;
    }
}

$長女 = 長女::birth();
// ホギャ~

これなら「長女」が複数存在することはない。同様に「次女」「三女」も独自のメソッドを定義できる。

続く(のか)

0 件のコメント:

コメントを投稿