スッキリわかるJava入門 第7章 オブジェクト指向をはじめよう①
第7章 オブジェクト指向をはじめよう①
オブジェクト指向を学ぶコツ
オブジェクト指向の定義
オブジェクト指向のメリット
- 根底にある目的は「人間に把握できるプログラム開発を実現する」というもの。
- プログラムを容易に変更しやすくなる(柔軟性・保守性の向上)。
- プログラムの一部を簡単に転用できる(再利用性の向上)。
- 「マスターできたら嬉しい!」「絶対マスターしたい!」と心底思えるようなメリットは、「ラクして、楽しく、良いもの」を作れるようになること。
オブジェクト指向と現実世界
- そもそも開発するプログラムやシステムは、「現実世界における何らかの活動を自動化するためのもの」。
- プログラムやシステムは、現実世界のある活動を人間に代わって機械にやらせるために作られるものであって、現実世界とは無関係に単独で存在しているものはほとんどない。
手続き型プログラミングとの違い
- 6章までは、手続き型プログラミング(procedural programming)と呼ばれ、プログラムの先頭から順番に命令として記述していく方法。
- オブジェクト指向で開発を行う場合、プログラマはいきなりコードを書き始めることはしない。
- プログラムで実現しようとする部分の「現実世界」を観察しイメージ図(設計図)を描く。
- 着目すべきは、設計図はITの知識がない普通の人に見せても理解できる「現実世界における構図」そのものである点。
- 設計図の中の登場人物や物の1つ1つを部品ととらえ、それを「クラス」というJavaにおける部品で記述していく。
- オブジェクト指向による部品化のルールは、現実世界にでてくる登場人物の単位で、プログラムをクラスに分割すること。
開発時に作るクラス、実行時に動くオブジェクト
オブジェクト指向におけるプログラマの役割
- オブジェクト指向プログラミングにおいて、プログラマはまるで「Java仮想世界における神様」のような存在。
- 仮想世界にどんな登場人物や物を生み出し、それらをどのように連携させるかを決め、それぞれの部品を作っていく立場だから。
- 例えば「複数の倉庫にある書籍をネットで販売するプログラムを作る」なら、本の販売業務を観察した上で「必要なもの(オブジェクト)は『本』『倉庫』『顧客』『購入記録』…」と判断し、設計図を書いていく。
- 手続き型のプログラマのように「コンピュータが一行一行、何を実行するかという手順定める」のではなく、「オブジェクトをどう作るか、どのように連携させるか」を第一に意識しながら開発していく。
- このことが「オブジェクト指向プログラミング」という名前の由来になっている。
- 「~指向」というのは、「~を大切にした…」「~を中心にと捉えた…」という意味。
オブジェクト指向の本質
- なぜオブジェクト指向の考え方を使うと、大規模で複雑なプログラムも把握でき、その結果、ラクして楽しくいいものを作れるのか?
- 私たち人間が慣れ親しみ、よく把握している現実世界をマネして作られたプログラムもまた、私たち人間にとって把握しやすいものだから
- オブジェクト指向には以下のメリットもある。
- ①プログラム開発時に「頭を捻り、発想して作る」必要はない。現実をお手本に、それをマネして作ればいい。
- ②現実世界の登場人物に変化があった場合、対応する部品(クラス)を修正、交換すれば簡単にプログラムを修正できる。
- このようなメリットは、「現実世界をマネる」からこそ生まれてくる。
- 現実世界の登場人物たちを、コンピュータの中の仮想世界の中にオブジェクトとして再現し、現実世界と同じように連携して動くようにプログラムを作ることこそがオブジェクト指向の本質。
- オブジェクト指向の本質は、現実世界の登場人物とその振る舞いを、コンピュータ内の仮想世界で再現すること。