プログラミング

オブジェクト指向とはなんぞや・・・!?

更新日:

出典:魁!!男塾

こんにちは、Nanayakuです。

今回は、オブジェクト指向について解説していきます。

オブジェクト指向とは

オブジェクト指向とは、3次元のものを2次元に置き換える考え方(概念)です。

銀行の窓口で例えると、「コンピューターの中に窓口の人を作る」感じです。

つまり、窓口の仕事を人からコンピューターに代えるという事です。

 

考えられた理由

オブジェクト指向は、開発を効率化するために考えられた概念です。

開発時の問題

開発を進めていくと、次の3つの問題が必ず出てきます。

  • 仕様の変更
  • コードの管理
  • バグの修正

オブジェクト指向は、これらの問題を解決する事ができます。

 

オブジェクト指向のメリット

オブジェクト指向には、3つのメリットがあります。

  • 開発のスピードアップ
  • プログラムの設計が容易
  • コードが読みやすい

 

プログラムの評価

プログラムの評価は、次の3つの指標から判断されます。

独立性

各プログラムが互いに干渉していると、仕様の変更などに全く対応する事ができません。

このツイートのように共通化していなくても、「1つプログラムの仕様を変えると3つのプログラムに影響が出る」など、プログラム同士の依存度が高いと少しの変更も出来なくなります。

そのため、各プログラムの独立性が高くなるようプログラムを書きます。

注意

↑ツイートは共通化が悪いのではなく、ダメな共通化をしていると言う事です。

再現性

再現性とは、様々なプログラムの構築に利用(再利用)できるプログラムの事です。

つまり、共通部分を抜き出し、他のアプリケーションでも使える汎用性の高い要素を多く持っているプログラムの事です。

拡張性が高い

仕様の変更・追加・削除に柔軟に対応できるプログラムの事です。

 

classとは

オブジェクト指向では、classと言うプログラムを1つの「仕様 / 働き」ごとに分けた物を使います。

メリット

1つの仕様ごとに分けてあるのでバグが発生した時、被害を最小限に抑える事ができます。

また、コードが短く、どこになんのプログラムがあるか把握しやすい利点もあります。

 

classの役割

classには、まとめる以外にも役割があります。

隠す

Ruby on Railsで例えると、Model・View・Controllerに別れている事で、内部の重要なプログラムを隠せます。

ユーザーにはviewの部分しか見えないため、内部のコードやデータベースへのアクセスを防ぐ事ができます。

性能の向上

各classで、得意な仕事に分けられているため、1つの処理を行うのに無駄な処理を一切しません。

これにより、1つ1つのプログラムが高いパフォーマンスを発揮する事ができるのです。

量産

Ruby on Railsで例えると、多くのアプリケーションの共通部分をまとめて雛形にしているため、様々なアプリケーションを量産する事が可能です。

 

class=設計図

クラスは設計図に例える事ができます。

車を作る時、1台1台を白紙の状態から設計していったら、時間がいくらあっても足りません。

そこで、「タイヤが4つ付いている」「右にハンドルを回したら右に回る」など、共通している部分を抽出し、まとめた設計図を作る事で効率をあげることが出来ます。

この設計図が「class」です。

実際にプログラムを開発する時も、設計図を作ってから始めます。

メリット

完成品=設計図」であるため、計画を立てやすく、何が必要か分かりやすい利点があります。

また、上記でも説明してあるように共通部分を抽出しているため、再現性が非常に高いです。

 

オブジェクト指向の基本構造

オブジェクト指向でプログラムを構築する時、どのような構造になるか解説します。

まず車(class)を例にコードで書くと

car = Car.new

となります。

car インスタンス(完成品)
Car.new クラス.メッセージ(設計図から車を制作)

設計図に車を作れとメッセージを送り車が完成」と言う流れです。

 

クラスとインスタンスの関係

インスタンス化は「Car.new(クラス.メッセージ)」の事です。

 

最後に

備忘録がわりに作ったので、間違っている所とかあったら、コメントくれると嬉しいです。

 

-プログラミング
-

Copyright© Nanayaku blog , 2019 All Rights Reserved Powered by AFFINGER5.