オブジェクト指向の「クラス」ってなんなの?

1 ::2019/10/09(水) 20:32:48.20 ID:S2FDAIgl0.net ?PLT(12015)
http://img.5ch.net/ico/folder1_03.gif
インタビューア(以下「I」): あなたがソフトウェアデザインの世界を一変させてから何年にもなる。振り返ってみて、感想は。

Stroustrup(以下「S」): 実はあなたがここへ来る直前、当時のことを思い出していたんだ。
おぼえているかな。
誰もが C 言語を使っていたけど、問題はみんな結構うまくコーディングしていたことだった。
大学も C 言語を教えるのがうまくなっていたしね。驚
異的な割合で有能な――「有能」という言葉は強調しておきたい――卒業生を量産していた。
それが問題の原因だったんだ。

I: 問題?

S: そう、問題だったんだ。誰もが COBOL を使っていた頃のことはおぼえてる?

I: もちろん。僕もそうだった。

S: はじめの頃、COBOL ができる人間は神のような存在だった。給料も高かったし、王侯貴族のような扱いだった。

I: いい時代だったなあ。

S: うん。で、どうなった? 嫌気がさした IBM が何百万ドルもつぎ込んでプログラマを養成したものだから、COBOL プログラマは「一盛り十円」になってしまった。

I: だから僕は辞めたんだ。たった1年の間に給料が急落して、とうとうジャーナリストの方が給料がよくなったんだ。

S: そのとおりだ。で、当時は C プログラマにも同じことが起こっていたんだ。

I: なるほど。でも、要するに何が言いたいのかな。

S: ある日、オフィスにいたときに、ある策略を思いついたんだ。バランスを少し回復させる策略をね。
「プログラマが余るなんてことが絶対にありえないくらい、複雑でおぼえにくい言語があったらどうなるかな」ってね。
実は、この考えの一部は X10――例の X Window の――から頂いたんだ。
あれはひどいグラフィックシステムでね、Sun 3/60とかでないと動かなかった。
ばかばかしいくらい複雑な構文規則とか、わかりにくい関数とか、疑似オブジェクト指向的な構造とか、僕がほしいと思う要素は全部揃っていたんだよね。
今でさえ、生の X Window コードを書く人間なんていない。
正気を保つには Motif を使うしかないんだ。

https://monobook.org/wiki/Bjarne_Stroustrup_%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%93%E3%83%A5%E3%83%BC

2 ::2019/10/09(水) 20:33:15.26 ID:0/HiJ3yG0.net

クラスだろ

227 ::2019/10/10(木) 07:58:48.11 ID:54W48DwX0.net

オブジェクト指向なんて別に無理して理解する必要ない。
もう古いし。

68 ::2019/10/09(水) 21:05:36.75 ID:L9v1hGJv0.net

>>1にC++のプログラマーは時給70ドルって書いてあるけど今はどうなの?

237 ::2019/10/10(木) 09:15:21.53 ID:MuZhY+mY0.net

>>231
それもなぁ
大半のシステム開発なんてまず1点物だし
再利用なんかまずしないから
フレームワーク開発してる連中にまかせてりゃいい話じゃね

189 ::2019/10/10(木) 00:14:17.74 ID:rVYhCkCx0.net

クラスを使うことのメリットって何?

199 ::2019/10/10(木) 01:04:26.83 ID:H9e+aBJN0.net

デンジャラス度だろ

52 ::2019/10/09(水) 20:50:31.63 ID:c//ekrjz0.net

逆恨み反日指向の「クラス」

35 ::2019/10/09(水) 20:43:41.56 ID:HCmKBOxF0.net

抽象化した入れ物のことだよ
インスタンスは、クラスを具体化したもの

20 ::2019/10/09(水) 20:37:02.71 ID:y8xN4Z9h0.net

Rubyの人が出てくる前に帰ろうぜ

147 ::2019/10/09(水) 22:56:08.51 ID:eYk2G6DN0.net

ニミッツ級航空母艦の 級

101 ::2019/10/09(水) 21:47:21.08 ID:VhoeWxD40.net

上級国民の「級」がクラス

290 ::2019/10/11(金) 11:37:38.69 ID:Nspdx39H0.net

デカンショデカンショで半年クラス
後の半年ゃ寝てクラス

104 ::2019/10/09(水) 21:54:57.37 ID:gO2NjjJ30.net

X Windowとか Motif とかいつの時代の話しだよw

200 ::2019/10/10(木) 01:05:24.11 ID:AW4BnQFe0.net

>>11
俺もこれしかわからなかったわ

70 ::2019/10/09(水) 21:05:46.15 ID:4coECban0.net

>>54
class Cat {
public enum Sex {
male,
female,
tamanuki,
hininzumi
};
}

49 ::2019/10/09(水) 20:49:22.42 ID:rJS//EEU0.net

理解が曖昧だわ
オブジェクトの種類がクラスで、変数に対しての型定義みたいなもんだっけ

138 ::2019/10/09(水) 22:36:20.98 ID:unVIYP0f0.net

クラスってさ、要は関連する処理をまとめたものでしよ?
文字を受けとる
文字を格納(変数)
文字を出力
文字を削除
みたいな?

71 ::2019/10/09(水) 21:07:20.55 ID:4coECban0.net

>>67
段取りも方針作成も出来ずに丸投げする奴の多いことよ

191 ::2019/10/10(木) 00:23:52.30 ID:IXnPzDhQ0.net

保守しやすさとチーム開発のしやすさじゃないですかね

83 ::2019/10/09(水) 21:23:19.13 ID:LJX2iFXM0.net

さんねええええええん
びいぐみいいいいい

211 ::2019/10/10(木) 02:51:40.68 ID:lF3+k0y00.net

>>198
モデルを実体化したもの。
戦車を破壊するゲームでは、
戦車クラスが設計図で、戦車1、戦車2、戦車3・・・みたいに戦車の実体(インスタンス)作って敵の戦車がうじゃうじゃ出来る感じ。

96 ::2019/10/09(水) 21:41:38.57 ID:Wl+GPmhl0.net

>>1
X-Windowプログラミング専門学校でやったなぁ
それまでX68kしか触ったことなかったからイベントドリブンの考え方がよく分からなかった

98 ::2019/10/09(水) 21:42:16.56 ID:nZ4h9H3K0.net

エンティティ

188 ::2019/10/10(木) 00:07:54.84 ID:DNZbCW4o0.net

>>175
こういうのが混じるからな。
末端は賢い人が作ったクラスライブラリだけ使っとけばいいと思うよ。

22 ::2019/10/09(水) 20:37:59.86 ID:Xoi8+EhR0.net

オブジェクトの設計図

50 ::2019/10/09(水) 20:49:48.47 ID:4coECban0.net

>>41
で上の例のニミッツクラスのインスタンスがコンストラクト時にshipnameジョージワシントンとか入れてジョージワシントンになるわけ

新規ならトップダウン設計でいいが、
既存の物をモデリングするなら
タマとミケが似てるから猫クラス作って
猫クラスと虎クラスの共通点多いから猫科アブストラクトクラス作るとかな

225 ::2019/10/10(木) 07:37:40.35 ID:WO7M5KDB0.net

>>157
VBA(VB6)のクラスは継承ができない。
モジュールとの違いはインスタンス化しないと実行できないから一応メモリの節約にはなる。
モジュールはstaticクラスみたいなもんだな。

170 ::2019/10/09(水) 23:32:12.28 ID:lxwbmvmL0.net

>>125
別々でも同じことはできるんだけど、ある構造体をどの関数が使ってるか正確に把握してないとバグの原因になる。
1つの構造体を複数の関数が使っていたとして、どれかの関数が構造体の仕様を少し変更したいと思っても
変更すると他の関数が正常に動かなくなる可能性があるから手直しに神経を使う。
逆に、必ず1つの構造体に1つの関数しかアクセスしないのなら1つにまとめた方が保守しやすい。
1つのクラス内に両方書いてあるからわかりやすいわけだ。
クラスの外からはその構造体にアクセスできなくしてしまえば余計なことを考えなくて済む。
つまりバグが出にくくなるということになる。

11 ::2019/10/09(水) 20:35:03.35 ID:AxlVq7Og0.net

SCPかよ

55 ::2019/10/09(水) 20:53:18.61 ID:yXX0yqXo0.net

1組とか2組とかだろ
クラス替えはドキドキした

136 ::2019/10/09(水) 22:29:29.10 ID:wrAwCPLf0.net

>>133
継承は現場では全く使わんので気にしなくていいぞ
仕様変更入ったら破綻するだけのゴミ

232 ::2019/10/10(木) 08:52:17.30 ID:4/9Hx9w50.net

形而上学でいうところの実体だよ

60 ::2019/10/09(水) 20:59:02.46 ID:Sg+RMN//0.net

がんばれゲイツ君とか懐かしいな

273 ::2019/10/10(木) 23:19:59.45 ID:hWbwKOBU0.net

男.喜ばす(女)
男.喜ばす(男)

女.喜ばす(女)
女.喜ばす(男)

喜ばすメソッドは引数によって異なる
男クラス、女クラスのベースクラスは人間クラス
人間クラスは様々な喜ばすメソッドを知っている

男と女の喜ばすメソッドは知っているが、兎は知らないので追加する
こうして喜ばすメソッドは肥大化していく

209 ::2019/10/10(木) 02:33:34.67 ID:smyFAmfG0.net

適度にカプセル化・ブラックボックス化できれば手法は何でもいいよ
マイクロサービスに分割してAPIで疎結合にするのも大きい単位でのカプセル化・ブラックボックス化

244 ::2019/10/10(木) 10:10:08.72 ID:bWNAcuXG0.net

オブジェクト指向でなぜつくるのか
を今日買いに行くぜ。

126 ::2019/10/09(水) 22:17:46.50 ID:TNHlSc/O0.net

クラスも自分で書いたステップと言って実績に含めてたら出来る男と勘違いされた

122 ::2019/10/09(水) 22:13:27.99 ID:H2vdW8u80.net

オブジェクト指向てオジさんの青春って感じでキモい
関数型のパラダイムに乗り遅れちゃったみたいな

87 ::2019/10/09(水) 21:29:17.98 ID:BZIGru8a0.net

セイバー
アーチャー
ランサー
ライダー
キャスター
アサシン
バーサーカー

250 ::2019/10/10(木) 10:43:23.60 ID:KpY0AITv0.net

黒い鳥のことだろ

218 ::2019/10/10(木) 06:37:08.16 ID:68vHgQ9l0.net

人格的に立派な人、立ち居振る舞いが洗練されてる人をhe is a class. he is classy. って言うね

100 ::2019/10/09(水) 21:43:15.78 ID:5ATV1WFV0.net

Javaも多重継承できればなぁ

43 ::2019/10/09(水) 20:46:47.58 ID:y6V2BbGI0.net

 
自由度が高いからな

データを保存するだけのクラスもあるし、そのデータを操作するためのLogicが書かれたクラスもある

Viewへの参照を保持するクラスもあれば、そのViewに値を渡す方法としてMVCやらMVPやらが存在する。

Controllerはあくまでデータクラスを操作するためのもので、PresenterはロジックとViewを管理する。

このPresenterをViewを担当するxmlに直接操作させるようにしたものがMVVM

そしてModelとViewのこの危うい順序の関係をModelからViewへとしたのがFLUX

これらすべてクラス

インターフェースは何かオーバライドするためのもの程度の認識のやつは触らないで

  

160 ::2019/10/09(水) 23:17:59.71 ID:MCmxNCUe0.net

>>6
結局の所、ほとんどのことは
理解しようとするよりも
実際に使いながら、
ああ、そうかと思えて腑に落ちる体験が
必要なのだと思う。

267 ::2019/10/10(木) 14:56:20.16 ID:FlXvp7Bq0.net

>>1
プログラムを中心に考えるのではなく、
データを中心に考えるのがオブジェクト指向。

転じて、扱うデータの型(構造体)と、
そのデータに対して行う処理(入力、変更、削除、参照など)のプログラム全部を
1セットの部品にまとめたのがクラス。

て理解で合ってたっけ。

46 ::2019/10/09(水) 20:48:38.95 ID:Q7InuVsi0.net

1993

119 ::2019/10/09(水) 22:10:14.14 ID:36dm4hIt0.net

自分の振る舞い方を知っている変数の枠組み?

53 ::2019/10/09(水) 20:50:46.46 ID:mMpiO9Xx0.net

夏の日の1993って果てしなくゲスな曲だよな

78 ::2019/10/09(水) 21:15:37.22 ID:N63S3hWZ0.net

事務職員にとっての
エクセルの雛形ワークシートみたいなもんだよ

272 ::2019/10/10(木) 23:07:21.35 ID:BBtzNYxm0.net

go書いてみろよ、どんだけ大規模モノリシックな旧態依然システムに向かないかわかるから

258 ::2019/10/10(木) 12:09:56.00 ID:qp6BAp9x0.net

日本はカスタム業務システムが多くてクラス化のメリットあんまなくね?

234 ::2019/10/10(木) 08:54:58.53 ID:b3rXWjgv0.net

ハイジの友達

115 ::2019/10/09(水) 22:05:54.93 ID:NGfS2gZU0.net

クラスはDNAみたいなもんだ
インスタンスがRNAな
細胞が小さなオブジェクトでメッセージを送りあって出来るのがヒトってわけ

137 ::2019/10/09(水) 22:34:13.64 ID:vFbXf4zj0.net

あんまり難しく考えんでもclassは人間、instanceはお前らと考えればいいんじゃね

222 ::2019/10/10(木) 07:19:40.63 ID:Q0a4/pXW0.net

スタティックおじさんの共通点は低学歴

239 ::2019/10/10(木) 09:27:25.46 ID:r74t4CkF0.net

>>217
C++では当たり前のように一体化されてるけど
Cだとコンストラクタとデストラクタが自動で実行されない
末端のコーダーが忘れずに呼び出す必要があった
漏れが1箇所でもあれば破綻する

107 ::2019/10/09(水) 21:56:32.61 ID:RAJD1L3n0.net

ケテル

288 ::2019/10/11(金) 10:35:34.71 ID:TaPYmD/Y0.net

コピー出来て機能も追加出来る関数の集まりって認識じゃダメ?

249 ::2019/10/10(木) 10:42:45.52 ID:/U7GGKz60.net

GOTOでそこら中に飛び回って制御が追いにくい → 構造化プログラミング

データとロジックが別々に管理されているので追いにくい → オブジェクト指向

72 ::2019/10/09(水) 21:08:42.81 ID:OUnfg4D/0.net

Pythonを初めてできそうな気がしたときに、やっぱり自分には向いていないと気づかせてくれる仕組み

66 ::2019/10/09(水) 21:05:15.39 ID:3XOETWT80.net

>>28
インスタンスはメモリに展開される

94 ::2019/10/09(水) 21:40:37.36 ID:YBgrz9JD0.net

クラスはポケットモンスター
インスタンスはピカチュウ

クラスはヒト
インスタンスはイッチ

クラスは犬
インスタンスはガイジーヌ

298 ::2019/10/11(金) 22:27:39.53 ID:8r1q/Es30.net

VBAのクラスに継承がないのはまだ許せる
コンストラクタに引数渡せないのが糞

109 ::2019/10/09(水) 21:57:36.44 ID:Og/PksUI0.net

結局コピペした方が簡潔で100倍速かったという試行産物

140 ::2019/10/09(水) 22:49:31.06 ID:t0hbFnLp0.net

OSF/Motif

216 ::2019/10/10(木) 05:57:50.54 ID:JOGya6bI0.net

「オブジェクト指向」のことを論じても分からなくなるだけ。
「オブジェクト指向プログラミング」か「オブジェクト指向設計」か切り分けて考えるべし。

275 ::2019/10/11(金) 00:02:55.68 ID:hIeacpZ+0.net

日本語は、オブジェクト指向と相性がいいはず。
フォルダを右クリックすると出てくるのが
フォルダクラスの(公開)メソッドで、
フォルダを削除する
フォルダをコピーする
フォルダを開く
フォルダを移動する などなど
この場合、
「を」だから目的語は「フォルダ」
なのに、「が」〜する。みたいなメソッドを作っちゃうと訳が分からなくなる。

264 ::2019/10/10(木) 13:05:23.93 ID:OsqAcRvn0.net

>>252
例えばプログラムAと似たようなプログラムBを新たに作るときに
従来型であれば物理的にソースをコピーして作るが
オブジェクト指向であればプログラムBは独自の処理だけ作って後はプログラムAの
を再利用したりと。業務処理であればあまりない
納得できないし理不尽だろうが納得するしかないw

63 ::2019/10/09(水) 21:03:29.65 ID:PpopIUqB0.net

>>59
みんなAIもてはやすけどさ、あれって商売にならないんだよね。
期待した機能が実現できるかどうかすら誰も保証が出来ない代物だからなぁ

198 ::2019/10/10(木) 01:02:02.86 ID:NEfWZxAE0.net

そんなことよりもインスタンスを分かりやすく教えてくれ

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください




RSS


%d