はじめに
Pythonの学習教材を作成することになって、これを書いています。
とはいえ、私自身プログラミング経験ゼロ、初めて触れる言語がPythonです。
書籍やネット、学習サイト等いろいろ調べながら書き進めていますが、自分では正解がわからない!ということで、ぜひ皆様のコメントをいただきたく、ここに公開することにしました。
対象
- 初めてのプログラミング言語にPythonを学習する
- 基礎(条件分岐、ループ、配列、関数など)は習得済み
- 「オブジェクト指向」はこれから
という人を対象にしています。
そのため、あまり深い内容には触れられませんが、できる限りわかりやすく、誤りがなく、誤解を与えない表現となるように心がけています。また、上記の理由から、他の言語との比較もしていませんのであしからず。
ここからが本文
オブジェクト指向とは
オブジェクト指向とは、単にプログラムの文法や手順のことではなく、プログラムをどう作るか、という考え方にあたります。直訳すると、オブジェクトは**「モノ」、指向は「〜を中心に」、オブジェクト指向とは「モノ(オブジェクト)を中心にした」**という意味になります。
オブジェクト指向プログラミングの基本的な考え方は、プログラムの操作手順よりも操作対象に重点を置き、オブジェクトという単位でプログラムを捉えることです。プログラムにおける一連のデータや関数などは、オブジェクトまたはオブジェクト間の関係として表されます。機能ごとに複数のオブジェクトを作り、相互作用させることでプログラムを構築していく手法です。
一般的にプログラムが大規模になるほど、その内容をすべて把握することは難しくなります。楽にプログラムを組み立て、修正できるように、オブジェクト指向という考え方が持ち込まれました。現在では、多くのプログラミング言語がオブジェクト指向を基本概念として開発されており、Pythonもまた、オブジェクト指向のプログラミング言語です。
オブジェクトとは
オブジェクト指向のプログラムでは、関連するデータ(属性)の集合と、それに対する操作(メソッド)をオブジェクトと呼ばれる一つのまとまりとして管理します。
もう少し具体的に自動車を例に、オブジェクトについて考えてみましょう。
自動車には、タイヤ、ボディ、エンジンがあり、アクセルを踏む(進む)、ブレーキを踏む(止まる)、ハンドルを切る(曲がる)といった方法で操作されます。
タイヤやボディ、エンジンなどはより良い素材や性能のものに変更すれば、スピードが上がりますが、これ自体が何か動作を引き起こすものではありません。また、アクセルやブレーキ、ハンドルを使った操作はどの自動車も共通しています。
つまり「自動車」オブジェクトは、「タイヤ、ボディ、エンジン」というデータと**「アクセルを踏む(進む)、ブレーキを踏む(止まる)、ハンドルを切る(曲がる)」という自動車に対する操作(メソッド)**の組み合わせによって定義できます。
オブジェクト指向のメリット
自動車を運転する場合、運転手は自動車の複雑な内部機構がどのように動いているかを知る必要はなく、ただ運転方法さえ知っていれば、自動車の運転ができます。また、別の車種の自動車に乗り換えたとしても、あらためて運転方法を学ぶ必要はなく、すぐに運転が可能です。
また、自動車を製造する場合も、設計図を基に量産したり、互換パーツを使い回すことができます。
オブジェクト指向においても、操作されるオブジェクト(自動車)の変更に対して、操作する側(運転手)は影響を受けないというメリットがあります。また、オブジェクトという単位で扱うことで、機能をまとめ、容易に量産・再利用ができます。さらに、オブジェクトは内部状態が保たれるため、バグの発生を最小限に抑えることが可能です。こうした利点から、多くのプログラミング言語がオブジェクト指向を取り入れています。
初学者のためのPython講座 オブジェクト指向編1 オブジェクト指向とは
初学者のためのPython講座 オブジェクト指向編2 クラスとインスタンス
初学者のためのPython講座 オブジェクト指向編3 メソッド
初学者のためのPython講座 オブジェクト指向編4 初期化メソッド
随時追加予定
Markdown難しい。