テーマ:私のPC生活(7425)
カテゴリ:家電
計測制御VB6プログラマがVB.netに乗り換えるにあたり、オブジェクト指向を理解しようと頑張るシリーズ。
(ここで私が書く内容は、プロの正統派プログラマからしたら間違えていると思います。しかし私はとりあえず動けばいいサンデープログラマ、わかりやすい理解が信条) 昨日の続き。 VB6では動作したlabel1="hello, world"がどうしてvb.netではダメなのか。 それはオブジェクト指向をちゃんと取り入れた、から?かな。 で、オブジェクト指向勉強しようと思って教科書をみても抽象的な概念の説明から始まって、結局オブジェクト指向の意味が分からない。 私は、このオブジェクト指向と言うものの意味というか利点がさっぱり分かりませんでした。つーか、今でも分かってない(笑) それが良く分からなかったためにVB6から離れられなかったようなものです。 そもそもオブジェクトって何? モノの本をみると「データとコード(サブルーチン)を一緒にしたモノがオブジェクト」と書かれています。 それを見て「あー、そうか!」と一発で理解できるヤツは、よっぽどの天才だろうな。 クラシカルなBASICやFortranからプログラムを覚えたオジサンには、意味不明な説明です。 「パンと食事を一緒にしたものが朝です」といわれて理解できますか?私はムリ。こんな説明、文章になってない! そして教科書ではお決まりの説明が続きます。 クラスやらインスタンスやら実体化やら継承やらオーバーライドやら・・・ 脳内 CONTINUE文にたどり着く前にBREAK文が挿入されちゃいます。 VB6難民の大半はここでexit subしているんじゃないでしょうか。 しかしここが我慢時です。とりあえずオブジェクト指向とかクラスと稼動でもいいので、テキストブックのサンプルを粛々と試してみましょう。 クソみたいな簡単なコードでも実際に書いて動かしてみると違うものです。 そのうちに何となく分かるようになってきました。まさに習うより慣れろです。 以下、私が考えるシロート向けの「オブジェクト指向とはなにか?」です。 まず、「クラス」は忘れてください。 ←これ重要 私が思うに、どの教科書でもまずクラスの説明があるからオブジェクト指向の理解が難しくなっているのだと思います。そんなもん忘れてOK。 さてプログラムを作るには、いろんなパーツ必要です。変数や、textboxや、ダイアログボックスなどなど・・・ 私たちがプログラムを作る最には、「プログラムを作る上で必要な基本パーツ(雛形)」をコピーして、「実際のパーツ」を生み出し、あるいは改変して「オリジナルののパーツ」を生み出したりして作成します。(意識してないけどみんなやってる) 基本パーツとは、例えばinteger型やstring型といった変数の「型」や、ツールボックスに入っているtextboxのアイコンのことだったりします。 実際のパーツを生み出すとは、コード上で変数を宣言するdim文だったり、デザイナ上にテキストボックスを配置したりすることです。 オリジナルのパーツとは、例えば構造体だったり、実際に書いたコード(サブルーチンや関数)だったりします。 私が思うオブジェクトの理解としては、 「プログラムを作る上で必要なパーツの基本のカタチ」「それをコピーして作り出された実際のパーツ」「オリジナルのパーツ」、これら全部をひっくるめて「オブジェクト(=モノ)」というのだと思います。なんとまあざっくりした言葉だこと。 定義が広すぎていい言葉がなくて、「オブジェクト」みたいなざっくりした言葉を使っているんでしょうね。 こういう概念を元にプログラムを書くのがオブジェクト指向。 でもそれでは、今までのVB6と同じではないか? そう、同じです。 VB6でも知らず知らずのうちにオブジェクト指向の考えを利用してる(はず)です。たぶん。 たとえばVB6でコンボボックスを使うときのことを思い出して見てください。 まずはツールボックスからコンボボックスのアイコンを選択し、フォーム上に張り付けましたよね。 そしてコンボボックスに内容を設定する時は combo1.additem ("一番目") 選択されている内容を知るときは、 a=combo1.lisindex みたいにしたわけです。 これはもう立派なオブジェクト指向プログラミングといっていいのではないかと思うのです。 VB6が扱えたらオブジェクト指向の考え方も扱えているということです。 まず、「ツールボックスにあるコンボボックスのアイコン」が、コンボボックスの元のオブジェクトです。 そして「アイコンを選択し、フォーム上に張り付け」た行為が、実体化(インスタンス化)です。 貼り付けられたコンボボックスはインスタンス(実体)です。 コンボボックスオブジェクトには、いろいろな利用可能なメソッドと、データ(プロパティ)があります。 .additemメソッドが「(データと一緒になっているという)サブルーチン」で、"一番”はデータですね。 もちろん.listindexメソッドもサブルーチンで、その返り値もデータです。 他にも.enableとか.visibleとかいろんなメソッドとそれに付随するデータがあります。これら全部をひっくるめてcomboboxオブジェクトです。 だから「オブジェクトはデータとサブルーチンが一緒になっている」という説明になるわけです。 VB6からVB.netに移行したらオブジェクト指向プログラミングをしないといけないというのではなく、 今まで何となく利用してきたオブジェクト指向プログラミングの文法が全面的に入ってくる、と言うことなのだとおもいます。 VB6は、旧来のプログラミング文法にオブジェクト指向の文法が限定的に導入されていた折衷案とでも言えるものだったのでしょう。 良くも悪くも。 Visual Basic.NETの基礎 インストールからオブジェクト指向プログラミングまで 明日に続く。 お気に入りの記事を「いいね!」で応援しよう
最終更新日
2015.02.16 23:05:39
コメント(0) | コメントを書く
[家電] カテゴリの最新記事
|
|