対象者のレベル分けとしては、
1.VB等でコンポーネントプログラミングができる程度
(フォーム上にボタン等を貼り付け、プロパティ、メソッドを使い計算結果を表示する等)
2.制御構文、変数等を理解して、利用できる程度
3.自作関数や配列等を理解して利用できる程度
4.オブジェクト指向的な概念や考え方(クラスや継承等)を学習した程度
です。
今のところ、
1の人には、「連立方程式を解くプログラム」や「BMI指数の計算」等
2の人には、「階乗、べき乗計算」や「数値を入力し、合否判定」等
3の人には、「配列内の値のソート(バブル・クイック)」等
を考えているのですが、4の人に出す問題として「シンプルで手軽な」練習問題が思い浮かびません。そこそこ実用的でイメージしやすい例はないでしょうか?
アルゴリズムやオブジェクト指向的な考え方を理解して欲しいので、言語等は一般的なものであれば何でも結構です。
1~4まで、何かよいものがあったら、教えてください。
よろしくお願いいたします。
Mr.Tです、こんにちは。
よくあるのが、クルマなんかをサンプルにしているものとかですね。
クルマというスーパークラスがあって、派生してトラック、軽自動車、なんて形になりますね。
実はクルマは、馬車とかの派生であった、とか。
ありがとうございます。
確認して見ます。
GUI環境であればゲームは題材として使いやすいと思います。
キャラごとにクラスを作り、同時に表示させることでマルチプルインスタンスを感覚的に理解できます。
また、キャラごとにパラメーターや振る舞いを変えてみることでも継承を理解しやすいと思います。
ありがとうございます。
ゲーム作りを題材にするというのはいいですね!!
その昔(OOを全く理解していない頃)、STGのソースを拾ってきて読んだときのことを思い出しました。
確か、enemyクラス(HPや座標情報のフィールドを持つ)から継承し、自機に突っ込んでくるenemy1クラスやすぐにいなくなるenemy2クラスを、みたいなカンジで作っていました。
もう一度、あのときのソースを読み返しながら、サンプルとして使える部分を見つけてみたいと思います。
4について。
クラスについて理解させるには、自作文字列クラスを作らせるとよいです。
C言語には文字列処理関数がありますが、その引数に与えるデータと関数の手続きには強い依存関係があることがわかると思います。であるならば、ひとつにまとめてしまえばよい。それがクラスです。上記の問題をやらせれば、クラスのありがたみがわかるはずです。
なお、オブジェクト指向と一口にいっても、上記のクラスを含めた様々な概念が存在します。オブジェクト指向の中で特に重要な概念として、ポリモーフィズム(これはメインルーチンの共通化を目的としたもの)がありますが、この理解を促進する問題としては、ADOやJDBCのような自作のデータベース用APIを作らせればよいでしょう。
ありがとうございます。
ん~、実用的でオブジェクト指向のメリットを理解しやすい例ではあるのですが、プログラミングを勉強中の人には難易度が高そうな気がします……。
OOPの勉強というよりも、文字列処理やDBとの連携方法などの勉強の方がメインになってしまいそうな気がします……。
こんにちは。
ありがとうございます。
クルマクラス:
プロパティ:色・メーカ・ガソリン残量など
メソッド:進む、止まる、曲がるなど
とかいう例ですね。
私的に、オブジェクト指向を理解している人が別言語を使うときの書式の確認等で使う分にはよいと思うのですが、オブジェクト指向を学習したばかりの人が使ってもイマイチ実感がわかないと思うのです。
できれば、作っているクラス等が普段使っているコンピュータ上の処理としてイメージできる例が欲しいです。
すみません、どうぞよろしくお願いいたします。