オブジェクト指向の概要
![](https://gineen.net/wp-content/uploads/2023/03/stand3_side09_ojiisan.png)
まー子、オブジェクト指向じゃな、よし、おじいちゃんが説明しよう。オブジェクト指向とはな、プログラミング言語における一種の設計思想で、現実世界の対象をプログラムの中に再現し、対象ごとに様々な機能を提供することができるプログラムの作成方法なんじゃ。まー子の家族を例に説明してみるぞ。
例えばな、まー子の家族を考えてみるんじゃ。父・母・兄・祖父・祖母のそれぞれをオブジェクトとして定義することができる。それぞれのオブジェクトには、そのオブジェクトが持つ属性(データ)や操作(メソッド)が定義されているのじゃ。
母のオブジェクトでは「名前」や「年齢」といった属性があり、「料理する」といった操作がある。父のオブジェクトでは「名前」や「年齢」の他に「テニスをする」といった操作もあるんじゃ。それぞれのオブジェクトは、それぞれの属性や操作があるように設計されておる。
![](https://gineen.net/wp-content/uploads/2023/03/buranko_girl_smile.png)
また、家族全体のオブジェクトを定義することもできるぞ。この場合、家族全体の属性や操作が定義される。例えばな、「家族の名前」や「家族の平均年齢」といった属性や、「家族全員で旅行する」といった操作が定義されるのじゃ。
オブジェクト指向によって、家族のような現実世界の対象をプログラムに再現することができるし、それぞれのオブジェクトには独自の属性や操作が設定される。これによって、プログラムをより柔軟に設計することができし、複雑な処理も分かりやすくなるんじゃよ。
カプセル化とは
![](https://gineen.net/wp-content/uploads/2023/03/capsule_toy_close1_red.png)
つぎはカプセル化についてじゃ。オブジェクト指向の「カプセル化」とは、データや機能を一つのまとまりにして外部からアクセスできないようにすることなんじゃ。つまり、家族に例えると、各家族メンバーがそれぞれのプライベートな情報や機能を持っているけれど、外部の人に見られたり、勝手に変更されたりしないように守ることが大切だということになる。
たとえば、まー子のおばあちゃんが家の家計簿をつけているとするじゃろ、それはおばあちゃんだけが見るべきものである。もし誰でも見れてしまうと、家族の秘密が外部に漏れてしまうし、うまく家計を運営することもできなくなるかもしれないからの。それがオブジェクト指向のカプセル化というわけじゃ。
このように、オブジェクト指向のカプセル化はプログラムのセキュリティを高めたり、プログラムの修正や拡張を簡単にすることができたりするので、大変重要な概念なんじゃよ。
ポリモーフィズムとは
![](https://gineen.net/wp-content/uploads/2023/03/hair_biyou_kirei_obaasan.png)
まー子の家族も、それぞれ役割や特徴が異なるじゃろ。例えば、まー子のお母さんは、お料理や洗濯、掃除などの家事全般を担当しておる。一方、お父さんは会社で働いており、お金を稼いで家計を支えておる。そして、おばあちゃんは家族の中で最年長で、時にはおしゃべりやちょっかいをかけたり、時には知恵を授けたりする存在じゃ。
それぞれの家族が、同じ役割や特徴を持つことがあるかもしれん。例えば、お母さんとおばあちゃんは、両方とも家事を担当しておる。しかし、そのやり方やアプローチは異なることがあるじゃろ。このように、同じ役割や特徴を持つ家族でも、それぞれの個性や特徴が異なるということがあるのじゃ。
同じように、プログラミングでも、異なる種類のオブジェクトに同じ名前のメソッドを適用することができるんじゃ。例えば、「まー子の家族」というオブジェクトを考えた場合、それぞれの家族にはそれぞれ異なるメソッドがあるかもしれん。しかし、「家事をする」という共通のメソッドがある場合には、それぞれの家族に適用することができる。このように、同じメソッドを異なるオブジェクトに適用することで、柔軟なプログラミングが可能になるのじゃよ。