アカウント名:
パスワード:
> おぶっじぇくと志向の利点は> 綺麗にコーティングすると「使い回し」が可能な点です。
良くある間違いですね。
あなたが言っていることは、「構造化プログラミング」の手法を使えば「使い回し」可能なコードが実装できるよ、という話で、オブジェクト指向とは関係ない話です。
構造化プログラミングってのは、サブルーチンとか手続きといった処理の組合わせ、使い回しでシステムを設計したり実装する方法。要は printf みたいな便利な関数、ライブラリはどんどん使い回しましょう、という話。
オブジェクト指向は、この処理の組合わせとか使い回しを、オブジェクト中心で考えるように方針転換しましょう、って話ですね。
| …オブジェクト中心で考えるように…
は、恐らく前者でしょう。一方後者のオブジェクト指向プログラミングは、C言語での関数ポインタやvoidポインタ等を明示的に使わないで「似ているもの」を「同じもの」と「異なるもの」とに容易に分離した記述(コーディング)を可能とし、「同じもの」の記述を複数行わない((バグも)コピペしない)ことを容易に達成できる言語仕様及びそれを使ったコード作成技法です。「オブジェクト指向設計」されたものの実装に「オブジェクト指向プログラミング」を用いることは至極自然です。一方「オブジェクト指向設計」を考慮していない設計への「オブジェクト指向プログラミング」の適用も、有用です。
構造化言語の「使い回し」ったらそうだろうけど、オブジェクト指向言語の「使い回し」ったら継承でしょ。
継承だけでなく集約も大事ですよ。
データ構造とメソッドがパックになったオブジェクトが再利用の単位になったことで複雑なデータ構造や複雑な状態管理を必要とする処理の再利用が容易になりました。(細かいことを言えばこれはオブジェクト指向というよりオブジェクト・ベースの話ではありますが。)
そのため構造化時代の中心であったサブルーチン・ライブラリのようなものだけでなく、コンテナ・ライブラリや通信プロトコルのような応用のライブラリ化が容易になりました。
オブジェクトコンポジションの方が重要だよ。
『オブジェクト指向言語では、使いまわし(再利用)のために「継承」する』といういい加減な説明による誤解が生んだ、えも言われぬ設計のクラスをいくつも見てきました。
ユーザー extends 会社
みたいな。曰く、「どちらもコードと名称があるから(get/setCode、get/setNameの再利用)」とか。もちろん、ユーザークラスでは年齢とか性別とかが「拡張」されてます。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
クラックを法規制強化で止められると思ってる奴は頭がおかしい -- あるアレゲ人
オブジェクト指向でそれを活用しないのは・・・ (スコア:0)
なんてことはないけれど、おぶっじぇくと志向の利点は
綺麗にコーティングすると「使い回し」が可能な点です。
そう言う意味では、オブジェクト指向の開発でそれを使わないのは
チームで開発したことの無い一匹狼のようなプログラマーです。
Re:オブジェクト指向でそれを活用しないのは・・・ (スコア:2)
> おぶっじぇくと志向の利点は
> 綺麗にコーティングすると「使い回し」が可能な点です。
良くある間違いですね。
あなたが言っていることは、「構造化プログラミング」の手法を使えば「使い回し」可能なコードが実装できるよ、という話で、オブジェクト指向とは関係ない話です。
構造化プログラミングってのは、サブルーチンとか手続きといった処理の組合わせ、使い回しでシステムを設計したり実装する方法。要は printf みたいな便利な関数、ライブラリはどんどん使い回しましょう、という話。
オブジェクト指向は、この処理の組合わせとか使い回しを、オブジェクト中心で考えるように方針転換しましょう、って話ですね。
オブジェクト指向 (スコア:2)
| …オブジェクト中心で考えるように…
は、恐らく前者でしょう。一方後者のオブジェクト指向プログラミングは、C言語での関数ポインタやvoidポインタ等を明示的に使わないで「似ているもの」を「同じもの」と「異なるもの」とに容易に分離した記述(コーディング)を可能とし、「同じもの」の記述を複数行わない((バグも)コピペしない)ことを容易に達成できる言語仕様及びそれを使ったコード作成技法です。
「オブジェクト指向設計」されたものの実装に「オブジェクト指向プログラミング」を用いることは至極自然です。一方「オブジェクト指向設計」を考慮していない設計への「オブジェクト指向プログラミング」の適用も、有用です。
Re: (スコア:0)
プログラミング=言語仕様+技法ですか。珍しい方ですね。
常識人なら設計とプログラミングとコーディングはなんとなく区別しているでしょうし、このストーリーでも今のところ混乱している様子はないようですよ。
Re: (スコア:0)
構造化言語の「使い回し」ったらそうだろうけど、オブジェクト指向言語の「使い回し」ったら継承でしょ。
Re:オブジェクト指向でそれを活用しないのは・・・ (スコア:1)
継承だけでなく集約も大事ですよ。
データ構造とメソッドがパックになったオブジェクトが再利用の単位になったことで
複雑なデータ構造や複雑な状態管理を必要とする処理の再利用が容易になりました。
(細かいことを言えばこれはオブジェクト指向というよりオブジェクト・ベースの話ではありますが。)
そのため構造化時代の中心であったサブルーチン・ライブラリのようなものだけでなく、
コンテナ・ライブラリや通信プロトコルのような応用のライブラリ化が
容易になりました。
Re: (スコア:0)
オブジェクトコンポジションの方が重要だよ。
Re: (スコア:0)
『オブジェクト指向言語では、使いまわし(再利用)のために「継承」する』という
いい加減な説明による誤解が生んだ、えも言われぬ設計のクラスをいくつも見てきました。
みたいな。
曰く、「どちらもコードと名称があるから(get/setCode、get/setNameの再利用)」とか。
もちろん、ユーザークラスでは年齢とか性別とかが「拡張」されてます。
Re: (スコア:0)
おそらくは親クラスのメソッドを子クラスから呼び出すことしか考えていないんだろうけど、そんなものはなくても、継承は可能だ。
継承は、メソッドのインタフェースを共有するための手段である。ポリモルフィズムって聞いたことないか :-p
Re: (スコア:0)