23章
教える際の重要ポイント
暗記させない。表面的に教えない。目的化しない。
コードを暗記させない
例えば、
class Motor {
};を暗記することを目標にしない。重要なのは、
「なぜMotorをクラスにするのか?」
を説明できることである。
public / private / protectedを表面的に教えない
単に、
public = 外から使える private = 外から使えない
だけで終わらせない。「なぜ内部データを隠す必要があるのか」を説明する。
サンプルの使い方
各回のページの「動かして確かめる」で紹介しているサンプルは、code/examples/に回ごとに1つある(対応表はcode/README.md)。授業中に一緒に動かすためのもので、演習の答えそのものではない。
| やること | 狙い |
|---|---|
| 説明の前に動かす | 「何が問題なのか」を先に見せたい回(第16〜18回)に向く |
| 説明の後に動かす | 仕組みの確認。多くの回はこちら |
| わざと壊す | 各回の「確かめること」に、壊して見せる手順を書いてある(virtualを外す、breakを消す、前方宣言を#includeに変える、など) |
先に教員が一度書き込んでおくと、演習で手が止まった受講者に「さっき動かしたあれと同じ形」と言える。出力が出ない場合はシリアルの速度(115200)と、書き込み直後のモニタの接続を確認する。
継承を目的化しない
「C++には継承があるから使う」のではなく、
共通するインターフェースがある
↓
共通部分を抽象化したい
↓
継承を利用するという順番で考える。
virtualは図で説明する
Sensor
│
┌───────┴───────┐
↓ ↓
IMU GPS
│ │
update() update()そして、
Sensor* sensor = &imu;
sensor->update();がなぜIMU::update()を呼べるのかを説明する。