パスワードを忘れた? アカウント作成
214095 journal

argonの日記: オブジェクト指向っぽいこと 5

日記 by argon

実はオブジェクト指向ってしっくりこないんです!
http://el.jibun.atmarkit.co.jp/minagawa/2010/04/post-ebc4.html

タイトルで釣られたらしくコメント欄で小火。
本文はもっともに見える断片もあるけれど文章としてこなれていないので、批判にすらなってないコメントがついたのもいたしかたない。

冒頭の、なんでもかんでもインスタンス作らなくてもいいよねっていう指摘はまあそのとおりなんだけど、言語触り始めてすぐ気づくようなことを書かれてもねえ。

OOPL に限らずともプログラミング言語の機能は、仕様を実現して保守しやすい状態に保つために使うものと考えると、どの機能を使うかとか使わないとかで結論を出すには、どのような仕様を実現するためなのかというのが前提になる。
著者の関与するこのような業務分野では OOPL で強調される機能はあまり有用ではなかった、という紹介ならいくらか参考になったかもしれない。
以前にも SQL が書ければ OO 不要というような記事を書いた方がいたが、いわゆる業務系アプリ屋とか SI の方は、自分の触っている分野ではという条件を暗黙の前提にして OO に否定的なコメントを出しているように思う。

 オブジェクト指向の入門書では、クラスが持つ隠ぺい性が強調されているが、これは他の言語でもローカル変数であれば隠ぺいできる話。クラスでもパブリック宣言しちゃえば、隠蔽性なんてなくなる。それから、プロパティに隠ぺい性はない。逆に隠ぺいされていると困る。

これは残念な誤解をなさっているようだ。
プロパティ機構が隠蔽するのは実装の詳細である。
setter/getter を介することでメンバへのアクセス方法を抽象化できることがプロパティの本質なのに。

C# が Java より記述性で優れている点のひとつにプロパティ機構が言語に組み込まれていることがある。
Java では obj.setHoge(v); v = obj.getHoge(); という記述にならざるを得ないが、C# では obj.hoge = v; v = obj.hoge と public なメンバ変数へのアクセスと同様の記述が可能で、かつ hoge へのアクセスは如何様にも実装できる。

プロパティ(C# によるプログラミング入門)
http://ufcpp.net/study/csharp/oo_property.html

# Java7 でもプロパティ機構は導入されないらしい。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • こんな新人レベルがこの手の連載書いてる方が不思議なんだよなぁ...。

    • by Anonymous Coward

      でもそれはこの業界ではよくあることw

    • by Anonymous Coward

      士農工商、エタ、非人、プログラマ、ライター。

      プロのプログラマが記事なんて書くわけ無いじゃないですか。

      単価が死ぬほど安いんですよ?!
      文字通りに飢え死にしそうなくらいに!

      • by Anonymous Coward
        プログラマって犬より下だと思ってたら、ライターより上なんだ。
    • by Anonymous Coward
      コメントが今エラいことになってますよ。
      大丈夫かしら、あの作者・・・。
      (これもあったので無駄にタレコミしちゃいました)
typodupeerror

長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds

読み込み中...