オブジェクト指向の基本的な概念
オブジェクト指向を使う目的とは?
「人間が把握しきれない複雑さ」を克服すること
・・・ソースコードが長くなるほど開発者がどこに何を書いてどうなっているのか
だんだん把握しきれなくなってくる
これまでの基本文法→「問題(こういう操作をするには?)についての正解自体」を学ぶ
オブジェクト指向→「正解に辿り着くまでの考え方」を学ぶ
(プログラムを作る時には、このようにプログラム全体を捉えて、こういう文法の組み合わせ方をするという考え方 俯瞰で全体を見るイメージ)
オブジェクト指向とは、長いプログラムを部品化して分けていく考え方
例えばJavaでは分担して開発を行うので、分割する時のルールを統一化していないと自分も周りも混乱してくる
賢い部品化を行うと・・・
プログラムを容易に変更しやすくなる(変更したい部分が分かりやすくなる)
プログラムの一部を簡単に転用出来る(この部品だけ他の人に渡すということも出来る)
オブジェクト指向のメリットは、
プログラムをもっと効率的に、生産的に書けること
(何度も同じコードをコピペしたり、一部部分だけ異なるようなコードを何度も書くような無駄な労力を少なくできる)
そもそもプログラムとは、
「現実世界における何らかの活動を自動化するためのもの」
同じ行為の繰り返しなら機械にさせた方が楽なんじゃないかという考え方からきてるもの
ex. 銀行口座のATM 改札 電光掲示板など
⬇︎
よって、プログラムは現実世界とは無関係に単独で存在しているものはほとんどない
従来のプログラミング・・・1から自分の頭で考え、プラグラムの先頭から記述していく
オブジェクト指向での開発・・・現実世界の手続きをプログラム化出来るよう観察し、
イメージ図(設計図)をまず描く ★俯瞰で全体を見る
★ オブジェクト指向による部品化のルール
現実世界に出てくる登場人物の単位でプログラムのクラスに分割する
ex 現実世界 ATM(受付ー通帳ー口座ー残高印刷)
仮想世界 ATM(受付ー通帳ー口座ー残高印刷)
オブジェクト指向では、
コンピューターが一行一行何を実行するかという手順を決めるのではなく、
第一意識として「オブジェクトをどう作るか、どのように連携させるか」を考える
ex. ある書庫をネット販売するプログラムを作る
① 本の販売業務(現実世界)を観察
② 必要なもの(オブジェクト)は「本」「倉庫」「顧客」「購入記録」と判断
③ 設計図を書いていく
Q.なぜオブジェクト指向は楽なのか?
A. 人間が慣れ親しみ、よく把握している現実世界を真似してプログラムを作る
↓
よって、私たち人間にとって把握しやすい
〈オブジェクト指向の本質〉
現実世界の登場人物とその振る舞いをコンピューターの仮想世界で再現し、
現実世界を同じように連携して動くようにプログラムを作ること
それによって
現実世界 (プログラムの実行) → 仮想世界(プログラムの修正)
動作がおかしい 現実世界に対応する同じところの
修正をすれば良い
オブジェクト指向に乗っ取って、現実世界に出てくる登場人物の単位でプログラムのクラスに分割することで、
現実世界のプログラムの動作と仮想世界のコードを対応させて捉えることができる