ポリモーフィズム、インターフェース ( No.36 ) |
- 日時: 2022/03/27 12:28
- 名前: REDCHEEKS
- ポリモーフィズムというのも、これもまたオブジェクト指向の考え方であり、キモなんだな。
そしてそれを実現する手段の一つが「インターフェース」なんだ。 さて、これらを説明するにあたり、練習問題>>32 で作ったプログラムを使用する。 念のためその解答を示しておくよ、http://mediasp.kir.jp/img20220326/imgloglog-box/img20211030211151.png このプログラムは充分にエッチだが、さらに次元を超えたとんでもないエッチな変更をこれから加える。
そもそも "ポリモーフィズム" とは何か? (融通の利かない)昔のプログラミング言語は、数字なら数字、文字なら文字と、同じ種類のデータしかまとめて扱えなかった。 この考えで行くと、男クラスである red と、女クラスである zan は、一緒に処理できず、男は男、女は女と、別々に扱う事になるので、プログラムは複雑になる。 それに加え、最近はLGBTとかいろいろあってますますややこしくなるので、それらを解決する技術が必要とされてきた。 これからの時代は、同じ種類のデータを集めた「配列」ではなく、多種多様なデータが入り交じった「コレクション」なんだな。
貴方はコレクションと聞くと何を思い浮かべるだろうか? フィギュアとかマニアックな世界? そうそう個性ある人形達だね。 このように、最新のオブジェクト指向プログラミングは、多様なものを扱えるようになった、それが "ポリモーフィズム" なんだ。 ではこれから「おなに」という機能を例に、 "ポリモーフィズム" を説明して行こう。
おなにと一口に言っても、男と女とでは、体の構造は異なり、やり方が違うはずである。 男と女では、オナにのし方に違いがある。 red は男クラスなので、ちんちんのしこしこを実行する。 それに対し zan は女クラスなので、おまんこのしこしこを実行する。 という違いがある。 何度も言うが、これらをどうやって一つの処理として統合するのか、といった難題を解決し、さらにはLGBTなどさらに複雑化する世界にコンピュータシステムを対応させる技術、それがオブジェクト指向であり "ポリモーフィズム" なのだ。
REDCHEEKSの超下ネタ解説はわかりやすいだろ? IT関連の書籍を読んでチンプンカンプンな人もこれで一発理解、これで本を出そうかな(笑)
さてその手順について、具体的に示そう。
http://mediasp.kir.jp/img20220326/imgloglog-box/img20211030225906.png
@ コレクションの使用を宣言する。 A インターフェース "Iえっち" を定義する。 ・インターフェース名の先頭には、Iを付けるというルールがあるので一応従う。 ・人類共通の快楽である「おなに」機能の使用を宣言する。 B 男クラスに、"Iえっち" インターフェースを(コンマに続けて)追記する。 C「おなに」機能の中身を定義する。 D 女クラスにもBCと同様の処置を施す。 E「//2人ともオナニー」の下にある、red と zan の直接記述をコメント化し無効にする。 F 変態コレクションを作成し、そこに、red と zan を追加する。 G 変態コレクションに含まれるすべての変態に対し、おなに() を実行するようにプログラムを記述する。
動作確認は以下の通り、
H「課題H」をクリックする。 I 2人の悲鳴のあと、あえぎ声が聞こえてくればOKです。
|
ポリモーフィズムのまとめ(解説) ( No.37 ) |
- 日時: 2022/03/27 12:29
- 名前: REDCHEEKS
- >>36 のまとめ(解説)
http://mediasp.kir.jp/img20220326/imgloglog-box/img20211030225906.png について解説しよう。
まずEについて、これまでは、
red.ちんちん.しこしこ(); zan.おまんこ.しこしこ();
と言う具合に、プログラム上に red や zan を直接記述していた、これでも動作はするが、2人程度なら2行だが、何千何万人のデータを処理しようとすれば、プログラムの行数が増え、非常に長くなり、見にくく、最終的に管理できなくなるので困る。 それを避けるため、まずコレクション機能を利用する。 Fの変態コレクションがそうである。
var 変態コレクション = new List<Iエッチ>(); // Iえっちインターフェースを持つ変態コレクションを作成する。
そして、そこに、red と zan を追加する。
変態コレクション.Add(red); // 変態コレクションに、red を追加する 変態コレクション.Add(zan); // 変態コレクションに、zan を追加する
でも貴方はここで疑問が沸いてくるのでは? 変態コレクションの作成は、1行で済むが、その後の、red と zan を追加するところで、何千何万人のデータを追加しようとすれば、プログラムの行数が増えるのではないか? 結局見にくく、最終的に管理できなくなるのでは?
でもこれには解決策があるんだ、プログラム上に red や zan を直接記述していた時とは違ってね。 それはエクセルなどの外部ファイルに出来ると言うことなんだ。 (これについては、課題01における、エクセルからのデータの読み込み >>33 を参考に出来る、但し今回は説明を省略する)
そして最終的な極めつけはGの、foreach 繰り返し構文。
foreach(var hentai in 変態コレクション) { hentai.おなに(); }
これで変態コレクションに含まれるすべての変態に対し、おなに() が実行されるわけだ。
このようにプログラムを組めば、変態が何千万人いようが、一瞬で処理できる。
※ ちなみに、コロナの定額給付金の配布に何ヶ月もかかったのは、我が国のIT化が遅れているからであって、foreach 文を使えば、こんなもの一瞬だよ(笑)
p.s. それにしても、おなに() の定義をまじまじと眺めて思った C D ホンマ恥ずかしいわ。 「自分の名前を名乗って、これから○○します」その後ハアハアだって(笑) もちろん了解は取ってあります。ざんちゃんさんありがとう、変な事付き合わせてしまってごめんなさい。
|
練習問題(ポリモーフィズム) ( No.38 ) |
- 日時: 2021/10/31 11:27
- 名前: REDCHEEKS
- (1) Iえっちインターフェースに、おしおき(); を追加してください。
(2) 男クラスに、おしおき() 機能を追加して下さい。内容は以下の通り、 ・ぼくは〜です。これから罰としてお尻叩きを受けます。 ・尻クラスのペンペン() を実行する。
(3) 女クラスに、おしおき() 機能を追加して下さい。内容は以下の通り、 ・わたしは〜です。これから罰としてお尻叩きを受けます。 ・尻クラスのペンペン() を実行する。
(4) 2人ともオシオキの下の、 red.尻.ぺんぺん(); zan.尻.ぺんぺん(); をコメント化(無効に)してください。
(5) 変態コレクションに含まれるすべての変態に対し、おしおき() を実行するようにプログラムしてください。
|