プログラムの基本処理は、
繰り返し(for文)
分岐(if文)
の、たった3つだ(*1)
これを制御構造といい、
プログラムはこの3つの制御構造の組み合わせでできている。
そして、
これら一連の処理をまとめたものを
「関数」といい、
その関数に
引数(*2)と呼ばれる入力データを渡し、
返り値という出力データを受け取る(*3)
![](https://i0.wp.com/uncle-kanazawa.com/wp-content/uploads/2020/10/スクリーンショット-2020-10-17-19.49.17.png?resize=500%2C313&ssl=1)
かわいい無料イラスト使用。
それを繰り返して、
プログラミングしていくのだ(*4)
![](https://i0.wp.com/uncle-kanazawa.com/wp-content/uploads/2020/10/8A0E3D60-FD90-4C4D-B739-AC7D2892119B.png?resize=375%2C500&ssl=1)
目次。このあと、関数の章が続く
しかし、
プログラミングでいちいち関数を書いていては、
膨大な数になってしまう。
そこで、出てくるのが、
「オブジェクト指向プログラミング」。
オブジェクトとは、
プログラミングの対象をふわっとまとめた抽象概念なのだが、
定義を説明されてもよくわからない。
ただ、
具体例なら、少しは腹落ちする。
![](https://i0.wp.com/uncle-kanazawa.com/wp-content/uploads/2020/10/スクリーンショット-2020-10-17-19.49.26.png?resize=500%2C313&ssl=1)
パワポで作るの大変だった(暇?)
たとえば、
ボタンというオブジェクトをプログラミングする場合、
まず、クラスという設計図を書き、
その設計図をもとに、
具体的な実体(=インスタンス)である
ボタン(例では黄色のOKボタン)を作るのだ(*5)
![](https://i0.wp.com/uncle-kanazawa.com/wp-content/uploads/2020/10/E8A4796A-EA14-44DC-9BB3-36088468C8C8.jpeg?resize=374%2C500&ssl=1)
システム開発に携わる人が読む本。難しい(でも大切)。
それで、
設計図であるクラスとは、
その変数を関数等で操作する(=メソッド)の枠組みで、
こんなコードをかく(注 ボタンの例ではない)。
![](https://i0.wp.com/uncle-kanazawa.com/wp-content/uploads/2020/10/スクリーンショット-2020-10-17-19.21.48.png?resize=500%2C306&ssl=1)
Modelというクラスを設定。機械学習の予行演習だ。
で、ここで引っかかるのが、
第一引数の「self」だ。
![](https://i0.wp.com/uncle-kanazawa.com/wp-content/uploads/2019/01/baby_boy09_question-2.png?w=1256)
お前は、何者?
ググってみると、
このselfは、インスタンス自身を示すものです。
って、だから、なんなん?
といってこれ以上調べてもよくわからないので、
とりあえず、
self を書いたほうが、いろんなことができるから
という説明で納得しとこう(このサイトを参照した。→こちらをクリック)
次に、
この設計図で実物を作る(=インスタンス化)のがこのコード。
![](https://i0.wp.com/uncle-kanazawa.com/wp-content/uploads/2020/10/スクリーンショット-2020-10-17-19.22.12.png?resize=500%2C203&ssl=1)
outが消えているが、出力が3。
これはこういうもんだと覚えよう。
このクラスとインスタンス化、
実装でよく出てくるわりには、ふわっとした概念でつかみづらい。
これから実例を通して、少しずつ理解していこう。