オブジェクト指向プログラミングはポリモーフィズムから学べ(3) ~カプセル化,継承~

今シリーズのまとめ

  1. オブジェクト指向プログラミングはポリモーフィズムから学べ

  2. オブジェクト指向プログラミングはポリモーフィズムから学べ(2) ~クラス導入編 前編~

  3. オブジェクト指向プログラミングはポリモーフィズムから学べ(2) ~クラス導入編 後編〜

  4. 本記事

はじめに

カプセル化と継承に関しては正直、私だから書けることないし、クラスの付随した機能という感じなので、簡単に案内していきます。

カプセル化

クラスを使う人に見せる必要のないものを隠すこと

クラスは、普通中身を変えられないように設計するものです。カプセルに入っている顆粒の薬のように勝手に中身が変えられないのと同じです。
クラスは実装上はインスタンスというクラスの実体を作成してインスタンスを使います。ただ物理的なものと違い、インスタンスは単なるメモリ上の存在でしかないので、現実のカプセルと違い中身が勝手に変更されないため、プロパティやフィールドと呼ばれる変数にアクセス修飾子といって参照できる場所を制限できる機能をつけたりでクラスの中身をカプセル化するにあたっていろいろ要件が必要です。
カプセル化出来たらなにがうれしいか先にも書きましたが、いったん実体化したら勝手に変えられないことです。勝手に変えられないのは何が嬉しいかというと変数のスコープが限定されることです。プログラミングでよくあるグローバル変数問題が解決できます。

継承

クラスは子クラスが作れます。zfc集合論でもそうですが、集合は本来的に遺伝的な性質があります。なので、当たり前の性質です。
正直クラス導入編の前編、後編でクラスについて詳細に書いているので、自明の性質ではありますが、「わん、にゃー」式のポリモーフィズムを表現できるという利用方法があるので、世間ではオブジェクト指向の三大要素とか言われてます。

まとめ

実に世間で言われるようなオブジェクト指向三大要素はじつに適当でクラスとポリモーフィズムを二大要素として、クラスの付随機能としてカプセル化、継承を教えるのが一番わかりやすいのかなと、思ったりして。。
「オブジェクト指向プログラミングはポリモーフィズムから学べ」というふざけたタイトルで始めたこの連載ですが、集合論とプログラミングを結び付けられたのがよかったです。これでよくある関数型プログラミングと型つきラムダ計算の関係を勉強する前段階になれてよかったと思います。

あとがき

正直、圏論と関数型と型つきラムダ計算の関係がしっかり勉強したいと思っていたので、その前段階の型とクラスと集合論を勉強する切っ掛けにこの連載を始めれたのはよかったです。

この記事が気に入ったらサポートをしてみませんか?