前スレ
オブジェクト指向って自然な文法だな 2
http://echo.2ch.net/test/read.cgi/tech/1490506257/
オブジェクト指向って自然な文法だな 3 [無断転載禁止]©2ch.net
レス数が900を超えています。1000を超えると表示できなくなるよ。
2017/04/02(日) 16:30:38.65ID:n7h/bBRg
843デフォルトの名無しさん
2017/06/18(日) 21:57:16.87ID:dLIsPmeH844デフォルトの名無しさん
2017/06/18(日) 22:01:44.39ID:dLIsPmeH アスペだと「ドアが開いている」ときいて
ドアが開いているとか意味がわからない
開口部があってそこがドアというもので塞がれているかどうかだ。
だから「開口部がドアで塞がれていない」と言うべきだ
とか思うのだろうか?
アスペには常人の共通認識は通用しない
オブジェクト指向には不向きな人間だなw
ドアが開いているとか意味がわからない
開口部があってそこがドアというもので塞がれているかどうかだ。
だから「開口部がドアで塞がれていない」と言うべきだ
とか思うのだろうか?
アスペには常人の共通認識は通用しない
オブジェクト指向には不向きな人間だなw
845デフォルトの名無しさん
2017/06/18(日) 22:09:09.19ID:ZkAshefq846デフォルトの名無しさん
2017/06/18(日) 22:11:24.68ID:dLIsPmeH847デフォルトの名無しさん
2017/06/18(日) 22:14:21.01ID:ZkAshefq848デフォルトの名無しさん
2017/06/18(日) 22:15:23.98ID:dLIsPmeH 抽象化というのは本質的な所
ドアには開いている・閉じているという
状態があると認識することだよ。
本当は開口部だーとか細かいことに
こだわるのは抽象化とは逆の考え
はい論破♪
ドアには開いている・閉じているという
状態があると認識することだよ。
本当は開口部だーとか細かいことに
こだわるのは抽象化とは逆の考え
はい論破♪
849デフォルトの名無しさん
2017/06/18(日) 22:15:46.63ID:dLIsPmeH >>847
もう一度言えばいいの?
それは現実世界のドアの話だろう?
ゲームの世界のドアは、現実世界を参考にできるが
ゲーム特有のドアという仕様を作る。
3Dゲームであれば、ドアには開く閉じるという状態は必要ないだろう
なぜなら物体をすり抜けられないという仕様と
蝶番を支点にドアを動かせるという仕様があればよいからだ
だけど2D RPGみたいなドアであれば、ドアの状態というものがあってもよい
開いているドアであれば、その上を移動することができ、
取っじているドアであれば、その上に移動することはできない。
このようにオブジェクト指向は現実世界の物シミュレートためのものじゃなくて
作りたい仕様を、みんなが持っている現実世界の共通認識を使って
わかりやすくする表現するための技術なんだよ
それにしても現実世界のドアについての人間の認識ってのも面白いよな。
ドアからすれば、物理的にはどういう位置にあるかでしかないのに、
人間は「開いている」「閉まっている」というドアの状態として認識しているわけだ
この認識、利用しない手はない!
もう一度言えばいいの?
それは現実世界のドアの話だろう?
ゲームの世界のドアは、現実世界を参考にできるが
ゲーム特有のドアという仕様を作る。
3Dゲームであれば、ドアには開く閉じるという状態は必要ないだろう
なぜなら物体をすり抜けられないという仕様と
蝶番を支点にドアを動かせるという仕様があればよいからだ
だけど2D RPGみたいなドアであれば、ドアの状態というものがあってもよい
開いているドアであれば、その上を移動することができ、
取っじているドアであれば、その上に移動することはできない。
このようにオブジェクト指向は現実世界の物シミュレートためのものじゃなくて
作りたい仕様を、みんなが持っている現実世界の共通認識を使って
わかりやすくする表現するための技術なんだよ
それにしても現実世界のドアについての人間の認識ってのも面白いよな。
ドアからすれば、物理的にはどういう位置にあるかでしかないのに、
人間は「開いている」「閉まっている」というドアの状態として認識しているわけだ
この認識、利用しない手はない!
850デフォルトの名無しさん
2017/06/18(日) 22:18:27.67ID:dLIsPmeH ドアが開いている、閉じているという話をする時
開口部なんて細かい枝葉は誰も考えてないって所が重要だね。
まあ密室殺人で警察に聞かれた時に
この部屋の開口部はドアで塞がれていましたなんて
言わないのと同じこと。
開口部なんて細かい枝葉は誰も考えてないって所が重要だね。
まあ密室殺人で警察に聞かれた時に
この部屋の開口部はドアで塞がれていましたなんて
言わないのと同じこと。
851デフォルトの名無しさん
2017/06/18(日) 22:22:00.29ID:ZkAshefq852デフォルトの名無しさん
2017/06/18(日) 22:28:26.80ID:dLIsPmeH >>851
だから、お前、オブジェクト指向を現実世界をシミュレートするために使うなって
それが間違ったオブジェクト指向の解釈なんだよ。
ドアを抽象化して考えろ。細かい枝葉は取り除け
抽象化
https://ja.wikipedia.org/wiki/%E6%8A%BD%E8%B1%A1%E5%8C%96
> 抽象化(ちゅうしょうか、英: Abstraction、独: Abstraktion)とは、
> 思考における手法のひとつで、対象から注目すべき要素を重点的に抜き出して他は無視する方法である。
https://goo.gl/soXPyb
> ▼誤解されがちな、「抽象化」という言葉
> 結構な人々が抽象化を「曖昧にすること」とか思っていて、抽象絵画は「なんか曖昧な絵」みたく思っているので始末に負えない。
> まず「抽象(abstraction)」っていうのは、「物事の共通部分を抽出して把握すること」だ。
> 「対象物の特徴をつかみ、枝葉を切り捨てた本質をとらえる」思考力を抽象化思考力と呼びます。
> コンサルタントが「抽象度をあげろ」というときには、実は「抽象的にしろ」とは言っていません。「概念化して語れ」と言っているのです。
だから、お前、オブジェクト指向を現実世界をシミュレートするために使うなって
それが間違ったオブジェクト指向の解釈なんだよ。
ドアを抽象化して考えろ。細かい枝葉は取り除け
抽象化
https://ja.wikipedia.org/wiki/%E6%8A%BD%E8%B1%A1%E5%8C%96
> 抽象化(ちゅうしょうか、英: Abstraction、独: Abstraktion)とは、
> 思考における手法のひとつで、対象から注目すべき要素を重点的に抜き出して他は無視する方法である。
https://goo.gl/soXPyb
> ▼誤解されがちな、「抽象化」という言葉
> 結構な人々が抽象化を「曖昧にすること」とか思っていて、抽象絵画は「なんか曖昧な絵」みたく思っているので始末に負えない。
> まず「抽象(abstraction)」っていうのは、「物事の共通部分を抽出して把握すること」だ。
> 「対象物の特徴をつかみ、枝葉を切り捨てた本質をとらえる」思考力を抽象化思考力と呼びます。
> コンサルタントが「抽象度をあげろ」というときには、実は「抽象的にしろ」とは言っていません。「概念化して語れ」と言っているのです。
853デフォルトの名無しさん
2017/06/18(日) 22:30:11.78ID:dLIsPmeH 具体的実装(抽象化の逆)とか言ってるからこれも引用しておくべきだったw
> 抽象化とは、一般化(上位の概念に包括)することです。例えば亀→両生類→動物→生物という具合に、上位の分類の言葉に置き換えていくことです。
> 抽象化とは、一般化(上位の概念に包括)することです。例えば亀→両生類→動物→生物という具合に、上位の分類の言葉に置き換えていくことです。
854デフォルトの名無しさん
2017/06/18(日) 22:32:10.52ID:ZkAshefq855デフォルトの名無しさん
2017/06/18(日) 22:33:52.30ID:dLIsPmeH >>854
ドアが残ったってなんだ?
またお前が言い出した言葉を
俺が言ったことにしたいのか?
お前が言い出した言葉に対して、「知ってるってw」って
なに自分で自分にレスしてるんだ?
妄想も大概にしろ
ドアが残ったってなんだ?
またお前が言い出した言葉を
俺が言ったことにしたいのか?
お前が言い出した言葉に対して、「知ってるってw」って
なに自分で自分にレスしてるんだ?
妄想も大概にしろ
856デフォルトの名無しさん
2017/06/18(日) 22:34:51.41ID:dLIsPmeH 「ドアが残った」 = それは細分化や
これも意味がわからん。
こいつバカなのか?
これも意味がわからん。
こいつバカなのか?
857デフォルトの名無しさん
2017/06/18(日) 22:38:08.14ID:LYWH9ARf 双方何が言いたいのかわからん
858デフォルトの名無しさん
2017/06/18(日) 22:38:14.46ID:ZkAshefq >>855
端的に言ってお前支離滅裂だぞ
少なくとも今夜俺は
お前に抽象化のなんたるかを垣間見せてやったのだから
明日からもう少しまじめに勉強しろよ
まあ今夜は恥ずかしくて顔から火がでてるだろうから
多少の発狂は仕方ないけどなw
端的に言ってお前支離滅裂だぞ
少なくとも今夜俺は
お前に抽象化のなんたるかを垣間見せてやったのだから
明日からもう少しまじめに勉強しろよ
まあ今夜は恥ずかしくて顔から火がでてるだろうから
多少の発狂は仕方ないけどなw
859デフォルトの名無しさん
2017/06/18(日) 22:40:28.64ID:dLIsPmeH > お前に抽象化のなんたるかを垣間見せてやったのだから
え? どれ?
具体的実装の話をすること?
それは抽象化の逆だけど?
え? どれ?
具体的実装の話をすること?
それは抽象化の逆だけど?
860デフォルトの名無しさん
2017/06/18(日) 22:42:55.55ID:dLIsPmeH これ、自分のことを話してるのかな?
> 端的に言ってお前支離滅裂だぞ
ID:ZkAshefq が支離滅裂
> 少なくとも今夜俺は
> お前に抽象化のなんたるかを垣間見せてやったのだから
ID:ZkAshefq に俺が見せてやった
> 明日からもう少しまじめに勉強しろよ
ID:ZkAshefq が勉強しろ
> まあ今夜は恥ずかしくて顔から火がでてるだろうから
ID:ZkAshefq が恥ずかしくて顔から火が出てる
> 多少の発狂は仕方ないけどなw
ID:ZkAshefq が発狂している。
本当は自分のことなのに、それをごかます
幼稚なやつがやる手段だなぁ
> 端的に言ってお前支離滅裂だぞ
ID:ZkAshefq が支離滅裂
> 少なくとも今夜俺は
> お前に抽象化のなんたるかを垣間見せてやったのだから
ID:ZkAshefq に俺が見せてやった
> 明日からもう少しまじめに勉強しろよ
ID:ZkAshefq が勉強しろ
> まあ今夜は恥ずかしくて顔から火がでてるだろうから
ID:ZkAshefq が恥ずかしくて顔から火が出てる
> 多少の発狂は仕方ないけどなw
ID:ZkAshefq が発狂している。
本当は自分のことなのに、それをごかます
幼稚なやつがやる手段だなぁ
861デフォルトの名無しさん
2017/06/18(日) 22:44:07.16ID:ZkAshefq コイツは根本的に馬鹿なのか?
はたまた恥ずかしすぎてトボケてるだけなのか?
いまのところ前者が優勢ですけどねw
はたまた恥ずかしすぎてトボケてるだけなのか?
いまのところ前者が優勢ですけどねw
862デフォルトの名無しさん
2017/06/18(日) 22:44:08.65ID:dLIsPmeH >>857
俺が言いたいのはこれ(三度目のコピペ。二度目はID:ZkAshefq にもう一度書けと言われて書いたのに無視されたw)
それは現実世界のドアの話だろう?
ゲームの世界のドアは、現実世界を参考にできるが
ゲーム特有のドアという仕様を作る。
3Dゲームであれば、ドアには開く閉じるという状態は必要ないだろう
なぜなら物体をすり抜けられないという仕様と
蝶番を支点にドアを動かせるという仕様があればよいからだ
だけど2D RPGみたいなドアであれば、ドアの状態というものがあってもよい
開いているドアであれば、その上を移動することができ、
取っじているドアであれば、その上に移動することはできない。
このようにオブジェクト指向は現実世界の物シミュレートためのものじゃなくて
作りたい仕様を、みんなが持っている現実世界の共通認識を使って
わかりやすくする表現するための技術なんだよ
それにしても現実世界のドアについての人間の認識ってのも面白いよな。
ドアからすれば、物理的にはどういう位置にあるかでしかないのに、
人間は「開いている」「閉まっている」というドアの状態として認識しているわけだ
この認識、利用しない手はない!
俺が言いたいのはこれ(三度目のコピペ。二度目はID:ZkAshefq にもう一度書けと言われて書いたのに無視されたw)
それは現実世界のドアの話だろう?
ゲームの世界のドアは、現実世界を参考にできるが
ゲーム特有のドアという仕様を作る。
3Dゲームであれば、ドアには開く閉じるという状態は必要ないだろう
なぜなら物体をすり抜けられないという仕様と
蝶番を支点にドアを動かせるという仕様があればよいからだ
だけど2D RPGみたいなドアであれば、ドアの状態というものがあってもよい
開いているドアであれば、その上を移動することができ、
取っじているドアであれば、その上に移動することはできない。
このようにオブジェクト指向は現実世界の物シミュレートためのものじゃなくて
作りたい仕様を、みんなが持っている現実世界の共通認識を使って
わかりやすくする表現するための技術なんだよ
それにしても現実世界のドアについての人間の認識ってのも面白いよな。
ドアからすれば、物理的にはどういう位置にあるかでしかないのに、
人間は「開いている」「閉まっている」というドアの状態として認識しているわけだ
この認識、利用しない手はない!
863デフォルトの名無しさん
2017/06/18(日) 22:45:29.07ID:dLIsPmeH864デフォルトの名無しさん
2017/06/18(日) 22:50:00.87ID:ZkAshefq もはや完全に意地になってるなw
学習できない奴の特徴まんまw
学習できない奴の特徴まんまw
865デフォルトの名無しさん
2017/06/18(日) 22:52:43.90ID:dLIsPmeH >>864
ごめん。もうお前にレスはしてないんだw
ごめん。もうお前にレスはしてないんだw
866デフォルトの名無しさん
2017/06/18(日) 23:21:09.03ID:dGQ95y/Y 開口部ってなんですか?
ドアとどう関係があるんですか?
ドアとどう関係があるんですか?
867デフォルトの名無しさん
2017/06/18(日) 23:30:56.67ID:LYWH9ARf おまえらがどう対立してるのかがわからん
オブジェクト志向には色々な側面があるんだし、その二つは別に対立せん気がするが
オブジェクト志向には色々な側面があるんだし、その二つは別に対立せん気がするが
868デフォルトの名無しさん
2017/06/18(日) 23:35:28.24ID:dLIsPmeH 対立じゃなくてオブジェクト指向は現実世界のものをシミュレート
するものじゃないってことを言ってるだけだよ。
オブジェクト指向で現実世界のあれができないこれができないっていうのは
的外れだってこと
ま、そもそもオブジェクト指向で「ドア」を実装するにはどうすればいいだ?って
ドアというオブジェクトを持ってきてる時点で、
オブジェクト指向は人間の認識と相性が良いんだってわかるんだけどねw
するものじゃないってことを言ってるだけだよ。
オブジェクト指向で現実世界のあれができないこれができないっていうのは
的外れだってこと
ま、そもそもオブジェクト指向で「ドア」を実装するにはどうすればいいだ?って
ドアというオブジェクトを持ってきてる時点で、
オブジェクト指向は人間の認識と相性が良いんだってわかるんだけどねw
869デフォルトの名無しさん
2017/06/18(日) 23:57:27.96ID:LYWH9ARf870デフォルトの名無しさん
2017/06/19(月) 01:13:21.02ID:9pZo4esm どっちも主張がよーわからんが
ID:ZkAshefqを抽出したらびっくりするほどなんにも言ってなかった。
「ばーかばーかおれの勝ちィ!」しか書いてなくね?
なんでスレ進んでんの?
ID:ZkAshefqを抽出したらびっくりするほどなんにも言ってなかった。
「ばーかばーかおれの勝ちィ!」しか書いてなくね?
なんでスレ進んでんの?
871デフォルトの名無しさん
2017/06/19(月) 01:19:07.10ID:JcFW0m+v https://ja.wikipedia.org/wiki/Simula
Simula 67 ではオブジェクト、 クラス、サブクラス、継承、動的束縛(仮想関数)、
コルーチン、 ディスクリートイベントシミュレーション、ガベージコレクションの機能をもち、
オブジェクト指向プログラミングの基本概念はすべてここで発案されているといえる。
Simula はプログラミングパラダイムとして最初のオブジェクト指向言語であると考えられる。
その名前が示すように Simula はシミュレーションを行うために設計され、
その必要性から今日のオブジェクト指向言語で使われる多くの機能のためのフレームワークを提供した。
なお、Simula 当時「オブジェクト指向」という言葉はまだない。
この用語はアラン・ケイが Simula の概念として70年代ごろに使い出したのが始まりといわれている。
従ってその意味では Simula が世界最初のオブジェクト指向言語であり、
Simula は「オブジェクト指向として再認識が可能な最古の言語」ということができる。
Simula 67 ではオブジェクト、 クラス、サブクラス、継承、動的束縛(仮想関数)、
コルーチン、 ディスクリートイベントシミュレーション、ガベージコレクションの機能をもち、
オブジェクト指向プログラミングの基本概念はすべてここで発案されているといえる。
Simula はプログラミングパラダイムとして最初のオブジェクト指向言語であると考えられる。
その名前が示すように Simula はシミュレーションを行うために設計され、
その必要性から今日のオブジェクト指向言語で使われる多くの機能のためのフレームワークを提供した。
なお、Simula 当時「オブジェクト指向」という言葉はまだない。
この用語はアラン・ケイが Simula の概念として70年代ごろに使い出したのが始まりといわれている。
従ってその意味では Simula が世界最初のオブジェクト指向言語であり、
Simula は「オブジェクト指向として再認識が可能な最古の言語」ということができる。
872デフォルトの名無しさん
2017/06/19(月) 01:25:04.44ID:l1liGy+g873デフォルトの名無しさん
2017/06/19(月) 01:27:16.04ID:l1liGy+g 志村 けんは、日本のコメディアン、お笑いタレント、司会者。ザ・ドリフターズのメンバー。
生年月日: 1950年2月20日 (67歳)
https://ja.wikipedia.org/wiki/Simula
志村(67) ではオブジェクト、 クラス、サブクラス、継承、動的束縛(仮想関数)、
コルーチン、 ディスクリートイベントシミュレーション、ガベージコレクションの機能をもち、
オブジェクト指向プログラミングの基本概念はすべてここで発案されているといえる。
志村 はプログラミングパラダイムとして最初のオブジェクト指向言語であると考えられる。
その名前が示すように 志村 はシミュレーションを行うために設計され、
その必要性から今日のオブジェクト指向言語で使われる多くの機能のためのフレームワークを提供した。
なお、志村 当時「オブジェクト指向」という言葉はまだない。
この用語は 荒井・注 が 志村 の概念として70年代ごろに使い出したのが始まりといわれている。
従ってその意味では 志村 が世界最初のオブジェクト指向言語であり、
志村 は「オブジェクト指向として再認識が可能な最古の言語」ということができる。
生年月日: 1950年2月20日 (67歳)
https://ja.wikipedia.org/wiki/Simula
志村(67) ではオブジェクト、 クラス、サブクラス、継承、動的束縛(仮想関数)、
コルーチン、 ディスクリートイベントシミュレーション、ガベージコレクションの機能をもち、
オブジェクト指向プログラミングの基本概念はすべてここで発案されているといえる。
志村 はプログラミングパラダイムとして最初のオブジェクト指向言語であると考えられる。
その名前が示すように 志村 はシミュレーションを行うために設計され、
その必要性から今日のオブジェクト指向言語で使われる多くの機能のためのフレームワークを提供した。
なお、志村 当時「オブジェクト指向」という言葉はまだない。
この用語は 荒井・注 が 志村 の概念として70年代ごろに使い出したのが始まりといわれている。
従ってその意味では 志村 が世界最初のオブジェクト指向言語であり、
志村 は「オブジェクト指向として再認識が可能な最古の言語」ということができる。
874デフォルトの名無しさん
2017/06/19(月) 01:28:38.27ID:l1liGy+g875デフォルトの名無しさん
2017/06/19(月) 01:44:56.66ID:9pZo4esm >>871
毎回思ってることだけど、アランケイのオブジェクト指向のポイントは
むしろメッセージセンドでオブジェクトに命令を送るという方式の発案なので
(さらにいうと、インスタンスを作るのにクラスそのものに「複製を作れ」と命令して作らせる
言語システム(予約語)から離れてクラスが自律的に動く思想の方)
Simulaはかなり毛色の違うオブジェクト指向だし
言ってしまうとこれがカンチガイされたままオブジェクト指向だと思われた結果
C++というそびえ立つクソの山が産まれて業界を何十年も混乱に陥れた元凶だから
Simula持ってきて「オブジェクト指向とは〜」ってやった瞬間
お話にならないぐらいオブジェクト指向を理解していないバカが来た。
で話が終わるんだけど。
毎回思ってることだけど、アランケイのオブジェクト指向のポイントは
むしろメッセージセンドでオブジェクトに命令を送るという方式の発案なので
(さらにいうと、インスタンスを作るのにクラスそのものに「複製を作れ」と命令して作らせる
言語システム(予約語)から離れてクラスが自律的に動く思想の方)
Simulaはかなり毛色の違うオブジェクト指向だし
言ってしまうとこれがカンチガイされたままオブジェクト指向だと思われた結果
C++というそびえ立つクソの山が産まれて業界を何十年も混乱に陥れた元凶だから
Simula持ってきて「オブジェクト指向とは〜」ってやった瞬間
お話にならないぐらいオブジェクト指向を理解していないバカが来た。
で話が終わるんだけど。
876デフォルトの名無しさん
2017/06/19(月) 01:57:02.13ID:l1liGy+g そういやエージェント指向ってどうなんたんかな?
昔、15年ぐらい前に学生だった時に先生がこれからはエージェント指向だって言ってたんだが
その説明きいて、俺はそれってオブジェクト指向+メタデータじゃね?程度に思ってた。
オブジェクトが自律的に仕事をする。みたいな事を言ってたんだが、
それを実現するにはどんな要望であっても、それを実現するためのモジュールが存在し
その要望を完璧に判断してモジュールを選択できるAIでも搭載してなきゃできないような
ものだったのでエージェント指向でもなんでもないし実現は不可能と思っていたが。
まあエージェント指向とやらにはさっさと見切りをつけたので
俺が間違って理解してるんだと思うけどねw
でも事実としてオブジェクト指向を置き換えるものにはならなかったようだね。
昔、15年ぐらい前に学生だった時に先生がこれからはエージェント指向だって言ってたんだが
その説明きいて、俺はそれってオブジェクト指向+メタデータじゃね?程度に思ってた。
オブジェクトが自律的に仕事をする。みたいな事を言ってたんだが、
それを実現するにはどんな要望であっても、それを実現するためのモジュールが存在し
その要望を完璧に判断してモジュールを選択できるAIでも搭載してなきゃできないような
ものだったのでエージェント指向でもなんでもないし実現は不可能と思っていたが。
まあエージェント指向とやらにはさっさと見切りをつけたので
俺が間違って理解してるんだと思うけどねw
でも事実としてオブジェクト指向を置き換えるものにはならなかったようだね。
877デフォルトの名無しさん
2017/06/19(月) 02:06:51.24ID:l1liGy+g >>875
シミュレーションをするために言語を作ったけど、
本来の用途としてはあまり使われず、(よくよく考えてみれば
シミュレーションなんてそんなにするか?ってことなんだろう)
副産物として生まれてオブジェクト指向の技術の基礎とでも
呼べるようなものが独立しそれが洗練されてオブジェクト指向言語
として生まれ変わったってことなんかね。
UMLも似たようなもんだよね。元々はオブジェクト指向分析や設計の方法を
色んな人が考えていたけど、それぞれを比較検討する時、それぞれで図の書き方が
異なっていたので、分析や設計方法が色々あるのはわかる。だけどせめて図の書き方
ぐらいは統一しようじゃないかって生まれたもの。
でもオブジェクト指向の分析や設計方法はみんな飽きてしまったのか話題にならなくなり
UMLという図の書き方だけが広まったと。
シミュレーションをするために言語を作ったけど、
本来の用途としてはあまり使われず、(よくよく考えてみれば
シミュレーションなんてそんなにするか?ってことなんだろう)
副産物として生まれてオブジェクト指向の技術の基礎とでも
呼べるようなものが独立しそれが洗練されてオブジェクト指向言語
として生まれ変わったってことなんかね。
UMLも似たようなもんだよね。元々はオブジェクト指向分析や設計の方法を
色んな人が考えていたけど、それぞれを比較検討する時、それぞれで図の書き方が
異なっていたので、分析や設計方法が色々あるのはわかる。だけどせめて図の書き方
ぐらいは統一しようじゃないかって生まれたもの。
でもオブジェクト指向の分析や設計方法はみんな飽きてしまったのか話題にならなくなり
UMLという図の書き方だけが広まったと。
878デフォルトの名無しさん
2017/06/19(月) 08:54:27.70ID:1iazHqgp 歴史的な起源に拘らない人と、
「もともとはこうだったのに変質してしまった。クソが!」と思う人がいるのだなあ。
と感じました、まる
「もともとはこうだったのに変質してしまった。クソが!」と思う人がいるのだなあ。
と感じました、まる
879デフォルトの名無しさん
2017/06/19(月) 10:38:29.48ID:MTmJn+ZD 歴史的な起源に拘らないとsmalltalkerなんてやってられないよ
880デフォルトの名無しさん
2017/06/19(月) 11:06:11.95ID:j3p5BJjc ストラウストラップとケイの“オブジェクト指向”は別物なので混同せずちゃんと区別したほうがよい
ストラウストラップの“オブジェクト指向”はSimulaスタイルのクラスを抽象データ型(ADT)とみなして使うアイデア
抽象データ型の提唱者のリスコフ、Simulaの設計者たち(ダールとニガート)はもちろん、メイヤーも同様のアイデア同時期に提示している
抽象データ型というのは簡単にいうと「ユーザー定義型」のことで言語組み込みの具象データ型に対してこう呼ばれる
OOPの古典的三点セット「カプセル化・継承・ポリモーフィズム」に象徴されていて
カプセル化は抽象データ型の要件、継承とポリモーフィズムはクラスを使う際のオマケの機能を表わしている
ただ、早々にクックらにより継承を使ってサブタイプを表現することには問題が生じうることが指摘されていて
また動的型のダックタイピングのような自由度を得るためにインターフェース(プロトコルなど別の呼び名も)が考案され
現在はそれが汎用されている
一方、ケイの“オブジェクト指向”はSimulaのオブジェクトにメッセージの受け手を担当させるアイデア
メッセージングはあくまで方便で狙いはその先の設計・実装・運用等、あらゆる局面での「遅延結合の徹底」
遅延結合というと実装のみに固執してしまう人がいるから「決定の遅延」といった方がよいかも
Smalltalk-72はこのアイデアを元に、クラスはJSのクラスのような関数っぽい性質で実現された
このときはメソッドも関数というよりLISP等のリーダーマクロのようなメッセージとなるトークンストリームを順次処理する手順が記述された
次の世代のSmalltalk-76からはSimulaスタイルのクラスが取り込まれ、メソッドも単なる関数になり
前者のオブジェクト指向もそれなりに意識されるようになったので同じSmalltalkでも
Smalltalk-72は純粋なメッセージングのOOPL、Smalltalk-76以降はADPとメッセージングのキメラと考えた方がよいので
もしケイのメッセージングのOOPの考え方に興味があるならPharoやSqueakのような最新のSmalltalkではなく
エミュレーター等で提供されているSmalltalk-72をやるほうがいい
https://ubiteku.oinker.me/2016/05/09/what-is-oo-all-about/#comment-65
ちなみにアクター理論はこのアイデアを実行時の並行性に応用し定式化を試みたもの
ストラウストラップの“オブジェクト指向”はSimulaスタイルのクラスを抽象データ型(ADT)とみなして使うアイデア
抽象データ型の提唱者のリスコフ、Simulaの設計者たち(ダールとニガート)はもちろん、メイヤーも同様のアイデア同時期に提示している
抽象データ型というのは簡単にいうと「ユーザー定義型」のことで言語組み込みの具象データ型に対してこう呼ばれる
OOPの古典的三点セット「カプセル化・継承・ポリモーフィズム」に象徴されていて
カプセル化は抽象データ型の要件、継承とポリモーフィズムはクラスを使う際のオマケの機能を表わしている
ただ、早々にクックらにより継承を使ってサブタイプを表現することには問題が生じうることが指摘されていて
また動的型のダックタイピングのような自由度を得るためにインターフェース(プロトコルなど別の呼び名も)が考案され
現在はそれが汎用されている
一方、ケイの“オブジェクト指向”はSimulaのオブジェクトにメッセージの受け手を担当させるアイデア
メッセージングはあくまで方便で狙いはその先の設計・実装・運用等、あらゆる局面での「遅延結合の徹底」
遅延結合というと実装のみに固執してしまう人がいるから「決定の遅延」といった方がよいかも
Smalltalk-72はこのアイデアを元に、クラスはJSのクラスのような関数っぽい性質で実現された
このときはメソッドも関数というよりLISP等のリーダーマクロのようなメッセージとなるトークンストリームを順次処理する手順が記述された
次の世代のSmalltalk-76からはSimulaスタイルのクラスが取り込まれ、メソッドも単なる関数になり
前者のオブジェクト指向もそれなりに意識されるようになったので同じSmalltalkでも
Smalltalk-72は純粋なメッセージングのOOPL、Smalltalk-76以降はADPとメッセージングのキメラと考えた方がよいので
もしケイのメッセージングのOOPの考え方に興味があるならPharoやSqueakのような最新のSmalltalkではなく
エミュレーター等で提供されているSmalltalk-72をやるほうがいい
https://ubiteku.oinker.me/2016/05/09/what-is-oo-all-about/#comment-65
ちなみにアクター理論はこのアイデアを実行時の並行性に応用し定式化を試みたもの
881デフォルトの名無しさん
2017/06/19(月) 11:42:12.84ID:1iazHqgp 実用的な言語の話をしている
882デフォルトの名無しさん
2017/06/19(月) 16:38:13.20ID:LZvrLoRE 決定の遅延とは即ち実行時に決定するということ
つまりデータと処理の抽象化を徹底するということだ
つまりデータと処理の抽象化を徹底するということだ
883デフォルトの名無しさん
2017/06/19(月) 16:49:21.59ID:LZvrLoRE データの抽象化を徹底すると型とクラスが無くなる
型によってデータ長も処理の方法も変わるのが煩雑さの根源だ
型によってデータ長も処理の方法も変わるのが煩雑さの根源だ
884デフォルトの名無しさん
2017/06/19(月) 19:55:43.12ID:/Mgza80D もともと、コンピュータが巨大にそしてネットワークで接続されると
離れたユニットに「この処理をお願いします」と頼むことになって
シーケンシャルな処理待ちしていたらコンピュータが止まっちゃうし
周りの環境も実行時に刻々と変化してゆくから
オブジェクトにはある種の他と切り離された自律性がいるよね。なのに
なぜか21世紀のインターネット時代に「いいや!カッチリ制御して
他に影響が出ないように書ければこの『世界が勝手に変化するバグ』は排除できるはずだ!」
という謎のカルトが一部で流行り出してるのがどうにもよくわからないw
離れたユニットに「この処理をお願いします」と頼むことになって
シーケンシャルな処理待ちしていたらコンピュータが止まっちゃうし
周りの環境も実行時に刻々と変化してゆくから
オブジェクトにはある種の他と切り離された自律性がいるよね。なのに
なぜか21世紀のインターネット時代に「いいや!カッチリ制御して
他に影響が出ないように書ければこの『世界が勝手に変化するバグ』は排除できるはずだ!」
という謎のカルトが一部で流行り出してるのがどうにもよくわからないw
885デフォルトの名無しさん
2017/06/19(月) 21:05:37.05ID:KwjLNCYt ガイジ
886デフォルトの名無しさん
2017/06/19(月) 23:09:44.33ID:g4cBDSU6 歴史的にオブジェクト指向の後にテンプレートとかジェネリックとか言われるのが導入されたけど、継承とかより移譲が重宝されてる辺り、ジェネリックだけで十分じゃね?って気がしなくも無い。
887デフォルトの名無しさん
2017/06/19(月) 23:22:30.80ID:l1liGy+g C++以外にテンプレートがある言語ってあるの?
C++のテンプレートは本来ジェネリック程度の機能で良かったのに
ちょっと道を外したら、意外と高度なことができることが分かっちゃって
本来の目的から大きくはずれてコンパイル時コードジェネレータみたいな
もんになっちゃったでしょ?
C++のテンプレートは本来ジェネリック程度の機能で良かったのに
ちょっと道を外したら、意外と高度なことができることが分かっちゃって
本来の目的から大きくはずれてコンパイル時コードジェネレータみたいな
もんになっちゃったでしょ?
888デフォルトの名無しさん
2017/06/19(月) 23:28:36.65ID:+dhODesl そもそも継承なんてものの80%はゴミ
protcolとdelegateこそが至高
protcolとdelegateこそが至高
889デフォルトの名無しさん
2017/06/19(月) 23:30:58.96ID:9w3QFpXl そういのいいんで
890デフォルトの名無しさん
2017/06/19(月) 23:33:07.34ID:xaFoAOZp そういやこの1スレたてたガイジ最近みないね
891デフォルトの名無しさん
2017/06/20(火) 23:04:56.68ID:v+vDltnD Haskellでガンガンよく使う処理を個人ライブラリ化なう。
Myfunc.hs
1:module Myfunc where
2:
3:import Data.List
4:import Text.Printf
5:
6:consnum::(Int,String) -> String
7:consnum (i,xs) = printf "%4d:%s" i xs
8:
9:fline f = unlines.f.lines
10:
11:fnumbering f = fline ((map consnum).(zip [1..]).f)
12:
13:numbering = fnumbering id
14:
15:revnumbering = fnumbering reverse
16:
17:allrevnumbering = fnumbering (reverse.map reverse)
18:
19:searchword w = fline (filter (isInfixOf w))
20:
21:putfc (f,c) = printf "%s\n%s" f c
22:
23:mulfileput fs f = mapM readFile fs >>=
24: return.(zip fs).map f >>=
25: mapM_ putfc
Myfunc.hs
1:module Myfunc where
2:
3:import Data.List
4:import Text.Printf
5:
6:consnum::(Int,String) -> String
7:consnum (i,xs) = printf "%4d:%s" i xs
8:
9:fline f = unlines.f.lines
10:
11:fnumbering f = fline ((map consnum).(zip [1..]).f)
12:
13:numbering = fnumbering id
14:
15:revnumbering = fnumbering reverse
16:
17:allrevnumbering = fnumbering (reverse.map reverse)
18:
19:searchword w = fline (filter (isInfixOf w))
20:
21:putfc (f,c) = printf "%s\n%s" f c
22:
23:mulfileput fs f = mapM readFile fs >>=
24: return.(zip fs).map f >>=
25: mapM_ putfc
892デフォルトの名無しさん
2017/06/20(火) 23:05:26.93ID:v+vDltnD number.hs
1:import System.Environment
2:import Myfunc
3:
4:main = getArgs >>=
5: \fs -> mulfileput fs numbering
6:
revnumber.hs
1:import System.Environment
2:import Myfunc
3:
4:main = getArgs >>=
5: \fs -> mulfileput fs revnumbering
6:
searchword.hs
1:import System.Environment
2:import Myfunc
3:
4:main = getArgs >>=
5: \(w:fs) -> mulfileput fs ((searchword w).numbering)
6:
1:import System.Environment
2:import Myfunc
3:
4:main = getArgs >>=
5: \fs -> mulfileput fs numbering
6:
revnumber.hs
1:import System.Environment
2:import Myfunc
3:
4:main = getArgs >>=
5: \fs -> mulfileput fs revnumbering
6:
searchword.hs
1:import System.Environment
2:import Myfunc
3:
4:main = getArgs >>=
5: \(w:fs) -> mulfileput fs ((searchword w).numbering)
6:
893デフォルトの名無しさん
2017/06/20(火) 23:52:17.95ID:pEbbmUs5 だからそういうのはブログで……
894デフォルトの名無しさん
2017/06/21(水) 00:42:37.70ID:Mt9AmAoV ん。
だってオブジェクト指向言語使ってた時って、ここまで似たようなコード書かなくて良いくらいライブラリ化出来たことなかったんだもん。
だってオブジェクト指向言語使ってた時って、ここまで似たようなコード書かなくて良いくらいライブラリ化出来たことなかったんだもん。
895デフォルトの名無しさん
2017/06/21(水) 00:55:18.54ID:nYB1lvTl readFileの中身が謎だらけで怖くて使えない
896デフォルトの名無しさん
2017/06/21(水) 01:08:07.93ID:Mt9AmAoV PythonやRubyのopenと大差ないと思うが。。。
嫌ならもっと低レベルの関数もあるよ?
嫌ならもっと低レベルの関数もあるよ?
897デフォルトの名無しさん
2017/06/21(水) 07:06:46.09ID:nYB1lvTl 型クラスの仕組みが姑息
LISPのSETFと同じくらいガッカリ感ある
LISPのSETFと同じくらいガッカリ感ある
898デフォルトの名無しさん
2017/06/21(水) 07:08:04.36ID:n4ESO8N1 猫ドアは後出しでドアの要件増やされるけどインターフェイスで振る舞いを追加してけば対応可能じゃないの
オブジェクト指向言語的に考えたら
オブジェクト指向言語的に考えたら
899デフォルトの名無しさん
2017/06/21(水) 08:08:08.40ID:XUERnIj3 >>898
それはインタフェース自体を増やすと言ってるように聞こえるけど?
それはインタフェース自体を増やすと言ってるように聞こえるけど?
900デフォルトの名無しさん
2017/06/21(水) 08:31:13.44ID:ajPkQF0E >>898は新規インターフェイスの追加じゃなくて既存のインターフェイスへ機能追加だろ
901デフォルトの名無しさん
2017/06/21(水) 08:32:01.05ID:S2UygZ3z new ってなんなのか、なぜ必要なのか教えて、
オブジェクト生成元クラスのコンストラクタ関数の結果を得るだけなら、
Foo obj = Foo();
とすれば new なくても書けるのに、なぜ new を書く必要があるの?
オブジェクト生成元クラスのコンストラクタ関数の結果を得るだけなら、
Foo obj = Foo();
とすれば new なくても書けるのに、なぜ new を書く必要があるの?
902デフォルトの名無しさん
2017/06/21(水) 08:55:18.55ID:BZXMZb7j newがあるから僕らはそれがコンストラクタを呼ぶものだと知ることができる
newがなければ何をすれば良いのかわからない
コンパイラの気持ちになって考えろよ
newがなければ何をすれば良いのかわからない
コンパイラの気持ちになって考えろよ
903デフォルトの名無しさん
2017/06/21(水) 09:09:53.08ID:mDRh5T94 newをかかなくていい言語をさがそう
904デフォルトの名無しさん
2017/06/21(水) 09:11:42.85ID:mDRh5T94 C++の例
Base *base_pointer = new Base();
Base base();
Base *base_pointer = new Base();
Base base();
905デフォルトの名無しさん
2017/06/21(水) 09:19:49.52ID:mDRh5T94 pikeという言語は、newをつかわない
bird tweety = bird("Tweety", 0.13);
tweety->eat("corn");
tweety->fly();
tweety->max_altitude = 180.0;
fish b = fish("Bubbles", 1.13);
b->eat("fish food");
b->swim();
animal w = fish("Willy", 4000.0);
w->eat("tourists");
w->swim();
Inheritance | Object-Oriented Programming | Beginner’s Tutorial - Pike Programming Language
https://pike.lysator.liu.se/docs/tut/oop/inheritance.md
bird tweety = bird("Tweety", 0.13);
tweety->eat("corn");
tweety->fly();
tweety->max_altitude = 180.0;
fish b = fish("Bubbles", 1.13);
b->eat("fish food");
b->swim();
animal w = fish("Willy", 4000.0);
w->eat("tourists");
w->swim();
Inheritance | Object-Oriented Programming | Beginner’s Tutorial - Pike Programming Language
https://pike.lysator.liu.se/docs/tut/oop/inheritance.md
906デフォルトの名無しさん
2017/06/21(水) 10:28:20.88ID:bqAd0GFb new要らないな
907デフォルトの名無しさん
2017/06/21(水) 10:47:23.25ID:eLmte6hp コンパイラが進化すればいらなくなるんじゃね
908デフォルトの名無しさん
2017/06/21(水) 11:13:54.44ID:+MSTc8BP >>902
コンストラクタはクラス名と同じって制約があるんだから、コンパイラの気持ちになったらnewなんて別にあってもなくてもいいでしょ
人にわかりやすいようにしてあるだけ
なにがコンパイラの気持ちだアホ
コンストラクタはクラス名と同じって制約があるんだから、コンパイラの気持ちになったらnewなんて別にあってもなくてもいいでしょ
人にわかりやすいようにしてあるだけ
なにがコンパイラの気持ちだアホ
909デフォルトの名無しさん
2017/06/21(水) 11:19:25.58ID:ooAgeRH5 パラメーターがないとややこしいからある場合で考えると
(new Foo)(p1,p2,p3) ととらえるか、new (Foo(p1,p2,p3)) と捉えるかの感覚の違いじゃない?
前者なら宣言的に「新しくFooのインスタンスを作って(初期化パラメーター渡して)るんだな」感が出てnewはあったほうがいいし、
後者なら「新しいFooのインスタンスを作る関数のFoo()を呼んでるのにnewなんて余計やろ?」ってなる
従ってコンストラクタとしてFooを定義する言語や、クラスがそもそも関数的な存在の言語ならnewは蛇足
(new Foo)(p1,p2,p3) ととらえるか、new (Foo(p1,p2,p3)) と捉えるかの感覚の違いじゃない?
前者なら宣言的に「新しくFooのインスタンスを作って(初期化パラメーター渡して)るんだな」感が出てnewはあったほうがいいし、
後者なら「新しいFooのインスタンスを作る関数のFoo()を呼んでるのにnewなんて余計やろ?」ってなる
従ってコンストラクタとしてFooを定義する言語や、クラスがそもそも関数的な存在の言語ならnewは蛇足
910デフォルトの名無しさん
2017/06/21(水) 11:39:01.69ID:XUERnIj3911デフォルトの名無しさん
2017/06/21(水) 11:42:21.94ID:x++JJuQ3 スタックかヒープかってこと?
912デフォルトの名無しさん
2017/06/21(水) 11:46:29.64ID:v7daEmTS >>908
> コンストラクタはクラス名と同じって制約があるんだから、コンパイラの気持ちになったらnewなんて別にあってもなくてもいいでしょ
class Foo { }
function Foo() { }
> コンストラクタはクラス名と同じって制約があるんだから、コンパイラの気持ちになったらnewなんて別にあってもなくてもいいでしょ
class Foo { }
function Foo() { }
913デフォルトの名無しさん
2017/06/21(水) 11:48:18.80ID:v7daEmTS class Foo { }
function Foo() { }
が両立する言語の場合、
a = new Foo(); // Fooクラスのコンストラクタ
b = Foo(); // 関数Fooの呼び出し
を区別する必要があるから、newが必要
function Foo() { }
が両立する言語の場合、
a = new Foo(); // Fooクラスのコンストラクタ
b = Foo(); // 関数Fooの呼び出し
を区別する必要があるから、newが必要
914デフォルトの名無しさん
2017/06/21(水) 12:29:16.70ID:Y4WM7moX >>913
それをnew無しにもできるでしょ。クラスと関数で区別つくんだし
それをnew無しにもできるでしょ。クラスと関数で区別つくんだし
915デフォルトの名無しさん
2017/06/21(水) 12:43:42.22ID:Y9QahJfp >>903
リフレクション
リフレクション
916デフォルトの名無しさん
2017/06/21(水) 12:45:39.84ID:Y9QahJfp Activator.CreateInstance()とかは?
917デフォルトの名無しさん
2017/06/21(水) 12:52:24.42ID:JHIJAiI6 classname.new()
918デフォルトの名無しさん
2017/06/21(水) 12:56:10.63ID:v7daEmTS919デフォルトの名無しさん
2017/06/21(水) 14:21:56.72ID:L1LFWazB new を付けなかったら、インスタンスが作られないから、
this が正しく、インスタンスを指さない
JavaScript だと、prototype 継承が動作しない
this が正しく、インスタンスを指さない
JavaScript だと、prototype 継承が動作しない
920デフォルトの名無しさん
2017/06/21(水) 16:12:32.59ID:CwIOTiNS お、おう
921デフォルトの名無しさん
2017/06/21(水) 22:04:39.36ID:xiNpcjp1 JavaScriptができた当時の仕様だと、
インスタンスを作る方法はnewしかないでしょ?
インスタンスを作る方法はnewしかないでしょ?
922デフォルトの名無しさん
2017/07/01(土) 23:37:05.45ID:Tp0p2tiJ まぁ言ってる意味は分からんでもないんだよな
コンパイラはFooがクラスか関数か、何なのか知ってるから
区別できるよねっていう
ただし意味解析をしなければFooが何なのか分からない
newがあれば構文解析だけで何をしようとしているかわかる
Fooが何かのか解析するまでもなく、字面の並びだけで関数呼び出しなのか
インスタンスの生成なのかの区別がつく
いざコンパイラを作るとなったらこの差はでかい
あとなんつーか、そういうこと言い出したら
(int i = 0; i < 100; ++i ) なんていう並びの書き方はfor文の時にしか使わないんだから
「for」って要らなくね?とか、goto ERR;って書くけど、ERRがラベルであることは
コンパイラは知っているんだから「goto」って要らなくね?とか
コンパイラはFooがクラスか関数か、何なのか知ってるから
区別できるよねっていう
ただし意味解析をしなければFooが何なのか分からない
newがあれば構文解析だけで何をしようとしているかわかる
Fooが何かのか解析するまでもなく、字面の並びだけで関数呼び出しなのか
インスタンスの生成なのかの区別がつく
いざコンパイラを作るとなったらこの差はでかい
あとなんつーか、そういうこと言い出したら
(int i = 0; i < 100; ++i ) なんていう並びの書き方はfor文の時にしか使わないんだから
「for」って要らなくね?とか、goto ERR;って書くけど、ERRがラベルであることは
コンパイラは知っているんだから「goto」って要らなくね?とか
923デフォルトの名無しさん
2017/07/01(土) 23:45:05.96ID:N+ZXroXE Foo()というメソッドが定義されてなければnewなしだとコンパイルエラーになるんじゃないの...
924デフォルトの名無しさん
2017/07/02(日) 00:07:24.31ID:yqVk05l0 コンパイラはソフトウェアにとって重要なものであるので
ちゃんと専門の学問があってセオリーがある
必ずしもセオリー通りにする必要はないが、いちおうセオリーがある
セオリーに従えばコンパイラは
字句解析→構文解析→意味解析、というステップを踏んで
プログラムを解析することになっている
ここで、Fooがクラスであるか関数であるかによって
インスタンス生成か関数呼び出しか、切り替えるという文法にしてしまうと
意味解析をしなければ構文解析ができない、という逆流現象が発生してしまう
また、コンパイラ生成器にBNFか何かを食わして自動で構文解析のコードを生成してもらうと
思っても、意味解析をしなければ構文が判明しない箇所のある文法では都合が悪いじゃろ
ただし、セオリーはセオリーでしかなく、従わないことも多々ある
たとえばC++の字句解析において、これは最長一致であるので
「>>」は右シフトと判断されそうなものであるが
出現場所によっては「>」と「>」の二つに分解される
これは字句解析がその後の工程であるはずの構文解析を先回りして少しだけ
してしまっている状態
ちゃんと専門の学問があってセオリーがある
必ずしもセオリー通りにする必要はないが、いちおうセオリーがある
セオリーに従えばコンパイラは
字句解析→構文解析→意味解析、というステップを踏んで
プログラムを解析することになっている
ここで、Fooがクラスであるか関数であるかによって
インスタンス生成か関数呼び出しか、切り替えるという文法にしてしまうと
意味解析をしなければ構文解析ができない、という逆流現象が発生してしまう
また、コンパイラ生成器にBNFか何かを食わして自動で構文解析のコードを生成してもらうと
思っても、意味解析をしなければ構文が判明しない箇所のある文法では都合が悪いじゃろ
ただし、セオリーはセオリーでしかなく、従わないことも多々ある
たとえばC++の字句解析において、これは最長一致であるので
「>>」は右シフトと判断されそうなものであるが
出現場所によっては「>」と「>」の二つに分解される
これは字句解析がその後の工程であるはずの構文解析を先回りして少しだけ
してしまっている状態
925デフォルトの名無しさん
2017/07/02(日) 00:07:47.85ID:0SO6fajC926デフォルトの名無しさん
2017/07/02(日) 00:11:14.19ID:0SO6fajC なんかニワカが長文書いているようだが、
JavaScriptにclassキーワードが追加されたのは比較的最近。
互換性を保つ上で、classキーワードは関数に変換される。
また
function Klass と書けばクラス
function func と書けば関数
というふうに先頭が大文字か小文字かで区別する
というのはあるがこれは慣習であって言語仕様ではない。
JavaScriptにclassキーワードが追加されたのは比較的最近。
互換性を保つ上で、classキーワードは関数に変換される。
また
function Klass と書けばクラス
function func と書けば関数
というふうに先頭が大文字か小文字かで区別する
というのはあるがこれは慣習であって言語仕様ではない。
927デフォルトの名無しさん
2017/07/02(日) 00:14:28.75ID:yqVk05l0928デフォルトの名無しさん
2017/07/02(日) 01:37:38.04ID:9byBa7OY obj = instantiate(Foo)
929デフォルトの名無しさん
2017/07/03(月) 06:49:00.62ID:rdvbpUW5 オブジェクトが請け負う役割の範囲が未だよく分からん。
例えば、武器を装備するという行為は、
オブジェクト自身に機能を持たせるのか、
actorを第一引数とする処理を別に作るのか。
対象を省略できるからオブジェクトに実装したりするけど、コンテキストの依存性などの問題でゲームマスター的なクラスに処理を任せるべきだなと思ったり。
例えば、武器を装備するという行為は、
オブジェクト自身に機能を持たせるのか、
actorを第一引数とする処理を別に作るのか。
対象を省略できるからオブジェクトに実装したりするけど、コンテキストの依存性などの問題でゲームマスター的なクラスに処理を任せるべきだなと思ったり。
930デフォルトの名無しさん
2017/07/03(月) 07:34:00.67ID:Rzh0OD1D 「武器を装備しろ」と命令したらあとは当該クラスがよしなにやって
こっちには結果教えてくれればいいだけなので
その「役割の範囲」そのものが当該クラス任せです。
クラスが自分でやっても、武器総合管理クラスに聞いてても
上位は感知しないことで切り離してるので。
こっちには結果教えてくれればいいだけなので
その「役割の範囲」そのものが当該クラス任せです。
クラスが自分でやっても、武器総合管理クラスに聞いてても
上位は感知しないことで切り離してるので。
931デフォルトの名無しさん
2017/07/03(月) 07:39:44.51ID:sUmj13cM equip(soldier, weapon)
soldier.equip(weapon)
soldier.equip(weapon)
932デフォルトの名無しさん
2017/07/03(月) 11:04:22.70ID:SlrShd+d 関数型なら武器を装備するのも簡単
933デフォルトの名無しさん
2017/07/03(月) 22:50:46.43ID:R6Sojlsl セックスはどうすればいいんだ?
934デフォルトの名無しさん
2017/07/03(月) 23:00:58.77ID:c364q6zP chinko.equip(manko)
935デフォルトの名無しさん
2017/07/03(月) 23:03:36.07ID:R6Sojlsl 一方的だな
936デフォルトの名無しさん
2017/07/04(火) 23:07:51.12ID:VgVQ93XC friendにして相互っつ〜ワケにはいかんの?
937デフォルトの名無しさん
2017/07/05(水) 21:55:54.95ID:QXr7Yy+H オブジェクト試行の「オブジェクト」っていうネーミングって
誤解を招かないか、
どっちかというと「モノ」じゃなくて仮想的な「生命体」じゃない?
だって動きを持ってるし、誕生して活動して死ぬわけじゃん。
「モノ」なのはコンストラクタやメソッドでやり取りされる「引数」
の方だろ。
「プロパティ」は「生命体の所有物」だと思えばスッキリする。
なのに生命体の方をオブジェクトと言うのはおかしいよ。
クラスはその生命体の「家系」みたいなもんだな。
両親がいる必要がないから単細胞生物の分裂のほうが近いか、
クラスは「遺伝子情報」だな、これでかなりスッキリするじゃないか。
誤解を招かないか、
どっちかというと「モノ」じゃなくて仮想的な「生命体」じゃない?
だって動きを持ってるし、誕生して活動して死ぬわけじゃん。
「モノ」なのはコンストラクタやメソッドでやり取りされる「引数」
の方だろ。
「プロパティ」は「生命体の所有物」だと思えばスッキリする。
なのに生命体の方をオブジェクトと言うのはおかしいよ。
クラスはその生命体の「家系」みたいなもんだな。
両親がいる必要がないから単細胞生物の分裂のほうが近いか、
クラスは「遺伝子情報」だな、これでかなりスッキリするじゃないか。
938デフォルトの名無しさん
2017/07/05(水) 22:12:07.95ID:odMt6Ynp つまり美少女の母親もまた処女懐胎した美少女なわけだな
939デフォルトの名無しさん
2017/07/05(水) 23:48:29.76ID:s7u8/Pz4 まだいたの?
オブジェクトを無理やり現実に当てはめるやつ
オブジェクトを無理やり現実に当てはめるやつ
940デフォルトの名無しさん
2017/07/06(木) 00:07:02.68ID:/frq9FD5 >>939
生温く見守ろうぜ
生温く見守ろうぜ
941デフォルトの名無しさん
2017/07/06(木) 00:22:32.98ID:O802MHgz942デフォルトの名無しさん
2017/07/06(木) 01:33:28.30ID:Gh9vN0mU 擬人化しないと物事を理解できない人っているよな
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- ついに!大谷翔平2戦連発12号でMLBトップタイ浮上 直近5戦4発と量産モード [首都圏の虎★]
- 【立川・小学校侵入】男招集の母親は「金髪ヤンキー」酒ビン片手に暴れた男2人も「ヤンキー」…保護者・児童「いじめ聞いたことない」★2 [ぐれ★]
- 【インセル】小学生の列に車で突っ込み、電車内で包丁を振り回す…世界中で増えている 「非モテの独身男」による凶悪犯罪 [煮卵★]
- 【芸能】永野芽郁 主演映画の舞台挨拶に待ち受ける“地獄の空気” 前日に文春が第三弾の可能性も [冬月記者★]
- 【独自】元ジャンポケ斉藤、480円のバームクーヘンを700円で“転売”報道…製造元が直撃に語った“意外な真相” [ひかり★]
- 【国際】パキスタン、インドへの反撃開始 核兵器管理「国家指令本部」招集 ★2 [ぐれ★]
- 【暇空茜】トリップ・オブ・デスが実はトライ・パニッシャー・オブ・デスだと明かされた時は震えたよな [928194223]
- ワイ、白いうんちが出る
- 【悲報】チャリモメン、完全に逝く。スマホ運転1万2000円、歩道通行6000円、傘さし5000円、信号無視6000円、イヤホン5000円 [476167917]
- 👧とっとこ🐹メグ太郎の🏡
- 大谷、奇跡的スリーランホームランwwwwwwwwwwwwww [312375913]
- 【実況】博衣こよりのえちえちクロノクロス🧪 ★5