[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 10:54 / Filesize : 242 KB / Number-of Response : 947
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【オブジェクト指向】言語学習が先?概念学習が先?



1 名前:デフォルトの名無しさん [04/01/10 14:56]
VisualBasicやCといった手続き型言語をずっとやってきた人が、
C#やJavaといったオブジェクト指向言語をマスターする場合
オブジェクト指向の概念・概論を学ぶのが先がいいのか、
それとも、C#やJavaの言語を学ぶのが先がいいのか、
どっちがいいと思われますか。


32 名前:デフォルトの名無しさん mailto:sage [04/01/13 00:21]
よくSmalltalkを勧めるヤシがいるが、Smalltalk系のOOがC++/Java系のOO以上に
広まることがあるだろうか。実用を考えればやっぱり後者では?
sumim.no-ip.com:8080/wiki/414
マイナーな世界で純粋を遊びたいなら、Smalltalkなぞ汚くてやってられん、という人も多いし。
pc2.2ch.net/test/read.cgi/tech/1070886635/

33 名前:デフォルトの名無しさん mailto:sage [04/01/13 00:35]
Smalltalk を勧めるのはデザインパターンとかのからみもあるのでは。

34 名前:デフォルトの名無しさん mailto:sage [04/01/13 00:36]
>>31
激同。概念だけだと、犬が「ワン」猫が「ニャー」の話で終わる。

そう思って憂鬱本と同じアプローチで社内研修をやってみた。
コードはJava用とVB.NET用と両方用意、VBしか知らない人のためのコードの説明も加えた。

…生粋のCOBOLerから「わからん」と苦情がきますた…

35 名前:デフォルトの名無しさん mailto:sage [04/01/13 01:11]
>>33
GoFならJavaでも++でも出来んじゃん。って事ではなくて?

36 名前:デフォルトの名無しさん [04/01/13 02:15]
欧米のOOコミュニティではSmalltalkは現役だから。
プロトタイピングしやすいし、概念やデザインの説明に Smalltalk 使われたりするし。

37 名前:デフォルトの名無しさん mailto:sage [04/01/13 04:59]
>>36
ソースプリーズ。
つか、OOコミュニティって何よ?小咄コミュニティとか言う落ちじゃ?

38 名前:デフォルトの名無しさん mailto:sage [04/01/13 05:36]
oopsla とかに出かけていく奴らじゃねぇの?

それより、C++ と Java を一括りにして、Smalltalk と線引きしている基準が分からん。
>Smalltalk系のOOがC++/Java系のOO以上に


39 名前:デフォルトの名無しさん mailto:sage [04/01/13 05:52]
Kent Beck とか Ward Cunningham は Smalltalker だよね。

40 名前:デフォルトの名無しさん mailto:sage [04/01/13 09:48]
GoF本のRalph JohnsonもSmalltalkerだし
サンプルコードにも結構Smalltalkのが入ってるな。




41 名前:デフォルトの名無しさん mailto:sage [04/01/13 11:02]
36って恥ずかしい

42 名前:デフォルトの名無しさん mailto:sage [04/01/13 22:55]
ANSI 準拠の言語で、もっとも早くオブジェクト思考の機能を言語使用に
盛り込んだのはCommon Lisp。
よってLispをしなさい。

43 名前:デフォルトの名無しさん mailto:sage [04/01/13 22:57]
>>42
ANSIって言語機能の標準とか規定してたの?CLRみたいだな。

44 名前:自分で整理できてないが mailto:sage [04/01/15 19:54]
>>38
C++,Java データ型が思考のベース。
小噺   なにはなくともオブジェクトとメッセージ送信ありき。
前者は、問題対象がオブジェクトの世界。後者は問題記述空間が(も?)オブジェクトの世界。
で、後者が半端だという人達は、pc2.2ch.net/test/read.cgi/tech/1070886635/ へ。


45 名前:名無しさん@Linuxザウルス [04/02/18 21:02]
こんな感じで概念が学べるなら楽しそうでいいんだが



[190]名無しさん@Linuxザウルス<>
04/02/16 21:49
>>184
妹クラスを作って12人の妹を派生させて

呼びかけると
お兄い様
お兄いちゃん
お兄いたま
(ry

と応答させて
おお ポリモーフィズム マンセー!!

という感じで理解しろという事かな


46 名前:デフォルトの名無しさん mailto:sage [04/02/18 21:24]
>>45
俺ならそんなもんが出た瞬間速攻でPC叩っ壊す。

そして氏んでくれ

47 名前:最凶VB厨房 mailto:sage [04/02/18 21:36]
>>45
お前の発想はキモイ。

48 名前:デフォルトの名無しさん mailto:sage [04/02/18 23:44]
28 名前: デフォルトの名無しさん 投稿日: 03/05/21 10:00

フサギコはギコ猫のサブクラスだから、
フサギコクラスを作るときに「フサフサだぞ」メソッドを記述すれば、
ギコ猫から継承したメソッド「逝ってよし」「ゴルァ」が存在し、
(さらに)フサギコ特有のメソッド「フサフサだぞ」が存在するクラスになる。

49 名前:デフォルトの名無しさん mailto:sage [04/02/18 23:49]
>>48は基礎。>>45に到達して初めてOOのおもしろさが分かる。

50 名前:最凶VB厨房 mailto:sage [04/02/19 00:07]
キモイやつだけがわかるOOのおもしろさを語られてもねぇ。



51 名前:デフォルトの名無しさん mailto:sage [04/02/19 18:52]
馬鹿か!!
オブジェクト指向ってなんだよわかんねーとか言ってるやつは
明らかに実戦不足なんだよ!
実戦経験が豊富であれば、自然とわかるものなんだよ!!

52 名前:デフォルトの名無しさん mailto:sage [04/02/19 23:01]
>>51
そうだな。実践で生半可なOOを振り回すと火傷する。

53 名前:デフォルトの名無しさん mailto:sage [04/02/21 15:09]
>>51>>52は反対のことを言ってる気がするんだが。
どちらかというと>>52に同意

54 名前:デフォルトの名無しさん [04/02/22 01:46]
> 51
オブジェクト指向言語て、Cや、Pascal、Fortranのよう
な手続き型に
1.構造体のメンバーに対して、アクセス制御ができる。
2.ダウンキャストができる。
3.(引数が違えが)同じ名前の関数を何個定義できる。
を仕様として加えただけだ。

cで書かれた有名なopen sourceソフトを解析すると、
2.3はトリッキーな事をしない限り無理だか、1は、
自主的に制御している。


55 名前:デフォルトの名無しさん mailto:sage [04/02/22 01:47]
>>54
オーバーロードとOOって関係あるのか?

56 名前:デフォルトの名無しさん mailto:sage [04/02/22 01:58]
て言うか、>>54>>52 が指摘してるタイプの奴だと思う。

57 名前:デフォルトの名無しさん mailto:sage [04/02/22 10:57]
Javaでオブジェクト指向を学ぶならJavaの基礎的な言語学習から始めた方が
わかりいいな。
「独習Java」でもそこそこいけるもんかな。
それから他の本に手を出すという要領で。

C言語経験者ならちょっとだけJavaの基礎をしっておけばすぐにとびつける。

58 名前:デフォルトの名無しさん [04/02/22 11:17]
ぶっちゃけ、オブジェクト指向を学ぶなら
結城浩の「Java言語で学ぶデザインパターン入門」でも
かなりの収穫はあると思うが。


59 名前:830 mailto:sage [04/02/22 11:23]
りんごの色=赤い プロパティ。
りんご 投げると放物線を描いて飛んでいく。がメソッドだよ。

このりんごを派生させんのが、ポリもフィズ無だ簡単だ。

60 名前:デフォルトの名無しさん mailto:sage [04/02/22 12:54]
>りんご 投げると放物線を描いて飛んでいく。がメソッドだよ。
メソッド名に具体的な挙動まで定めちゃったらポリモルのしようがないと思うのだがどうか?



61 名前:デフォルトの名無しさん mailto:sage [04/02/22 17:32]
メッセージとメソッドは別
「投げる」メッセージを受信すると「放物線でとんでく」メソッドを起動するんならいいんじゃない

62 名前:デフォルトの名無しさん mailto:sage [04/02/22 17:35]
>>61
それなら良いんだが>>59からそれが感じられないんで

63 名前:デフォルトの名無しさん mailto:sage [04/02/22 17:40]
object '宇宙のリンゴ' implements method '投げる' invokes '直線で飛んでいく'

64 名前:デフォルトの名無しさん mailto:sage [04/02/22 17:44]
object: '宇宙のリンゴ' accepts message: '投げる' invokes method: '直線で飛んでいく'

65 名前:デフォルトの名無しさん [04/02/24 20:18]
>>45
よかったな、おまえ向きの連載がはじまったぞw
pc2.2ch.net/test/read.cgi/tech/1049778124/205-

66 名前:デフォルトの名無しさん [04/05/02 00:43]
UML勉強して、GOF本、リファクタリング読んで、
どっちもそれなりに理解していろいろプログラム組んでる
んだが、他にOOP関連で勉強しておいた方がいいモンて
ある?

67 名前:デフォルトの名無しさん mailto:sage [04/05/02 02:00]
OOプログラミングはなぜ使いやすいかって考え出すと非常に難しい

ポリモーフィズムによる一貫性が、人間にやさしいと思うんだけどね

真の人間の生理学を知らないと分からないと思う

OOプログラミングやると勝手にプログラミング上手くなっていくっていうのは
もともと人間に備わっている能力を引き出すからだと思う

もともと備わってる能力を知るってのは、こりゃ難しい やってみないとわからないんだから
やってみると意外とできてしまうってのは不思議だ

68 名前:デフォルトの名無しさん [04/05/02 02:02]
んでまぁ、プログラミング覚える一番の早道はOOな言語でOOなライブラリを使ってプログラミングすることだと思うよ

身につけるっていう感覚に近い 数学の解き方覚えるようなもんだ

69 名前:デフォルトの名無しさん mailto:sage [04/05/02 02:09]
おもむろに Java、C#、Ruby のどれかでプログラミングをする。
ある程度書いていると「何か違うなぁ」の壁にぶち当たる。
そこでオブジェクト指向の概念本、デザインパターン本を読む。

これが一番近道だと思う。概念から入るのは余りお勧めできない。
「オブジェクト指向のほうが自然で楽だわ」という感覚を体感できないから。

70 名前:デフォルトの名無しさん mailto:sage [04/05/02 03:03]
そして速度を求め初めてCやアセンブラに回帰する



71 名前:デフォルトの名無しさん mailto:sage [04/05/02 03:35]
>>70
ただの回帰に見えるが実は螺旋の構造になっている。
戻ると1つ上のステージになっているでしょう。

72 名前:デフォルトの名無しさん mailto:sage [04/05/02 04:47]
>>67-71
未消化丸出し

73 名前:デフォルトの名無しさん mailto:sage [04/05/02 11:36]
>>72

消化できてる香具師なんているのか

74 名前:デフォルトの名無しさん mailto:sage [04/05/02 20:47]
実践が先です。

75 名前:デフォルトの名無しさん [04/05/02 21:03]
コードを書かずに覚えることはできません。

76 名前:デフォルトの名無しさん mailto:sage [04/05/03 01:01]
続きはこちらで

pc5.2ch.net/test/read.cgi/tech/1041658161/

77 名前:デフォルトの名無しさん mailto:sage [04/08/21 08:17]
BASICから始めて、C言語とかそういうパターンでやってた人は
カプセル化とか、ポリモーフィズムとか言う概念が言語で実装されてるのみたら
すぐに飛びつくと思うんだよね。

なんて言ってもそれで一番苦労するから
というわけで概念に一票

78 名前:デフォルトの名無しさん [04/11/03 16:35:28]
保守

79 名前:デフォルトの名無しさん mailto:sage [04/11/03 17:35:21]
こんな糞スレ保守してな(ry

80 名前:デフォルトの名無しさん [04/11/04 01:02:35]
>>67

そういう考えは、間違ってはいないが、しかし、それがオブジェクト指向を困難にしていると思う
「オブジェクト指向でなぜ作るのか」を読むと、その敷居をとりさってくれるよ。



81 名前:デフォルトの名無しさん [04/11/04 01:17:17]
オブジェクト指向とは働き蟻が効率的にモジュール=クラスを利用するための技術なので
概念や哲学は必要ありません。

82 名前:デフォルトの名無しさん mailto:sage [04/11/04 01:24:51]
「オブジェクト指向でなぜ作るのか」って本は大分前に本屋で立ち読みしたんだけど
手続き型のプログラミングではグローバル変数を除去出来ないとかいう
ふざけたことが書いてあったんで俺の中では糞本認定されてます。

83 名前:デフォルトの名無しさん mailto:sage [04/11/04 06:28:11]
生まれたときからTVがあったような奴にはラジオの有難味は分からんて

84 名前:デフォルトの名無しさん mailto:sage [04/11/04 06:50:22]
まったく。
グローバルな破壊的代入を制御し隠蔽するためにどれだけの苦労が払われてきたか理解できないのだろうな。

85 名前:デフォルトの名無しさん [04/11/07 16:12:17]
>>1
きみ自身が
「手続き型言語をずっとやってきた人が、
C#やJavaといったオブジェクト指向言語をマスターする場合」
なんて事を前提にしているんだから、
オブジェクト指向の概念・概論を学ぶのが先がいいに決まってる。

さもないとこういうマヌケなことになる。
pc5.2ch.net/test/read.cgi/tech/1055075469/83-85


86 名前:デフォルトの名無しさん mailto:sage [04/11/07 18:49:36]
もうあきた

87 名前:デフォルトの名無しさん mailto:sage [04/11/07 18:50:11]
なんで同じようなことを別スレでなんどもなんども…

88 名前:デフォルトの名無しさん mailto:sage [04/12/11 00:25:56]
学習もスパイラルがいい。作りながら概念も同時に学べ。
どっちかが先とか言う奴は糞ウォーターフォール推奨者。

89 名前:デフォルトの名無しさん mailto:age [05/02/05 10:31:17 ]
age

90 名前:デフォルトの名無しさん [2005/04/10(日) 02:40:23 ]
自分の意見を言わせていただきます。
『概念学習』を先にしたほうがいいと思います。

自分C言語はできたのですが、学校でJavaを習っていた時全く理解できませんでした。
よく言われるような『どこが分からないのか分からない』状態でした。

でどうしても分からないままでいたくないのでオブジェクト指向の載っている本を2,3冊買いました。(多分悪書の部類の本)
全く理解できませんでした。
長々と説明されているのですが、全く理解できませんでした。

でも日経系の本でオブジェクト指向のことが書かれている記事を見ていたら『あれ?もしかしたらこういうことかな?』と
うっすらと分かりかけてきたところを何度も見ていたら理解できるようになりました。
急にわかるようになってくると今までやってきたところがすぐ理解できました。
っていうかね
Javaを教える先生が『オブジェクト指向』の概念学習より言語学習を教えることをメインにおいたために、生徒の全員が全く理解できませんでした。

毎回何十個も言語学習をするよりも、半年かかってもいいから概念学習をしっかりさせたほうがいい。

これは多分英語でもいえると思う。
大学に在学していたとき、アメリカ人の先生が
『今学校の方針でこのような学習法(言語学習)をしているけど、正直概念学習のほうがいい。
単語を暗記させるよりも、辞書片手に英語の新聞の翻訳をさせたほうがよっぽどいい勉強になる』
と言った気持ちがオブジェクトをなんとなく分かりかけたときに理解できた。

どこのプログラマーでも困ったら本見るんだからそれでカバーできない概念学習をしっかりしたほうがいいと思う。



91 名前:デフォルトの名無しさん mailto:sage [2005/04/12(火) 23:39:23 ]
オブジェクトって単に関数を要素にとれる構造体でそ?

92 名前:デフォルトの名無しさん mailto:sage [2005/04/13(水) 13:22:12 ]
つるな

93 名前:90 [2005/04/19(火) 15:05:07 ]
先生。何かこの教科書、教科書名の後ろにって書いてあるんですが。
しかも重要なところに『上書参考』って・・・・。

94 名前:デフォルトの名無しさん [2005/04/19(火) 19:48:34 ]
両方バランス良くやった方がいいって。
概念がわかっても、それが一体何の役に立つのかわからなくてイライラしたやつが
暴動起こして終わると思うな。

95 名前:脳内PG mailto:sage [2005/04/19(火) 20:00:19 ]
私は言語が先だと思います

言語をやる内に、オブジェクト指向は理解できると思いますし


96 名前:デフォルトの名無しさん mailto:sage [2005/04/19(火) 20:06:42 ]
OOなんぞが知れ渡る前から、擬似オブジェクト指向Pやってると、
どうしても概念レベルで、実装が頭をよぎっちまわない?
酷いときは妥協のしどころまで考えてたり。

97 名前:デフォルトの名無しさん mailto:sage [2005/04/19(火) 20:25:33 ]
日本語で話せよ。

98 名前:デフォルトの名無しさん mailto:sage [2005/04/20(水) 01:44:48 ]
>>93
与えられた本しか読まない馬鹿にはどんな本を与えても無駄。

99 名前:デフォルトの名無しさん [2005/04/23(土) 20:03:38 ]
ぉぃぉい結局どっちなんだよ?始めようと思ったのに出来ねーじゃねーか!もぅCとJava勉強すりゃいいのか?どうなんだよボケがぁぁぁぁぁぁぁぁぁ!
取り敢えず手始めにCでもするかな…

100 名前:デフォルトの名無しさん [2005/04/23(土) 21:09:17 ]
どちらが先なんて決めつけないで
糾える縄の如く理解していけばいいし
実際みなそうしている



101 名前:デフォルトの名無しさん [2005/04/25(月) 07:53:16 ]
VBなどで経験があるなら、階層化プログラミングはわかっているんだよね。それなら、
「カプセル化」と「継承」は実戦から入ったほうが手っ取り早い。
「多態性オブジェクト」とか「仮想関数」は、概念の勉強を先にしたほうがいいかな。


102 名前:デフォルトの名無しさん mailto:sage [2005/04/25(月) 09:18:55 ]
>>101

継承・仮想関数も全てポリモーフィズムのためにあるわけだから、
どっちが先もクソもないだろ。

103 名前:デフォルトの名無しさん mailto:sage [2005/04/25(月) 11:46:52 ]
「階層化プログラミング」と言う奴の言うことですからw

104 名前:デフォルトの名無しさん [2005/04/25(月) 20:03:08 ]
ガイネンガクシュウ
略して
ガイガク

105 名前:デフォルトの名無しさん [2005/04/26(火) 08:10:22 ]
オブジェクト指向を教えるとき、どの言語がよいでしょうか?

106 名前:デフォルトの名無しさん [2005/04/26(火) 08:56:31 ]
smalltalk

107 名前:デフォルトの名無しさん [2005/04/26(火) 15:03:01 ]
>>105
メッセージングまんせーなら Smalltalk
クラスまんせーなら Java か C++

108 名前:デフォルトの名無しさん mailto:sage [2005/04/26(火) 15:04:26 ]
>>105 >>107
オブジェクトまんせーならSelfか。

109 名前:デフォルトの名無しさん mailto:sage [2005/04/26(火) 15:25:29 ]
ここ数年、オブジェクト指向を覚えるときには、Javaが使われてきました。
Javaを使うのには、いくつかの理由があります。

・広く知られている
・C を基本とした文法(一般的なスタイルとなりつつあります)
・フリーで高性能な開発環境が利用可能である
・Javaの知識があれば仕事に就ける

こういった理由から、私はJavaの使用をやめさせようとはしませんでした
(C#にもこういった特徴があり、いずれC#が代わりになるだろうと指摘してはいたんですが)。
ただ、Javaだけに任せようとは思っていません。
Java、C#、C++はいずれも、オブジェクト指向プログラミングのある形を提示してくれていますが、
誰かにオブジェクト指向を紹介するならば、選択肢も紹介してあげるといいでしょう。

選択肢とは、RubyとPythonのことです。
両言語とも、動的型言語です。静的型言語と一緒に使えるようになってれば便利だと思います。
どちらも大変便利な言語です。ちょっとしたスクリプトで自動化して解決するような仕事はたくさんあります。
技術者たるもの、1つくらいはスクリプト言語を隠し持っているべきですね。


110 名前:デフォルトの名無しさん [2005/04/26(火) 21:17:07 ]
SmallTalk以外はオブジェクト指向のフレーバーがある偽物といへり



111 名前:デフォルトの名無しさん mailto:sage [2005/04/26(火) 21:49:16 ]
Smalltalkによるプログラミングは、私にとって今でもお気に入りの経験だから、
その気持ちは分かります。
私のようなSmalltalkファンですら、もう何年もSmalltalkの環境(image)を立ち上げていません。

112 名前:デフォルトの名無しさん [2005/04/26(火) 21:50:19 ]
個人的には、Rubyが気に入っていますけど。
広く使われている(かつ利用可能な)のはPythonですし、
Rubyはより純粋なオブジェクト指向ですので(学ぶのには最適です)
私にとってみれば、すがすがしい感じがします。

あと、Rubyにはブロック(コード群を簡単にオブジェクトとして扱う機能)がありますね。
ブロックは強力なプログラミングツールで、コードの構造化についての多くの考え方を
学ぶことができます。
他のやり方だと、なかなかこうはいきません。関数型言語の入門用にも良いですね。

スクリプト言語の強みは、プロのプログラマが日常的に使えることなんです。


113 名前:デフォルトの名無しさん mailto:sage [2005/04/26(火) 22:03:54 ]
なあ、オブジェクトとクラスとインスタンスの違いを説明してくんない?

オブジェクト指向の本読むと、みんなごっちゃでわけわかんなくなるの・・・

114 名前:デフォルトの名無しさん mailto:sage [2005/04/26(火) 22:10:28 ]
クラスというのは、型情報。
基本的に、プログラム内では一意に決まり、いつ参照しても同じ結果が得られる静的な情報。

インスタンスというのは、クラスという型情報を元に、メモリ上に生成されるデータの実体。これをオブジェクトともいう。
プログラムの処理とともに内部変数を変化させる動的な存在。必要に応じて複数生成されることも多々ある。


115 名前:デフォルトの名無しさん mailto:sage [2005/04/26(火) 22:20:11 ]
>>114
教えてくれてありがと

クラス=型
オブジェクト=インスタンス=メモリ上の実データ

という理解でいいの?

オブジェクトのメンバ関数のメモリ上の実コードはどういう言い方するといんだろ?
クラスのメンバ関数って言った方が正しいのかな?


116 名前:デフォルトの名無しさん mailto:sage [2005/04/26(火) 22:22:10 ]
>>115
おっと、

オブジェクト=クラスのインスタンス

と書いているみたいですね。

117 名前:デフォルトの名無しさん mailto:sage [2005/04/26(火) 22:26:42 ]
メンバ関数には、クラス所属のものと、インスタンス(オブジェクト)所属のものがある。

たとえば

class Hoge
{
void foo();
static void bar();
};

というC++クラスの場合、fooはインスタンス所属で、barはクラス所属。

クラス所属の関数は、インスタンスを作らなくてもコールできる。
こんなふうに
Hoge::foo();
一般にこれをクラスメソッドとか、クラス関数と呼ぶ。

インスタンス所属の関数は、当然インスタンスを作らないとコールできない。
Hoge *hoge = new Hode();
hoge->bar();
あんまりいわないけど、あえて言うならインスタンスメソッド。

118 名前:デフォルトの名無しさん mailto:sage [2005/04/26(火) 22:29:02 ]
オブジェクトとインスタンスはほぼ同じ意味だが、ニュアンスの違いがある。
オブジェクトのほうがより抽象的で、インスタンスのほうが具体的なニュアンスを持つ。

でも、かなり混同もされる。

119 名前:117 mailto:sage [2005/04/26(火) 22:30:38 ]
ごめん間違えた。

Hoge::bar();


と、

hoge->foo();

だった

120 名前:デフォルトの名無しさん mailto:sage [2005/04/26(火) 22:48:24 ]
>>118
そう、そのニュアンスの違いが“理屈で”解らない。

ストラゥストラップの「プログラミング言語C++」を読んでると、
ニュアンスの違いがどこにあるのか解らなくなる
ストラ先生は、オブジェクト=クラスという意味で使っているみたい
そしてインスタンスって用語は出てこない。

で、他の本を読むとオブジェクト≒クラス、オブジェクト≒インスタンス
のような意味で使う。

オブジェクト指向を特集している今売りの雑誌でも、
オブジェクト=物だといいつつ、
明確に定義しないまま“クラス”と“インスタンス”という用語を使う

書き手によってさまざま。困ってしまいます。




121 名前:デフォルトの名無しさん mailto:sage [2005/04/26(火) 22:53:48 ]
俺もそのへんが未だによく分からない。
オブジェクトはクラスもインスタンスも含む概念で、
言語や状況によって、インスタンス=オブジェクトと見なせる場合があるのだと
強引に理解しているが、根拠はない。

122 名前:デフォルトの名無しさん mailto:sage [2005/04/26(火) 22:58:34 ]
>>119
static関数と非static関数の違いは理解してるつもり

staticメンバ関数はthisポインタがなく、引数、auto変数/定数を除くと
クラスのstatic変数/定数しか直接参照できない。

非staticメンバ関数は(暗黙の)thisポインタがあり、
上に加えてメンバ変数を参照できる。

Hoge myHoge; //と宣言すると
myHoge.foo(); // static関数と
myHoge.bar();  // 非static関数は同じ呼び出し方になる

123 名前:デフォルトの名無しさん mailto:sage [2005/04/26(火) 23:02:03 ]
>>120
確かに、オブジェクトというのは微妙な言葉だな。
場合によってはクラスを表現するオブジェクトというものもあらわれる。

たとえば、Javaだと、クラス情報をランタイムに参照できるようにメモリ上にクラス情報を置いてくれる。これはつまり「クラス情報のオブジェクト(インスタンス)」といえる。
このランタイムクラス情報は、あくまでもクラスについての情報を保持する別のオブジェクトであって、クラスそのものではない。

というあたりが自分のもっているイメージ。

あと、
オブジェクト指向は、「分析」と「設計」で分けて語られる。
「分析」は対象領域を抽象的に分類、整理する手段としてのオブジェクト指向で、
「設計」は実際にプログラムに落とすためのオブジェクト指向。

どっちの話をしているのか意識しないとすぐ混乱する。
分析レベルだと、あんまりインスタンスという言葉は使われない。
設計レベルではやたらと増える。
そういう意味でもインスタンスは具体的なニュアンスを与える。


124 名前:デフォルトの名無しさん [2005/04/26(火) 23:04:49 ]
object classがすべてのclassの親で、その子のmetaclass classがすべてのmetaclassのclassで、すべてのmetaclassのinstanceがclassで、という親子関係はすべてのObjectOriented言語に継承されているのかどうか

125 名前:デフォルトの名無しさん mailto:sage [2005/04/26(火) 23:05:23 ]
>>122
static関数と非static関数が逆転してたす。


126 名前:デフォルトの名無しさん mailto:sage [2005/04/26(火) 23:06:13 ]
必ずしも、親子関係とはいえないような気がする。気がするだけだけど。

127 名前:デフォルトの名無しさん mailto:sage [2005/04/26(火) 23:11:41 ]
>>123
>クラスを表現するオブジェクト

GoF本に、“クラスオブジェクト”という用語がでてきます。
型情報を持ったオブジェクトと理解しています。

具体的には、WindowsのCOMコンポーネントがtypeライブラリ情報をもっているイメージ。
SmallTalkは私のプログラマ・センスでは理解できません。

>「分析」と「設計」で分けて語られる

オブジェクトはアナリスト用語
クラスとインスタンスはプログラマ用語

と使い分けられるといいのに・・・


128 名前:デフォルトの名無しさん [2005/04/26(火) 23:12:55 ]
集合論で解釈してはどうか
要素の集まりが集合
しかし集合を要素とする集合も考える
ある集合の要素を作ろうとするなら
要素としての集合に対して操作をする
操作の対象はあくまで要素というわけ


129 名前:デフォルトの名無しさん [2005/04/26(火) 23:14:34 ]
>>126
確かに
親子関係とは集合の包含関係のこと
集合とその要素との関係も親子関係と言ったのは間違い

130 名前:デフォルトの名無しさん mailto:sage [2005/04/26(火) 23:21:28 ]
>>124

>metaclassのinstanceがclass

これは、C++のtemplateを理解しようとする時に出てくる概念の壁(^^)

template関連以外ではこういう言い方は成り立たないのでは?

というか、templateのパラメータとしてのクラスと
オブジェクトの型であるクラスを混同してしまい、
最後にはちゃぶ台をひっくり返すケースだと思いますけど



131 名前:デフォルトの名無しさん [2005/04/26(火) 23:26:11 ]
すべてはobject
instanceとはclassに所属しているobjectであることを強調したもの

132 名前:デフォルトの名無しさん mailto:sage [2005/04/26(火) 23:42:19 ]
>>131

オブジェクト≡クラスのインスタンス

というのが、おおかたの書籍にでてくる理解で

インスタンス≡クラスのオブジェクト

という理解は、そもそも不要で混乱のもとだと思います







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<242KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef