業務でにわかプログラミングやってんだが「クラス」ってこれ必要か?関数でいいじゃん
■ このスレッドは過去ログ倉庫に格納されています
functionで出来ることをイキってクラスとか難しくしてんの?
NewとかOverridesとかInheritsとか覚えれんわ使いも千野に
NexSeed、小中高生向けのプログラミング×英語スクール「ヴィムテックキャンパス by NexSeed」を9月3日に開校
https://edtechzine.jp/article/detail/1271 >>349
ファイルのキャッシュとかの恩恵の説明が無いと意味がわからないんじゃないかな 「継承」ってのが未だによくわからん。
いや、概念は分かるんだけど、使い所がわからんと言うか、一度も使ったこと無い・・・ >>386
同じものを2回作るのは面倒
作られた資源を再利用するような考え
しかも、序列があるので構造的に綺麗
ごめん 説明する自信ない 継承はあまり良いパターンじゃないと思うぞ
is-aよりhas-aにしたほうが良い 俺のわかりやすいポインタ
◆ポインタがない場合の荷物配送
倉庫→俺んち→転売先
◆ポインタがある場合の荷物配送
俺→倉庫に「転売先の住所(ポイント)はここ」と教える
倉庫→転売先 >>386
MFCで言うなら
CDialog がダイアログの表示、移動、閉じるとかの基本的な動作を持つクラス
class CXXXDlg : public CDialog
で上記のダイアログの基本的な動作を持ちつつ、必要な処理を付け加えることができる Servletを使うと、問答無用でHttpServletを継承させられることになるな
習うより慣れよとはいうが、
わからないなりにいじってみるってのもやり方としてはアリなんじゃね >>386
アクションとかシューティングゲーム作るときに便利 >>386
見積書と受注書に共通する処理はないか?
あるならそれは、個別に定義するのではなく、
じょういクラスの帳票に定義して継承すれば良いのではないか? >>386
聖闘士クラスってのがあって、
ブロンズやシルバー、ゴールドは所詮そこから派生したもの。なら聖闘士クラスを継承して、ゴールド聖闘士クラス作ればいいじゃん。
っていうこと >>362
そもそもCのポインタの難所とされるのは文法のせいだから
int const * const * p;
const int * const p;
const int * const * const p;
みたいなぱっと見では修飾関係の謎なやつら void (*signal( int sig, void (*func) (int) )) (int);
標準ライブラリがこんな暗号みたいなんじゃ、
そりゃ「Cのポインタは難しい」といわれてしまうわな。 >>382
そうやって作ったルールは年月とともに忘れ去られ、ドキュメントも失われ、メンバーも入れ代わり、その場しのぎで拡張した機能のせいでソースコードが魑魅魍魎になる。
そういうプロジェクトを幾つも経験すると、結局はCの基本機能やライブラリででできることは素直にそれを使うべきと考えるようになる。 >>386
そりゃそうだ
それは実用の観点から考案や実装されてんだから
机上で学ぶ時には仕組みを理解できても有用性なんて分からなくて当たり前
だけどこの手の職種は性格悪い奴が多いから単なる経験値の違いでマウント取って悦に入る
それを初学者がプレッシャーに感じてるだけ
複数人、大規模、継続的な運用、公に公開とかを経験するうちに理解するから安心しろ >>396
それ分けわからんよなあ
学習サイト血眼で何度も読んでようやく理解って感じだったわ
でもC++でそれをしばらく使わないと忘れてしまうという
えーと、この場合はポインタ(アドレス)が定数で、ポインタのアドレスに
書き込んである値は定数じゃなくて、この場合は値も定数で…
…そして、頭爆発寸前という >>386
C#で8割くらい共通だけど2割くらい違う画面ってのを複数作ってたら継承の優位性が分かってくるんじゃないかと思う
共通2割、個別8割でもいいけど C++なんてのは、プログラマの脳を破壊する黒魔術になっているからあんなものは捨てろ。
機能がたくさんあればいいってもんじゃねーんだよ。
やろうと思えば+演算子で引き算もできてしまうような言語など要らぬ! >>402
C++は自由過ぎてカオスなんだよな
もっとカオスがC++/CLI、ヒープ領域がアンマネージドとマネージドに分かれているという
アンマネージドに確保する場合はnew、マネージドの場合はgcnewと使い分ける オブジェクト志向は良いんだけど、
継承(しすぎ)はあんまりオススメしない。
作りやすい(同じコードを2回書かなくて済む)が
読みにくい(どのコードがどの順番で実行されるか
直感的にわかりにくい)。
結果、保守性が下がる。
誰かが書いたコードを別の誰かがメンテする。
その前提で作ると、多重継承とかやりすぎない
方がいい。
わかりさすさは冗長さより優先すべき。 >>403
C++/CLIはなんの為に作られた言語か知らんけど
C++からC#呼ぶ時とかのラッパーにしか使ってないわ 継承とか演算子のオーバーロードとか要らんからクラスだけ追加したC+位のが欲しいんだけど。 >>395
それだとシルバー聖闘士やブロンズ聖闘士は一生ゴールド聖闘士になれないけどあってる? >>407
要は
人間クラス
身長プロパティ
体重プロパティ
年齢プロパティ
性別プロパティ
筋力プロパティ
食べるメソッド
寝るメソッド
走るメソッド
跳ぶメソッド
うんこをするメソッド
etc.
クラス終わり
聖闘士クラス
人間クラスを継承
クロス階級プロパティ
星座プロパティ
コスモプロパティ
コスモを燃やすメソッド
コスモを感じるメソッド
etc.
クラス終わり
こんな感じやろか? 仕事で他人の書いたコードをたくさん見るが、クラスにしてかえって読みにくくなってしまってるのはよく見る。
センスの良い人が書いたのはそんなこと無いけど >>407
キャラクタークラスが人間インターフェースと聖闘士インターフェースのプロパティを持つんじゃね
キャラクタークラスのインスタンスとして星矢
星矢is人間 且つ 星矢is聖闘士
聖闘士インターフェースを持つ抽象クラスを継承して
ブロンズ、シルバー、ゴールドを作る
星矢からブロンズやゴールドのクラス
から作ったインスタンスを
星矢が持っているプロパティから参照すれば
星矢はブロンズにもゴールドにもなれる キャラクタークラスから犬インターフェースを参照すれば
犬の聖闘士キャラができる >>371
名前空間はクラスの親玉って思ってる
関数や変数を複数まとめたクラスってのあって
そのクラスをさらにジャンル別にまとめたところの総元締めが名前空間 ゲームにはタスクシステムで十分
オブジェクト指向など不要 名前空間がかなり柔軟な言語ってある?
Pythonの引数名指定のメソッド呼び出しの、引数名を文字列で動的に変えれたり、クラス名の文字列の一部を文字列のリストで動的にしたり。 純粋なオブジェクト志向で書こうとすると糞コードを生産してしまう残念プログラマだが、Classは必要だわ。
メソッドだけだとごちゃごちゃになる。部屋の整理を考えてみろ。小物入れだけじゃ部屋は整理整頓できん。
あ、関数型言語は知りません。 >>1は30年前のC言語から、いきなり現代に飛んで来たの? 時代遅れのオブジェクト指向おじさん「クラスは必要」 オブジェクト指向の概念を産み出したアラン・ケイはC++はオブジェクト指向では無い!と断言してたな クラスなんていらん。
C言語ににメンバー関数とコンストラクタとデストラクタとインヘリタンスとポリフォーミズムとオーバーライドとオーバーロードとエクセプションとテンプレートとラムダさえ追加してくれるだけでええ。 クラスなんていらん。
構造体に関数ポインタ突っ込むから。 クラスがないと元ソルジャーと言っても強いか弱いかよくわからないじゃん >>410
今もてはやされてる関数型プログラミングはそのオブジェクト指向プログラミングの欠点を克服するためのものなんだよね >>427
関数が増えたらポインタだらけで重くなるぞ
そうならないようにしたのがクラス ■ このスレッドは過去ログ倉庫に格納されています