概要
会社でオブジェクト指向勉強会の登壇用に自宅で作ったスライドその3です。
その1: https://nrslib.com/oop-slide-1/
その2: https://nrslib.com/oop-slide-2/
その3: https://nrslib.com/oop-slide-3/ ← イマココ
スライド
https://speakerdeck.com/nrslib/oop3
解説
もうほとんどオブジェクト指向のおまけみたいなものです。
ジェネリクスや継承が存在しない言語も存在します。
パラメータ多相
ジェネリクスを使ったプログラムでどういうことができるのかというエクササイズで解説しています。
型を意識したくないけど普遍的な機能を作って、なおかつ型の恩恵は受けたいという欲張りさんのための機能。
型を指定するジェネリクスは邪道だと考えています。
なるべくなら引数などから自然に導かれてほしい。
実装継承
とにかく苦しめられた記憶しかないので、まずは怖いって感覚を持ってもらうことを強調しました。
特にアーキテクトの観点からすると、その後形成される継承構造にレビューで指摘する以外に関与する手立てがないことが問題かと思います。
実装者の観点からすると安直な継承による本当に必要な継承が作れなくなることが怖いです。
ただ、もちろん継承自体は退屈な繰り返しコードを解消する便利な仕組みなので使うべき時には使いたい機能です。
間違うことはあるでしょうが、利用すべきと思ったときには大胆に使うべきでしょう。
何度も言いますが、実装継承自体はポリモーフィズムを実現する手段ではありません。
ポリモーフィズムもできるというだけです。
まとめ
さて、これで一旦勉強会はひと区切り付きました。
オブジェクト指向の二大要素である「カプセル化」と「ポリモーフィズム」についてあらかた説明したものと思います。
アドホック多相についてはあまり掘り下げてませんが、題材が C# なので仕方ないですね。
Haskell などの勉強会資料を作ったときに掘り下げれたらよいかなとは思います。
今回の勉強会のあとアンケートを取ったところ、実践的な実装パターンについてと関数型と集合操作という題目で引き続き勉強会を開催していくことになりそうです。
あ、もしこの勉強会を開催してほしいなどの希望がございましたらご連絡ください。
喋る場所さえあれば喋りにいきます。
その1が 40 分程度、その2とその3が1時間程度ですので、全部やっても三時間に収まるとは思います。