【プログラミング学習】オブジェクト指向でなぜつくるのか
記事更新日:2022-08-31

「指向」
してみたい
「オブジェクト指向」の基本を学ぶなら、まずはこれ
けっきょく、オブジェクト指向とは何?
- 「分類」して整理する技術
- 「ムダ(重複)をなくす」ための「整理整頓」の仕組み

たとえるなら、「掃除機」と「整理Box」

「指向」だから、指をさして向かえばいいのかな
「整理整頓」を目指しましょう
ムダなゴミを掃除機で吸い取り、整理用の箱に仕分けする。
「片付け技術」と考えてよさそうです。
なぜ整理整頓が必要なのか
昔は「作るれるかどうか」しかなかった

「作る」が関心事で、「ずっと使いたい」わけじゃなかった

コンピュータが動くこと自体が、すごかったから
「長く使う」ことは想定してないので、「目の前のメモリ」を節約するほうが重要でした。
2000年問題で、考え方が変わった
【2000年問題】
年号を2桁で記述していたため、2000年が「00年」になってしまう

2桁にしていたのは、メモリ節約のため

「目の前のことだけではダメ」と身にしみる
すでに作ったプログラムを
どう修正するか
考え方が、どう変わったのか
- 保守性
- コードが読めない → 読みやすくする
- 品質向上
- コードが複雑 → シンプルにする
- 再利用
- コードは使い捨て → 何度も使えるようにする

そのために登場したのがオブジェクト指向
オブジェクト指向の三大特徴
オブジェクト指向1.クラス
【クラスの役割】
- まとめる
- 隠す
- たくさん作る
「まとめる」
まとめて整理整頓すること自体に価値がある

具体的には、「変数とメソッド」をまとめること
【「クラスという箱」に入れるメリット】
- 探しやすくなる
- 名前が付けやすくなる

たしかに洋服も、種類ごとにケースに入れると探しやすくなる
「変数とメソッド」を
まとめて入れる箱
「隠す」
できるかぎり隠すべき

具体的には、変数とメソッドを「private」にすること

たしかに部屋の中も、隠したらキレイになる
隠して使うなら「private」
「たくさん作る」
1つのクラスからインスタンスをたくさん作れる

具体的には、次のJavaの例がわかりやすい
TextFileReader reader1 = new TextFileReader();
TextFileReader reader2 = new TextFileReader();
reader1.open("C:¥¥a.txt");
reader2.open("C:¥¥b.txt");
char ch;
ch = reader1.read();
ch = reader2.read();
reader1.close();
reader2.close();

newで、たくさん作れる
オブジェクト指向2.共通ロジックを一部変えて使う|ポリモーフィズム

共通ロジックを使うけど、足りないものは追加できる

「ポリモーフィズム」っていう言葉が嫌い
オブジェクト指向3.共通の定義を借りる|継承

共通部分は借りてきて、新しいクラスを作る

新しく買うよりもレンタル利用
プログラムは、最初から最後まで「整理」の技術
整理整頓の繰り返し
- 分析
- 「仕事の流れ」を整理する
- 要求定義
- 「コンピュータで何をするか」を整理する
- 設計
- 「コード」を整理する

やっぱり「整理整頓」がキーワード
大切なことは「キレイにしたい」という心がけ

オブジェクト指向が難しいのは、使いこなし方がわからないから
掃除機と整理Boxがあっても、掃除が急にできるわけじゃない。
「使いこなし方」に慣れるしかないです。
どうやったら保守がしやすくなるか、再利用がしやすくなるかを考えましょう。

「完璧にキレイにする」を目指すのではなく、「キレイな方向」を目指す
目指すものが変わる
まとめ:整理整頓のオブジェクト指向
- 同じものをまとめる
- 「分類」は技術
- 「ムダ」を捨てる
- いざとなったら借りればいい
- 隠してキレイにする
- 「散らかる」とは、何も隠れてないこと

「オブジェクト」は、整理箱のことだった

まずは知識の整理から

オブジェクト指向についてはこちらも
2022-08-31
編集後記:
この記事の内容がベストではないかもしれません。
記事一覧
-
現場で役立つ設計の原則 【プログラミング学習】現場で役立つシステム設計の原則〜変更を楽で安全にするオブジェクト指向の実践技法 -
理論を学ぶ理由 プログラミング理論は学習すべきか【Imprementation Patterns】 -
コミュニケーションシンプル柔軟 プログラミングのストレスを軽減する3つの価値観【Imprementation Patterns】 -
コンピュータは2進数 なぜコンピュータは2進数(binary)で計算するか -
引数をまとめたい 複数の引数をまとめて読みやすくするパラメータ•オブジェクト|Parameter Object -
戻り値をまとめたい コレクションで戻り値を集めるコレクティングパラメータ|Collecting Parameter