ログ日記

作業ログと日記とメモ

日記を巡回しつつ、オブジェクト指向の話・・じゃないよな

前に見たときは素通りしたけどもう一度別経由で見たので何となく思い付いたことを。


http://blog.ajiyoshi.org/Entry/263/
via: オブジェクト指向とインターフェース - ¬¬日常日記

良いか悪いかは別にして、オブジェクト指向というものの設計は関係ないような。
最後の方に

昔はオブジェクト指向大好きだったんだけど、PerlJavaScriptのような関数をリテラルとして扱える言語を使うようになったら、この手の抽象化のほうがオブジェクト指向が取り扱う抽象化よりもよりシンプルでより強力なんじゃないかと思うようになった。

とあるが、JavaScriptオブジェクト指向だから全体として何が対象なのか分からないな。

class A {
  public String get() {
    return "a";
  }
}

class B {
  public String get() {
    return "b";
  }
}

public class Test {
  public static void main(String args[]) {
    System.out.println(f(new A())); /* 当然大丈夫 */
    System.out.println(f(new B())); /* クラスAとBが区別されるからダメ */
  }

  static String f(A obj) {
    return obj.get();
  }
}


それならばPHPをどうぞ。

<?php
class A {
  public function get() {
    return "a";
  }
}

class B {
  public function get() {
    return "b";
  }
}

class Test {
  public static function main() {
    echo(self::f(new A())); /* 当然大丈夫 */
    echo(self::f(new B())); /* Aのコメントアウトを消すとエラー */
  }

  static function f(/* A */ $obj) {
    return $obj->get();
  }
}

Test::main();

このぬるい感じが何とも。



でもコードをがりがり書きまくってるときには不満が出てきた。function()とarray()だ。
まぁfunction()はいいとしてもarray()がめんどくさすぎる。javascriptみたいに出来ればいいのに。

array(1 => array('group' => array('key' => 'value')));

とかさ。初めは気にならなかったけど書けば書くほどめんどくさくなってきたよ。