オブジェクト指向って何?
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG私、さっぱりわかりません。こんな私にも理解できますよう、どなたか、わかりやすく教えて頂けませんか?
0058デフォルトの名無しさん
NGNGでも(笑)、Interface継承と実装継承の問題で混乱しちまったら、
逆説的だけどいったん小噺はrubyみたいな言語に
逝ってみると、頭整理されるかも。
>>54
俺は、OOは有性生殖みたいな印象です(笑)。
「する」やつと「される」やつが居るんだよな。
奴ってのはObjectのことだ。
つまり「受身」ていう概念が有る(というか意味を成す)のがOOP。
せくーすもmessageの一種だわな。いっぽう手続き指向は、
「やりてー」とわめいている(=能動)ばっかりで相手もいねー寂しいやつ。
0059デフォルトの名無しさん
NGNG居なくもなるよね。
0060デフォルトの名無しさん
NGNG確かにね。
もし、1 がVBの人ならば、以下の本をお勧めします。
書籍名:VBプログラマのためのUML
出版:翔泳社
ISBN:ISBN4-88135-801-4
詳細は↓
http://www.shoeisha.com/book/Detail.asp?bid=959&tk=UML
UMLの本だけど、オブジェクト指向をVB上で説明している良い本だと思うよ。
お勧めです。物足りなかったらごめんね。
0061デフォルトの名無しさん
NGNGじゃ、おれも。
もし、1 がCの人ならば、以下の本をお勧めします。
C/C++クラスの構築法, 4-8101-8565-6, 6,602, R,セッションズ,トッパン
残念ながら絶版になったみたい(からかってるわけじゃないよ)。
良い本だから古本屋ででも探してみてくれ。
0062デフォルトの名無しさん
NGNGさげじゃないよね?で、あげ。
0063デフォルトの名無しさん
NGNGする、される、が有性生殖かよ・・・。
0064デフォルトの名無しさん
NGNGデザインパターン読んでもそう思う。
0065デフォルトの名無しさん
NGNG0066デフォルトの名無しさん
NGNGそれは継承の例だね。
>>1に対しては
継承を説明する前にオブジェクト指向の説明が必要だと思う。
オブジェクト指向=継承では無いのだから。
0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNGごもっとも m(__)m
0069デフォルトの名無しさん
NGNG会社組織のどこが継承なのだ?
0070デフォルトの名無しさん
NGNGことが言いたいんだと思ったけど。。。
0071デフォルトの名無しさん
NGNG御名刀!!
また、継承の話になると深読みした。
0072デフォルトの名無しさん
NGNG全然わからない、
1段階継承しただけでは継承のメリットなんか
何もないだろ。
メンバーに役職コードでも入れればすむことだ。
0073デフォルトの名無しさん
NGNG0074デフォルトの名無しさん
NGNG継承のメリットは継承の段階数で決まるのか?
0075デフォルトの名無しさん
NGNG少なくとも、会社の部長や課長という例は意味不明だろ。
オブジェクト指向なんてあたりまえすぎて
このスレで何を話す内容があるのかと思ってきて
初カキコしただけだよ。
0076デフォルトの名無しさん
NGNG”継承ってこんな感じ”と言いたいだけの説明に議論吹っかけても意味ないよ。
オブジェクト指向って何?ってスレなんだから。
別スレ立ててそこでやんなよ。
0077デフォルトの名無しさん
NGNGすごいぞ。
「オブジェクト指向」を当たり前と認識してる人が降臨した。
初心者にわかるように御教授願えますか?
0078デフォルトの名無しさん
NGNG0079デフォルトの名無しさん
NGNG「(クラスを中心とした)オブジェクト指向では、オブジェクトを継承で仕切られたクラス階層の中に
はめ込むことによって階層社会的な概念を作り出す」
ということの比喩ではないか?
0080デフォルトの名無しさん
NGNG0081デフォルトの名無しさん
NGNG目的が無いと無意味
0082デフォルトの名無しさん
NGNG0083デフォルトの名無しさん
NGNG求められてるものは「オブジェクト指向って何?」だから
「オブジェクト指向では」は変だよ。
0084デフォルトの名無しさん
NGNG0085デフォルトの名無しさん
NGNGそこまで難しいことじゃなくて、一つの目的を達成するために、適度に
責務を持たされた複数の人間が互いにメッセ−ジをやり取りして処理を
遂行し、結果を得る、位の説明がしたかったんじゃないか?
0086デフォルトの名無しさん
NGNGそうなのか?
それはそれで納得がいくけど
継承という面では何も説明できないようナー
0087デフォルトの名無しさん
NGNG良くまとめてると思う。まとめすぎて初心者にはわからないぞ 藁。
ただ、メッセージセンディングは片方向だと思う。互いにと言うのはどうか?
>>86
オブジェクト指向にとっての継承は必須か?
0088デフォルトの名無しさん
NGNGメンバに役職コード追加すればいいなんていかにも構造体的
ソリューションだな。
役職者にのみ存在する操作はどうやって実装するんだ。また、
役職者によって違う処理をする操作は?
オブジェクト指向が当たり前すぎるとはこれまた……
0089デフォルトの名無しさん
NGNG激しく同意。
>>87
誰も必須とは言ってないのでは?
>>88
激しく同意。こんなの継承の基本中の基本だと思うけどな。
ってことでage
0090デフォルトの名無しさん
NGNG>>86に同意はするが>>87に継承は必須と言ってないとは?
もう少し具体的に書いてもらえないか?
>>72はそっとしておいてやろうよってことでage
0091デフォルトの名無しさん
NGNGVBしか思い浮かばないが...
まああれもあれで立派な....以下略
0092デフォルトの名無しさん
NGNGそうなんだけど、これをOO的に改良(笑)すると、
役職クラス(のInstance。シングルトンで十分かも知れないし
そうでないかも知れない)なんてものを作ることも有るよ。
#つーか俺今仕事でやってるのがソレ。
#ユーザーの権限(というObject)をいちいち与えてたら
#鬱陶しいので、ユーザーを集約する役職Objectに権限Objectを与えてる。
で、役職へのポインタがNULLでなければ(笑)、役職に
「俺の権限はナニがあるか」の問い合わせを委譲したりする。
勿論役職Objectは多態で色々な動きをするし、
そもそもユーザーObjectと共通の祖先を持つ
(祖先の部分で「権限を持つ持たない」という概念の処理
という機能を持っている)
>>91
Prototype型言語って奴だよね>あっちのスレ
継承じゃなくて委譲で表現することは多いと思われ。
で、それがVBに出来るのかどうか知らぬが。つまり、
ObjectからObjectへのポインタ(参照)って
一般的に(笑)使われるんでしょうかVBでは?
0093デフォルトの名無しさん
NGNG>役職者にのみ存在する操作はどうやって実装するんだ。また、
>役職者によって違う処理をする操作は?
switch case で分けるだけじゃない?
たくさんの関数があっていろんなところでswitchするようになって初めて
多態にする意味が出てくるわけでしょ。
役職が表示にしか影響しないようなシステムなら役職コードのほうが正しい
設計だと思う。
009492
NGNG最初から小さい系だと判りきっていて
今後の拡張を心配しないなら、ね。
何年も続いて仕様がじわじわ(?)と変化していく
ようなデカブツだと、柔軟性のための「投資」は
ないと死にますぅ。
0095デフォルトの名無しさん
NGNGここなんだよね。XPなんかが余計なコードを書くなって言ってるのは。
仕様が変化したらそのときに再設計するべきであって、「こうなるかも」
なんていう見込みでコードかいちゃいかんと思う。
役職の例でいえばswitchじゃやってられないような仕様変更がきたときに
それこそ役職オブジェクトにしちゃえばいいんじゃない?
将来のことを考え出したら例えば役職は複数持てるのかもしれないのだから
役職オブジェクトはVectorにしなくちゃ。とかいくらでも落ちはあるぞ。
0096デフォルトの名無しさん
NGNG0097デフォルトの名無しさん
NGNGどう考えても継承を使った方がコストが低いと思うけど?
継承は使いようだと思いますよ。
0098デフォルトの名無しさん
NGNGしちゃえばいいんじゃない? ってそんな簡単に(笑)
そんなこといってたら、作り直せばいいんじゃない?とかに
なるわけでしょ。
0100デフォルトの名無しさん
NGNG「switch-caseはopen-closed principleに違反してる」
# = caseを追加するたびに元ソースを汚さないといけない
って説明するのが一般的だよね。
0101リファクタリング本に
NGNGの例がよくでてますね。リファクタリングのずるいのは、
かならず逆の操作も用意してあって、やりすぎはよくない
とかいうところ。
0102デフォルトの名無しさん
NGNGC++の場合どうなんでしょう? あまりクラスのメンバ関数を
分割すると宣言部分が美しくなくなると思いますが、みなさん
はどうやってます?
1関数100行以内とかは、もう古い話なのかな?
0103デフォルトの名無しさん
NGNGprivate関数なんか、いくら数あっても構わんと思うが。
publicがブクブク膨らむなら、考え直すべきだが。
クラスのサイズそのもののでかさが気になるなら、それを理由に
委譲の組み合わせを利用してクラス分割しても、別にいいでしょ。
0104デフォルトの名無しさん
NGNGそれじゃ、C++でも1関数100行以内を守った方がよい?
0105デフォルトの名無しさん
NGNGヒラには使えないメソッドやプロパティを、コンパイラがガードしてくれる
のが多態。プログラマが「ヒラには使えない」という処理を書かなくて済む
というだけでも大きなメリットだと思うが。
0106デフォルトの名無しさん
NGNG型進化論的アプローチでOOPしないことのデメリットを
教えたほうがわかりやすいと思うんだけどね。
int x, y;
x += 1; y += -2; PutPixel(x,y);
↓構造体導入
typedef struct{
int x, y;
} Pos;
Pos p;
p.x += 1; p.y += -2; PutPixel(p.x, p.y);
↓データ抽象化
typedef struct{
int x, y;
} Pos;
PosMove(&p, 1, -2); PosShow(&p);
↓カプセル化
typedef struct{
int x, y;
void Move(int dx, int dy){
x += dx; y += dy; Show();
}
void Show();
} Pos;
Pos p; p.Move(1,-2);
↓ポリモ以下略
0107デフォルトの名無しさん
NGNGあまり関数を長くするのは、どの言語でも良くないと思いますよ。
ただ、100行とかにこだわるよりも、設計的な視点で分割を
考えた方がいいと思います。
0108デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています