パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

「オブジェクト指向言語でオブジェクト指向っぽいプログラミングをしない」のはNG?」記事へのコメント

  • オブジェクト指向なんだからちゃんとオブジェクトを宣言して活用しないといけない
    なんてことはないけれど、おぶっじぇくと志向の利点は
    綺麗にコーティングすると「使い回し」が可能な点です。

    そう言う意味では、オブジェクト指向の開発でそれを使わないのは
    チームで開発したことの無い一匹狼のようなプログラマーです。
    • > おぶっじぇくと志向の利点は
      > 綺麗にコーティングすると「使い回し」が可能な点です。

      良くある間違いですね。

      あなたが言っていることは、「構造化プログラミング」の手法を使えば「使い回し」可能なコードが実装できるよ、という話で、オブジェクト指向とは関係ない話です。

      構造化プログラミングってのは、サブルーチンとか手続きといった処理の組合わせ、使い回しでシステムを設計したり実装する方法。要は printf みたいな便利な関数、ライブラリはどんどん使い回しましょう、という話。

      オブジェクト指向は、この処理の組合わせとか使い回しを、オブジェクト中心で考えるように方針転換しましょう、って話ですね。

      親コメント
      • by ei (19798) on 2010年05月06日 23時38分 (#1759497) 日記
        と云っても、「オブジェクト指向設計」と「オブジェクト指向プログラミング」とは、全く異なる概念です。必ず明示するべきです。

        | …オブジェクト中心で考えるように…

        は、恐らく前者でしょう。一方後者のオブジェクト指向プログラミングは、C言語での関数ポインタやvoidポインタ等を明示的に使わないで「似ているもの」を「同じもの」と「異なるもの」とに容易に分離した記述(コーディング)を可能とし、「同じもの」の記述を複数行わない((バグも)コピペしない)ことを容易に達成できる言語仕様及びそれを使ったコード作成技法です。
        「オブジェクト指向設計」されたものの実装に「オブジェクト指向プログラミング」を用いることは至極自然です。一方「オブジェクト指向設計」を考慮していない設計への「オブジェクト指向プログラミング」の適用も、有用です。

        親コメント
        • by Anonymous Coward
          > 一方後者のオブジェクト指向プログラミングは、(略)言語仕様及びそれを使ったコード作成技法です。

          プログラミング=言語仕様+技法ですか。珍しい方ですね。

          常識人なら設計とプログラミングとコーディングはなんとなく区別しているでしょうし、このストーリーでも今のところ混乱している様子はないようですよ。
      • by Anonymous Coward

        構造化言語の「使い回し」ったらそうだろうけど、オブジェクト指向言語の「使い回し」ったら継承でしょ。

        • 継承だけでなく集約も大事ですよ。

          データ構造とメソッドがパックになったオブジェクトが再利用の単位になったことで
          複雑なデータ構造や複雑な状態管理を必要とする処理の再利用が容易になりました。
          (細かいことを言えばこれはオブジェクト指向というよりオブジェクト・ベースの話ではありますが。)

          そのため構造化時代の中心であったサブルーチン・ライブラリのようなものだけでなく、
          コンテナ・ライブラリや通信プロトコルのような応用のライブラリ化が
          容易になりました。

          親コメント
        • by Anonymous Coward

          オブジェクトコンポジションの方が重要だよ。

        • by Anonymous Coward

          『オブジェクト指向言語では、使いまわし(再利用)のために「継承」する』という
          いい加減な説明による誤解が生んだ、えも言われぬ設計のクラスをいくつも見てきました。

          ユーザー extends 会社

          みたいな。
          曰く、「どちらもコードと名称があるから(get/setCode、get/setNameの再利用)」とか。
          もちろん、ユーザークラスでは年齢とか性別とかが「拡張」されてます。

        • by Anonymous Coward
          継承は使い回しじゃないよ! クラス設計の手法の一部にすぎない。

          おそらくは親クラスのメソッドを子クラスから呼び出すことしか考えていないんだろうけど、そんなものはなくても、継承は可能だ。

          継承は、メソッドのインタフェースを共有するための手段である。ポリモルフィズムって聞いたことないか :-p
          • by Anonymous Coward
            それこそ静的型付け言語でメッセージシグネチャの同一性を保証するための苦肉の策でしかないだろ。本来のところ継承とポリモルフィズムには何の関係もないよ。

海軍に入るくらいなら海賊になった方がいい -- Steven Paul Jobs

処理中...