オブジェクト指向について、調べれば調べるほど疑問が募ります。低レベルで粗末な疑問かも知れませんが、ご教授願いたいです。
・データと振る舞いをまとめる?
まとめると何か良いことあるの?
ファイルあるいはモジュールにはまとまってるよね?
丁度いい単位があるのに、何故わざわざオブジェクトという概念を導入するの?
(Javaには1ファイル1クラスという文化あるらしいけど)
・カプセル化?
モジュールのimport, exportでも実現出来るよね?
(構造体などへのアクセスを制限できれば)
・ポリモーフィズム?
別にデータと振る舞いをまとめなくても実現出来るよね?
・モノのように扱いたい?
モノとして扱いたいときに扱えば良くない? なんでわざわざ全てをオブジェクトにするの?
探検
オブジェクト指向を教えてくれ!
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2021/03/16(火) 17:06:02.41ID:VhqTt8972デフォルトの名無しさん
2021/03/16(火) 17:14:31.50ID:mcRR7cz/ オブジェクトはクラスのことだとわかるけど
モジュールはなんだろ、パッケージのこと?
モジュールはなんだろ、パッケージのこと?
2021/03/16(火) 17:17:49.88ID:mbk3cz74
> ・データと振る舞いをまとめる?
> まとめると何か良いことあるの?
データが複数ある場合に、データごと振る舞いが
決まっているということが明確になります。
> ファイルあるいはモジュールにはまとまってるよね?
データと振る舞いがまとまっていません
> (構造体などへのアクセスを制限できれば)
それができないから、オブジェクト指向があります
> 別にデータと振る舞いをまとめなくても実現出来るよね?
データごとに振る舞いが変わるということが明確に表現できます。
> モノとして扱いたいときに扱えば良くない? なんでわざわざ全てをオブジェクトにするの?
関数もモノとして扱えば、モノに対して関数を割り当てることが出来ます。
> まとめると何か良いことあるの?
データが複数ある場合に、データごと振る舞いが
決まっているということが明確になります。
> ファイルあるいはモジュールにはまとまってるよね?
データと振る舞いがまとまっていません
> (構造体などへのアクセスを制限できれば)
それができないから、オブジェクト指向があります
> 別にデータと振る舞いをまとめなくても実現出来るよね?
データごとに振る舞いが変わるということが明確に表現できます。
> モノとして扱いたいときに扱えば良くない? なんでわざわざ全てをオブジェクトにするの?
関数もモノとして扱えば、モノに対して関数を割り当てることが出来ます。
2021/03/16(火) 17:20:32.30ID:vDQQ/7BC
用語に振り回されてプログラムできなくなるアホの典型例
2021/03/16(火) 17:22:59.10ID:mbk3cz74
たとえば 4980012345678901 という値は VISAのクレジットカード番号ですが、
これがただの文字列であれば、クレジットカード番号とした正しいかをチェックする
validate() メソッドがあるわけがないことがわかります。
4980012345678901 という値に対してクレジットカード番号というクラスを割り当てると
この値に対する validate() メソッド が存在することが容易に推測できます。
これがただの文字列であれば、クレジットカード番号とした正しいかをチェックする
validate() メソッドがあるわけがないことがわかります。
4980012345678901 という値に対してクレジットカード番号というクラスを割り当てると
この値に対する validate() メソッド が存在することが容易に推測できます。
6デフォルトの名無しさん
2021/03/16(火) 17:24:31.39ID:VhqTt897 >>2
オブジェクトとクラスごっちゃにして説明してすみません。
モジュールは大雑把にいうとファイルのことを指して言いました。Pythonでいうとfile, Rustでいうとmod module_name { }のことです。node.jsではfileです
オブジェクトとクラスごっちゃにして説明してすみません。
モジュールは大雑把にいうとファイルのことを指して言いました。Pythonでいうとfile, Rustでいうとmod module_name { }のことです。node.jsではfileです
7デフォルトの名無しさん
2021/03/16(火) 17:47:22.67ID:kqeQk11d >> 3
回答ありがとうございます。
> データと振る舞いがまとまっていません
では、何をまとめたものなのでしょうか?
> それができないから、オブジェクト指向があります
構造体へのアクセスを制限する機能があれば、メソッドをまとめなくとも十分なのでは?という意味です
> 関数もモノとして扱えば、モノに対して関数を割り当てることが出来ます。
曖昧な表現で申し訳ないです。モノというのは値のことではなく、メソッドを生やしたオブジェクトである必要があるのか?という意味です。
この疑問の答えは「データが複数ある場合に、データごと振る舞いが決まっているということが明確になります。」という回答に含まれると思いますが。
回答ありがとうございます。
> データと振る舞いがまとまっていません
では、何をまとめたものなのでしょうか?
> それができないから、オブジェクト指向があります
構造体へのアクセスを制限する機能があれば、メソッドをまとめなくとも十分なのでは?という意味です
> 関数もモノとして扱えば、モノに対して関数を割り当てることが出来ます。
曖昧な表現で申し訳ないです。モノというのは値のことではなく、メソッドを生やしたオブジェクトである必要があるのか?という意味です。
この疑問の答えは「データが複数ある場合に、データごと振る舞いが決まっているということが明確になります。」という回答に含まれると思いますが。
2021/03/16(火) 17:50:10.18ID:mbk3cz74
> では、何をまとめたものなのでしょうか?
データと振る舞い
> 構造体へのアクセスを制限する機能があれば、メソッドをまとめなくとも十分なのでは?という意味です
構造体へのアクセスを制限するには、データと振る舞いをまとめないと無理
> 曖昧な表現で申し訳ないです。モノというのは値のことではなく、メソッドを生やしたオブジェクトである必要があるのか?という意味です。
関数には名前という属性があります。どのような引数を渡せるかという情報を持っています。
明らかに関数以外の情報を持ったモノです
データと振る舞い
> 構造体へのアクセスを制限する機能があれば、メソッドをまとめなくとも十分なのでは?という意味です
構造体へのアクセスを制限するには、データと振る舞いをまとめないと無理
> 曖昧な表現で申し訳ないです。モノというのは値のことではなく、メソッドを生やしたオブジェクトである必要があるのか?という意味です。
関数には名前という属性があります。どのような引数を渡せるかという情報を持っています。
明らかに関数以外の情報を持ったモノです
9デフォルトの名無しさん
2021/03/16(火) 17:57:50.12ID:kqeQk11d >>5
回答ありがとうございます。
データに対して、「クレジットカード番号」という型を割り当て、
クレジットカード番号に対して処理できる関数を用意すれば解決なように思えるですが、
わざわざオブジェクトに付属するメソッドという概念を用いるメリットがわかりません。
回答ありがとうございます。
データに対して、「クレジットカード番号」という型を割り当て、
クレジットカード番号に対して処理できる関数を用意すれば解決なように思えるですが、
わざわざオブジェクトに付属するメソッドという概念を用いるメリットがわかりません。
2021/03/16(火) 18:05:30.02ID:Oe0YkKcP
2021/03/16(火) 18:06:43.78ID:Oe0YkKcP
オブジェクト指向はグループ分け
グループに分けないと管理が大変になる
オブジェクト指向はクラスを多数定義できるとも言いかえられるな
グループに分けないと管理が大変になる
オブジェクト指向はクラスを多数定義できるとも言いかえられるな
12デフォルトの名無しさん
2021/03/16(火) 18:12:46.48ID:kqeQk11d >>8
> 構造体へのアクセスを制限するには、データと振る舞いをまとめないと無理
たしかRustではプロパティにpubを修飾で制御できたような気がするんですが。
> 関数には名前という属性があります。どのような引数を渡せるかという情報を持っています。
明らかに関数以外の情報を持ったモノです
なるほど。確かにそのような情報をもってますね。失念してました。
しかし例に挙げられた名前や引数などはプロパティであってメソッドが必要ということにはならないような気がします。
>> では、何をまとめたものなのでしょうか?
>データと振る舞い
クラスにデータと振る舞いがまとまっているということでしょうか?私が聞きたいのは、ファイルやモジュールには何がまとまっているのかです。
> 構造体へのアクセスを制限するには、データと振る舞いをまとめないと無理
たしかRustではプロパティにpubを修飾で制御できたような気がするんですが。
> 関数には名前という属性があります。どのような引数を渡せるかという情報を持っています。
明らかに関数以外の情報を持ったモノです
なるほど。確かにそのような情報をもってますね。失念してました。
しかし例に挙げられた名前や引数などはプロパティであってメソッドが必要ということにはならないような気がします。
>> では、何をまとめたものなのでしょうか?
>データと振る舞い
クラスにデータと振る舞いがまとまっているということでしょうか?私が聞きたいのは、ファイルやモジュールには何がまとまっているのかです。
13デフォルトの名無しさん
2021/03/16(火) 18:15:22.40ID:kqeQk11d14デフォルトの名無しさん
2021/03/16(火) 18:20:05.64ID:kqeQk11d2021/03/16(火) 18:46:21.54ID:qZ3Xge1G
>>1
>・カプセル化?
クラスや構造体の内部要素へのアクセス制御のことを指してカプセル化と言ってるなら
そういう機能があればいいだけなのでオブジェクト指向じゃなくてもできる
>・ポリモーフィズム?
これもオブジェクト指向である必然性はないよ
他のやり方でも実現できる
>・モノのように扱いたい?
オブジェクト指向を使うのにモノのように扱いたいという動機はない
>・カプセル化?
クラスや構造体の内部要素へのアクセス制御のことを指してカプセル化と言ってるなら
そういう機能があればいいだけなのでオブジェクト指向じゃなくてもできる
>・ポリモーフィズム?
これもオブジェクト指向である必然性はないよ
他のやり方でも実現できる
>・モノのように扱いたい?
オブジェクト指向を使うのにモノのように扱いたいという動機はない
16デフォルトの名無しさん
2021/03/16(火) 18:59:52.68ID:kqeQk11d >>15
> クラスや構造体の内部要素へのアクセス制御のことを指してカプセル化と言ってるなら
そういう機能があればいいだけなのでオブジェクト指向じゃなくてもできる
なるほど。カプセル化は「クラスや構造体の内部要素へのアクセス制御」を行い、
それらにはメソッドを介して制限するのがカプセル化と思っていたんですが、そうではないのでしょうか?
(この文脈ではメソッドではなくモジュールから提供される関数を指していますが)
> これもオブジェクト指向である必然性はないよ
他のやり方でも実現できる
オブジェクト指向では、ついでにやってるという感じで良いでしょうか?
> オブジェクト指向を使うのにモノのように扱いたいという動機はない
良くネットにある解説記事ではそのように説明していたので、
何かそういう動機もあるのかと思ってました。少なくともそう考えてない方もいるのですね。
> クラスや構造体の内部要素へのアクセス制御のことを指してカプセル化と言ってるなら
そういう機能があればいいだけなのでオブジェクト指向じゃなくてもできる
なるほど。カプセル化は「クラスや構造体の内部要素へのアクセス制御」を行い、
それらにはメソッドを介して制限するのがカプセル化と思っていたんですが、そうではないのでしょうか?
(この文脈ではメソッドではなくモジュールから提供される関数を指していますが)
> これもオブジェクト指向である必然性はないよ
他のやり方でも実現できる
オブジェクト指向では、ついでにやってるという感じで良いでしょうか?
> オブジェクト指向を使うのにモノのように扱いたいという動機はない
良くネットにある解説記事ではそのように説明していたので、
何かそういう動機もあるのかと思ってました。少なくともそう考えてない方もいるのですね。
2021/03/16(火) 19:00:47.10ID:Oe0YkKcP
オブジェクト指向じゃなくても他のやり方で出来る
→他のやり方でやってる言語は?
→ない、なぜなら他のやり方でできるが、それは冗長で使いにくいから
→つまりやりたいことをやる場合に、オブジェクト指向言語が一番スマートな構文を持っている
→他のやり方でやってる言語は?
→ない、なぜなら他のやり方でできるが、それは冗長で使いにくいから
→つまりやりたいことをやる場合に、オブジェクト指向言語が一番スマートな構文を持っている
2021/03/16(火) 19:01:37.10ID:Oe0YkKcP
C言語を使う理由は?アセンブラでも出来るのでは?
みたいな話
頑張るぐらいなら、オブジェクト指向を使う
みたいな話
頑張るぐらいなら、オブジェクト指向を使う
2021/03/16(火) 20:21:18.73ID:ZppluVpF
全部スタティックなメソッドで作ることを考えてみると少しは分かるかな?
20デフォルトの名無しさん
2021/03/16(火) 20:25:15.38ID:sABqeeBA21デフォルトの名無しさん
2021/03/16(火) 20:26:53.20ID:sABqeeBA >>19
メソッドにすることで名前空間を汚染しないよね?ということですか?
メソッドにすることで名前空間を汚染しないよね?ということですか?
22デフォルトの名無しさん
2021/03/16(火) 20:27:46.73ID:sABqeeBA >>21
い
い
23デフォルトの名無しさん
2021/03/16(火) 20:30:01.10ID:sABqeeBA >>21
あ、staticメソッドなら全然違うか。
あ、staticメソッドなら全然違うか。
2021/03/16(火) 20:36:56.64ID:VN15UowM
"It is better to have 100 functions operate on one data structure than to have 10 functions operate on 10 data structures." - Alan J. Perlis
25デフォルトの名無しさん
2021/03/16(火) 20:54:13.16ID:sABqeeBA >>24
どういう意図でこの投稿したんですか?
どういう意図でこの投稿したんですか?
2021/03/16(火) 20:57:53.35ID:qZ3Xge1G
>>16
内部要素へのアクセス制御を指してカプセル化という人もいれば
データと振る舞いをオブジェクト等の1つの言語要素にまとめることをカプセル化という人もいる
https://en.wikipedia.org/wiki/Encapsulation_(computer_programming)
ポリモーフィズム自体はオブジェクト指向で書く場合でもそうでない場合でもほぼ必須の機能
オブジェクト指向の場合はいろいろあるポリモーフィズムのやり方のうちSubtypingを多く使うというだけ
内部要素へのアクセス制御を指してカプセル化という人もいれば
データと振る舞いをオブジェクト等の1つの言語要素にまとめることをカプセル化という人もいる
https://en.wikipedia.org/wiki/Encapsulation_(computer_programming)
ポリモーフィズム自体はオブジェクト指向で書く場合でもそうでない場合でもほぼ必須の機能
オブジェクト指向の場合はいろいろあるポリモーフィズムのやり方のうちSubtypingを多く使うというだけ
2021/03/16(火) 21:08:00.17ID:A0PxCKQ0
データとそのデータの処理をひとまとめにしたのがオブジェクト指向
この方法論を使うと大規模プログラミングがよりよくなるという強い信仰がある
宗教に近いかもな
他に変わる方法もないし
なんとなく大規模プログラミングを書くと破綻することはよく知られている
万能ではないけど
いくらでもうまくいかない例は挙げられている
この方法論を使うと大規模プログラミングがよりよくなるという強い信仰がある
宗教に近いかもな
他に変わる方法もないし
なんとなく大規模プログラミングを書くと破綻することはよく知られている
万能ではないけど
いくらでもうまくいかない例は挙げられている
2021/03/16(火) 21:09:27.27ID:qZ3Xge1G
データを振る舞いをまとめたオブジェクトを中心的な単位要素としてソフトウェアを作る/捉えるのがオブジェクト指向
ソフトウェアの要素をまとめる方法の一つなので他の方法に比べたアドバンテージもあればディスアドバンテージもある
例えば画面上のボタンもテキストもリンクもタイトルバーもみんなクリック可能で
クリック時にはそれぞれ別の動きをするとした場合に下記のようなAPIに整理するのがオブジェクト指向的
button.click()
text.click()
link.click()
titilebar.click()
clickableならそれぞれの型がclickメソッドを持ってる(clickメッセージに応答できる)
新しくタブをクリックできるようにする場合に他の要素に影響を与えずtab.click()を実装できる
逆にtouch()にも反応するようにするためにはそれぞれの型にtouchメソッドの実装が必要
ソフトウェアの要素をまとめる方法の一つなので他の方法に比べたアドバンテージもあればディスアドバンテージもある
例えば画面上のボタンもテキストもリンクもタイトルバーもみんなクリック可能で
クリック時にはそれぞれ別の動きをするとした場合に下記のようなAPIに整理するのがオブジェクト指向的
button.click()
text.click()
link.click()
titilebar.click()
clickableならそれぞれの型がclickメソッドを持ってる(clickメッセージに応答できる)
新しくタブをクリックできるようにする場合に他の要素に影響を与えずtab.click()を実装できる
逆にtouch()にも反応するようにするためにはそれぞれの型にtouchメソッドの実装が必要
2021/03/16(火) 21:24:56.48ID:qZ3Xge1G
click(button)
click(text)
click(link)
click(titlebar)
オブジェクト指向的じゃなく上記のように実装した場合は
受け取る型によってclick関数を多重定義したりclick関数内部で分岐が必要
それにclick関数がどの名前空間・どのモジュールに属するかを別途検討してそれを覚えておかないといけない
click(text)
click(link)
click(titlebar)
オブジェクト指向的じゃなく上記のように実装した場合は
受け取る型によってclick関数を多重定義したりclick関数内部で分岐が必要
それにclick関数がどの名前空間・どのモジュールに属するかを別途検討してそれを覚えておかないといけない
2021/03/16(火) 21:28:31.02ID:qZ3Xge1G
クラスやオブジェクトの1箇所(1つの型)にデータと振る舞いをまとめるんじゃなく
Traitとか型クラスと呼ばれるもの(HaskellのType Class, RustやGoのTrait, ClojureやElixirのProtocol等)を使う方法もある
Traitは振る舞いの型をデータの型とは分けて定義して、特定のデータ型に対する振る舞いの実装を書いて紐付けることで
関数の多重定義や関数内部で分岐を不要にできる(Subtypingとは別の形のポリモーフィズム)
Traitとか型クラスと呼ばれるもの(HaskellのType Class, RustやGoのTrait, ClojureやElixirのProtocol等)を使う方法もある
Traitは振る舞いの型をデータの型とは分けて定義して、特定のデータ型に対する振る舞いの実装を書いて紐付けることで
関数の多重定義や関数内部で分岐を不要にできる(Subtypingとは別の形のポリモーフィズム)
31デフォルトの名無しさん
2021/03/16(火) 21:38:25.74ID:6cgwc1EV >>26
初耳でした。カプセル化と言っても意味に2つの流儀があるのですね。
> オブジェクト指向の場合はいろいろあるポリモーフィズムのやり方のうちSubtypingを多く使うというだけ
本筋からそれるかもしれませんが、なぜオブジェクト指向ではSubtypingを多く使うのでしょうか?
初耳でした。カプセル化と言っても意味に2つの流儀があるのですね。
> オブジェクト指向の場合はいろいろあるポリモーフィズムのやり方のうちSubtypingを多く使うというだけ
本筋からそれるかもしれませんが、なぜオブジェクト指向ではSubtypingを多く使うのでしょうか?
32デフォルトの名無しさん
2021/03/16(火) 21:48:05.15ID:6cgwc1EV >>27
オブジェクト指向は信仰的な要素も強いのですね
オブジェクト指向は信仰的な要素も強いのですね
2021/03/16(火) 21:54:18.97ID:V+qRx+gd
Cの時代
mallocしたメモリのサイズにユーザーが直接アクセスすることはできなかった
それはンパイラによって実装が秘匿されつねに整合性が保たれた
名前すらなかった昔からオブジェクトはモノリスのごとく存在したのだ
mallocしたメモリのサイズにユーザーが直接アクセスすることはできなかった
それはンパイラによって実装が秘匿されつねに整合性が保たれた
名前すらなかった昔からオブジェクトはモノリスのごとく存在したのだ
34デフォルトの名無しさん
2021/03/16(火) 22:00:31.83ID:6cgwc1EV >>28
GUIやゲームを作る場合、オブジェクト指向が感覚的にですがしっくりくる感じがしますね。(ゲームは作ったことないですが)
なるほど、オブジェクト指向的アプローチと関数型アプローチには1例には過ぎませんが、そのような違いがあるのですね。
GUIやゲームを作る場合、オブジェクト指向が感覚的にですがしっくりくる感じがしますね。(ゲームは作ったことないですが)
なるほど、オブジェクト指向的アプローチと関数型アプローチには1例には過ぎませんが、そのような違いがあるのですね。
35デフォルトの名無しさん
2021/03/16(火) 22:06:51.87ID:6cgwc1EV >>30
パラメータ多相性ですよね。
個人的にはトレイトと型クラスのような多相性の方が自然に思えたので、
なあなあにしていたオブジェクト指向にはどんなメリットがあるのだろう、
オブジェクト指向の方が綺麗なプログラムが書ける場合があるのか?と思い調べ始めました。
パラメータ多相性ですよね。
個人的にはトレイトと型クラスのような多相性の方が自然に思えたので、
なあなあにしていたオブジェクト指向にはどんなメリットがあるのだろう、
オブジェクト指向の方が綺麗なプログラムが書ける場合があるのか?と思い調べ始めました。
2021/03/16(火) 23:02:34.82ID:ZppluVpF
難しく考えすぎじゃね?
例えばC言語時代ならファイル操作はFILE構造体がファイル操作の中身だった訳だが
C++でクラスに設計しなおすとFileクラスでファイル操作の実装等はブラックボックスで良くなる
これだけだと簡単でそんなに恩恵無いとなるが
次にCSVファイルをもっと簡単に扱いたいなとなるとすると、Fileクラスにgetcsvやputcsvみたいな
csvの1行の操作メソッドを追加してもいいけどあくまでFileクラスなので
CsvFileクラスを新設し、Fileクラスから継承または内包しgetcsvやputcsvを実装した方が
スマートだと思うが、この辺の話が理解出来ないと中々難しいような気がする
例えばC言語時代ならファイル操作はFILE構造体がファイル操作の中身だった訳だが
C++でクラスに設計しなおすとFileクラスでファイル操作の実装等はブラックボックスで良くなる
これだけだと簡単でそんなに恩恵無いとなるが
次にCSVファイルをもっと簡単に扱いたいなとなるとすると、Fileクラスにgetcsvやputcsvみたいな
csvの1行の操作メソッドを追加してもいいけどあくまでFileクラスなので
CsvFileクラスを新設し、Fileクラスから継承または内包しgetcsvやputcsvを実装した方が
スマートだと思うが、この辺の話が理解出来ないと中々難しいような気がする
2021/03/16(火) 23:12:11.25ID:Oe0YkKcP
オブジェクト指向だと
「ファイル」を「開く」
手続き型だと
「ファイルオープン」で「ファイル」を開く
頭痛が痛いみたいに冗長な表現になる
「ファイル」を「開く」
手続き型だと
「ファイルオープン」で「ファイル」を開く
頭痛が痛いみたいに冗長な表現になる
38デフォルトの名無しさん
2021/03/17(水) 00:37:30.95ID:RHLlHQqy >>36
たしかに継承はオブジェクト指向独自の機能な気がしますね。オブジェクト指向でないとFileに対する関数を同じ実装でもCsvFileに再度実装する必要があるので。
内包(合成, コンポジション)の場合は、ほぼ同等ですが。
ただ最近は継承の機能が無い言語も出てくるくらいには, なかなか扱いづらい機能なので、そこら辺はどうなんでしょうか?
たしかに継承はオブジェクト指向独自の機能な気がしますね。オブジェクト指向でないとFileに対する関数を同じ実装でもCsvFileに再度実装する必要があるので。
内包(合成, コンポジション)の場合は、ほぼ同等ですが。
ただ最近は継承の機能が無い言語も出てくるくらいには, なかなか扱いづらい機能なので、そこら辺はどうなんでしょうか?
39デフォルトの名無しさん
2021/03/17(水) 00:57:26.31ID:RHLlHQqy >>37
なるほど確かに名前が衝突しやすいので冗長になりがちな所はありますね。
データと振る舞いをまとめるメリットの1つに思えます。
(ただこの場合はopen(file)でもそこまで問題ない気がします。getとかは冗長になりやすそうです)
なるほど確かに名前が衝突しやすいので冗長になりがちな所はありますね。
データと振る舞いをまとめるメリットの1つに思えます。
(ただこの場合はopen(file)でもそこまで問題ない気がします。getとかは冗長になりやすそうです)
40デフォルトの名無しさん
2021/03/17(水) 15:06:30.73ID:3LIDSRD/ むかしは組み込み関数や簡単なライブラリレベルみたいなものまで
いちいちプログラマが毎回書いてて
「めんどくせえから再利用したい…っつかできないと大規模プログラムできねぇ」と
「中の変数類をどっかわけのわからないとこからアクセスして弄るのは
プログラムの修正方法として手軽だけど、これやってるとわけがわからなくなるわ!」
がどんどん出てきたので
・入口出口を決めてブロック化しようぜ
・ブロック単位で再利用する言語的なしくみを取り入れようぜ
から、さらに
・「ブロックにAを入れてBが出る」じゃやっぱりなんだかわかんなくなるじゃねーか
ここにも人間が読んでわかるクッション入れて
「ファイルを読み込むクラス.読み込む(ファイル名)」とか出入り口書こうぜ
ってなった…あたりがまだ現行かなぁ…
とにかく「俺がわかればいいんだよめんどくせえ!」ってプログラマの思惑と
「それじゃわかんなくなんだよ!」がずっとせめぎあって常に中途半端なとこに仕様がある感じ。
30年以上前のObjctive-Cの「で、おまえはなにができるオブジェクトなんだっけ?」って
動的問い合わせとか「そんなの“実用”じゃ要らん!」ってモダン言語()じゃ削られるしw
いちいちプログラマが毎回書いてて
「めんどくせえから再利用したい…っつかできないと大規模プログラムできねぇ」と
「中の変数類をどっかわけのわからないとこからアクセスして弄るのは
プログラムの修正方法として手軽だけど、これやってるとわけがわからなくなるわ!」
がどんどん出てきたので
・入口出口を決めてブロック化しようぜ
・ブロック単位で再利用する言語的なしくみを取り入れようぜ
から、さらに
・「ブロックにAを入れてBが出る」じゃやっぱりなんだかわかんなくなるじゃねーか
ここにも人間が読んでわかるクッション入れて
「ファイルを読み込むクラス.読み込む(ファイル名)」とか出入り口書こうぜ
ってなった…あたりがまだ現行かなぁ…
とにかく「俺がわかればいいんだよめんどくせえ!」ってプログラマの思惑と
「それじゃわかんなくなんだよ!」がずっとせめぎあって常に中途半端なとこに仕様がある感じ。
30年以上前のObjctive-Cの「で、おまえはなにができるオブジェクトなんだっけ?」って
動的問い合わせとか「そんなの“実用”じゃ要らん!」ってモダン言語()じゃ削られるしw
2021/03/17(水) 15:16:49.85ID:VBEJtWnA
20年ぐらい前に学生の頃に聞いたエージェント指向
初めて聞いた時に、オブジェクト指向にメタ情報つけただけじゃん
メタ情報つけた所で、問題解決できるオブジェクトが存在してなきゃ意味ないじゃん
とか思っていたが、やっぱり流行らなかったな
初めて聞いた時に、オブジェクト指向にメタ情報つけただけじゃん
メタ情報つけた所で、問題解決できるオブジェクトが存在してなきゃ意味ないじゃん
とか思っていたが、やっぱり流行らなかったな
2021/03/17(水) 15:29:29.24ID:kGlpGNRi
open(file) と file.open() は書き順が違うだけで意味は同じ。
文法的にはopenは動詞、fileは対象語。
対象語は英語でいうとオブジェクト。
file.open() は対象語が先に来るからオブジェクト指向で良いかと
文法的にはopenは動詞、fileは対象語。
対象語は英語でいうとオブジェクト。
file.open() は対象語が先に来るからオブジェクト指向で良いかと
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【実況】博衣こよりのえちえち歌枠🧪
- 高市「発言は撤回しない。謝罪もするな。外務省局長!任せたぞ。」👈なにをさせたかったの?😲 [826239858]
- 【速報】51歳まで自衛隊になれるように法改正ww [347751896]
- 外務省局長、よくわからないまま帰国へ [834922174]
- 自分に自信がない女の子、陽キャ美容室で80cmのエクステを付けた結果wwwwwwwwwwwwwwwwwww [329329848]
