投稿者 るきお  (社会人) 投稿日時 2009/2/12 05:55:01
オブジェクト指向の考え方の根本はプログラムの一連の動作を現実世界に存在するような「もの」(オブジェクト)に見立てて、その「もの」のふるまい(=メソッド)の組み合わせとして処理を記述することです。
ですから、なにをオブジェクトと考えるかがもっとも重要です。

このために本格的なシステムであれば、プログラムによって実現したいことをあらかじめよく分析・設計してなにをオブジェクトするか、どういうふるまいをもたせるかを決定します。この過程がオブジェクト指向分析やオブジェクト指向設計です。

今回のプログラムでは「車が移動する」のですから、「車」がオブジェクトで、その車オブジェクトには「移動する」というふるまいがあることになります。この時点で車オブジェクトをプログラムに落とすと次のようになります。
   
Publi Class Kuruma
    Public Sub Idou
    End Sub
End Class


ただし、今回「車」と呼んでいるものはPictureBoxのようですので、私は「移動可能なPictureBox」MovablePictureBoxというオブジェクトを考えて次のようにしてみました。
   
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click

        MovablePictureBox1.idou(20)

    End Sub

End Class

Public Class MovablePictureBox

    Inherits PictureBox

    Public Sub idou(ByVal x As Integer)
        Me.Left -= x
    End Sub
End Class

このプログラムをビルドするとツールボックスにMovablePictureBoxが自動的に作成され、TextBoxやButtonのようにマウスでフォームに貼り付けることができます

実年さんのプログラムではidouがクラスになっています。これは「移動」という抽象的なものがオブジェクトになっており、現実世界に存在するようなものをオブジェクトととらえていません。
もちろん、ちゃんとしたオブジェクト指向の中でもおよそ現実には存在しないようなものをオブジェクトと認定することは多々ありますが、この小さなプログラムではその必要はないでしょう。
多くの場合オブジェクトになるものは名詞で表現されます。「移動」のように動詞で表現されるものはふるまい(=メソッド)になります。

なお、私としてはオブジェクト指向は重要ではありますが、単なる考え方であってなにかの研究でもしているのでなければあまりこだわらなくていいのではないかと思っています。VBを使ってできるだけ少ない労力でよいものをつくろうとあがいていると自然とできあがるものはオブジェクト指向的なものになります。

>メソッドの作り方で、実引数と仮引数の考え方がわかりかねます
私は実引数と仮引数を特に区別して考えるメリットはほとんど感じていません。実引数と仮引数についてどの点がわかりませんか?
実年さんのプログラムで(1)を例にとると、idouメソッドの仮引数はxとpbで、実引数はsとPictureBox1になっています。

>それと※の部分がコンストラクタでよろしのでしょうか?
はい。
VBでは名前がNewであるメソッドはすべてコンストラクタで、これ以外にコンストラクタはありません。

※今回投稿の都合上Form1とMovablePictureBoxを続けて書きましたが、本来は1つのクラスは1つのファイルに書くことが推奨されており、私も実際であればMovablePictureBoxは別のファイルに書きます。