プログラムの基本処理は、
順次
繰り返し(for文)
分岐(if文)
の、たった3つだ(*1)
これを制御構造といい、
プログラムはこの3つの制御構造の組み合わせでできている。
そして、
これら一連の処理をまとめたものを
「関数」といい、
その関数に
引数(*2)と呼ばれる入力データを渡し、
返り値という出力データを受け取る(*3)
それを繰り返して、
プログラミングしていくのだ(*4)
しかし、
プログラミングでいちいち関数を書いていては、
膨大な数になってしまう。
そこで、出てくるのが、
「オブジェクト指向プログラミング」。
オブジェクトとは、
プログラミングの対象をふわっとまとめた抽象概念なのだが、
定義を説明されてもよくわからない。
ただ、
具体例なら、少しは腹落ちする。
たとえば、
ボタンというオブジェクトをプログラミングする場合、
まず、クラスという設計図を書き、
その設計図をもとに、
具体的な実体(=インスタンス)である
ボタン(例では黄色のOKボタン)を作るのだ(*5)
それで、
設計図であるクラスとは、
データを入れる変数(=属性)と、
その変数を関数等で操作する(=メソッド)の枠組みで、
その変数を関数等で操作する(=メソッド)の枠組みで、
こんなコードをかく(注 ボタンの例ではない)。
で、ここで引っかかるのが、
第一引数の「self」だ。
お前は、何者?
ググってみると、
このselfは、インスタンス自身を示すものです。
って、だから、なんなん?
といってこれ以上調べてもよくわからないので、
とりあえず、
self を書いたほうが、いろんなことができるから
という説明で納得しとこう(このサイトを参照した。→こちらをクリック)
次に、
この設計図で実物を作る(=インスタンス化)のがこのコード。
これはこういうもんだと覚えよう。
このクラスとインスタンス化、
実装でよく出てくるわりには、ふわっとした概念でつかみづらい。
これから実例を通して、少しずつ理解していこう。