【相談】オブジェクト指向の活用方法を教えて下さい

プログラミング・プログラマ・SE, 相談・雑談

1: 名無しさん 2014/03/25(火) 21:44:07.66 ID:AtcH5MLU
お願いします。言語は問いません。
オブジェクト指向言語じゃなくても
オブジェクト指向の話であれば問題ありません。

 

211: 名無しさん 2014/04/05(土) 12:34:58.04 ID:zg062x0r
>>1
mvcで作ればなんとなくわかる

 

3: 名無しさん 2014/03/25(火) 21:53:45.99 ID:pgzxn/ED
オブジェクト指向の活用方法とあらためてきかれてもな。
仕事やってるなら、オブジェクト指向以外を使うことのほうが
まれだよ。まあ空気のようなものだ。

 

8: 名無しさん 2014/03/26(水) 00:49:07.29 ID:czRoHAkF

困るのは関数の数が数百だとか数千だとか、ある程度規模が大きい場合だな。

オブジェクト指向なんて呼び方しているけど、本質的には構造化言語でもやっていた
モジュール化だからな。大量の関数を個別に扱うなんて大変な事をするよりも、
分類してまとめたモジュールを単位として組み合わせた方がシンプルになるからね。

そういう便利なモジュール化を最初から言語仕様に取り込んで
class{} とするだけで誰でも簡単にモジュールが作れるようにしたのが
オブジェクト指向言語。

 

12: 名無しさん 2014/03/26(水) 01:47:31.32 ID:u5ViS8To
>>8
それは関数名や変数名を区分して、ネームスペースを分けるというところまでで
十分目的を達成できるように思えるのだけれど、それで達成できないことは何?

 

15: 名無しさん 2014/03/26(水) 07:05:24.48 ID:q8kXJDbw

>>12
実運用

自分1人で自分だけしか触らないプログラムだったら別にそのやり方でもある程度まで出来るだろうけど、
複数人数だとか、他の人が触るだとかするようになると、決めてたことが守られなくなってスパゲティに
なるのが常。
それをしっかりと見張って、ルールを破ったソースは絶対に許さないと監視してくれるのが、
その言語のコンパイラさん。

ちなみに俺も、1人で行うC言語の開発ではオブジェクト指向的に関数名や変数名を区分して作る。

 

13: 名無しさん 2014/03/26(水) 01:54:10.43 ID:XRtgkR6L
それで出来ないのは属性の隠蔽と、継承による親子関係だな
まあ継承には最初はそんなにお世話にならんが、ある程度のクラス群を定義してくと
それらにグループ的な物が出来てくると思う

 

24: 名無しさん 2014/03/26(水) 21:17:17.67 ID:lornT58y

構造化プログラミングでは「機能」で全体を切り分けてた。
それがC++などのオブジェクト指向プログラミングになると「オブジェクト」で全体を切り分けるようになる。

電気回路に例えるなら、
それぞれの機能は基盤ごと、チップごとに整理されているが電源が一つしかない状態が構造化プログラミング。
それぞれの機能が自前の電源を持ってるのがオブジェクト指向。

 

27: 名無しさん 2014/03/26(水) 22:19:45.69 ID:2aKYqEvM
要は、プログラマが問題解決の為に注目するスコープを、小さくするって事だよな。

 

29: 名無しさん 2014/03/26(水) 23:42:37.18 ID:u5ViS8To

(A) オブジェクト指向だとクラスやインスタンスに名前を付けなければならない
→ 手間が増えるところ
(B) だけどクラス内のプロパティとメソッドの関連付けに対して名前を付ける必要がない
→ 手間が減るところ

普通、ひとつのクラスには複数(多数)のプロパティ、メソッドがあるので、

abs(B) > abs(A)

ということになり、これが「複雑さの低減」という理解で合ってますか?

 

120: 名無しさん 2014/03/29(土) 01:21:57.46 ID:3OHlSsnI

>>29
名付けを手間と思ってる時点で…
そういうやつに限ってコメントはダラダラズラズラ書く

そのコメントへの労力をまるごとメソッド名なり変数名なりの名付けに当てれば問題ない

 

37: 名無しさん 2014/03/27(木) 00:11:39.64 ID:j3gvVEw0
クラスを作る目的の1つは、ある変数に対してアクセスする関数群を同じクラスにまとめて、
変数自身は極力非公開にして、どこからか勝手にいじられないように隠蔽することだよ。
カプセル化というんだけどね。

 

40: 名無しさん 2014/03/27(木) 00:26:18.85 ID:2gDV9B/K
>>37 そうだとすると、1つのプロパティしかないような場合でもクラスにする価値が
あるということなんだろうけど、勝手にいじられるものが"変数"なのか"関数"なのか
というだけなので、結局同じに思えてしまうなあ
(暴走を引き起こすような)でたらめな値を設定できないようにするということかな?

 

47: 名無しさん 2014/03/27(木) 00:43:14.26 ID:E6f/eeJ0

ハローワールドでさえオブジェクト指向の真髄に触れてるわけで、
小さいプログラムだからOOPの恩恵が無いなどということはない。
Javaでは十分に抽象化され、簡便に使えるように用意されたライブラリ群を使っているではないか。

でも何でもかんでもオブジェクトにしてしまおうとするのは疑問だな。

 

56: 名無しさん 2014/03/27(木) 01:24:04.56 ID:ze0m1e8o
オブジェクト指向はプログラムの問題というより人間の問題に近い。
オブジェクト指向にすれば、人間らしい仕様変更に比較的強いというだけの話。

 

107: 名無しさん 2014/03/28(金) 01:52:09.43 ID:wFHfzfhB
(ここまでオブジェクト指向の活用方法の具体例なし)

引用元: https://peace.5ch.net/test/read.cgi/tech/1395751447/