議論をしたところだったので、食いついてみますw
オブジェクト指向=クラスって思っちゃいますよね^^;> オブジェクト指向=構造体の中にプロシージャや変数も入っている。
> 「.」使うところから最初こう思っていました。
私もそうでしたw
でもまぁ、あながち大きくずれてもないかと思いますが・・・どうでしょうね?^^;
オブジェクト指向=クラスって思っちゃいますよね^^;> オブジェクト指向=構造体の中にプロシージャや変数も入っている。
> 「.」使うところから最初こう思っていました。
自分も同意見ですが、VB(VBA)にあるValiant型がありますよね!あれが、オブジェクト指向の象徴だと思っています。淡幻星 さんが書きました:オブジェクト指向=クラスって思っちゃいますよね^^;
私もそうでしたw
でもまぁ、あながち大きくずれてもないかと思いますが・・・どうでしょうね?^^;
イグトランスさん、データ型から始まった程度にとらえて下さい。Variant型を例に出したのは、一番具体的だと思ったからです。イグトランス さんが書きました:オブジェクト指向は一種の方法論のようなものであって、これやVariantのような具体的なことはオブジェクト指向とは無関係だと私は思います。
流れ的には、『データ(htmlやmpegを含む)からロジック(クラス)そしてシステムへとオブジェクト(対象となる物)の範囲が時間と供に広がって来ている』って事ですよね!内容はこんな感じ さんが書きました:・クラスは構造体で代用する(事実、C++ の class は C++ の struct とほとんど同じであり、C の struct の拡張版である)
・new や delete にあたるものをクラス毎につくる
・メンバ関数(にあたる関数)の第1引数は、操作対象となるオブジェクトへのポインタとする(これは C++ の this ポインタのような役割をする)
DOS環境で、以下の概念はあったかな?
・コンストラクタやデストラクタの連鎖は手動で行う必要がある
・コンポジションは、普通にできる
・継承は少し工夫が必要だろう
・ポリモーフィズムは、たとえば関数ポインタをうまく使えばできるだろう
・クラススコープがないので、識別子名の衝突を避けるための命名法を工夫する必要がある
オブジェクト指向って、ずいぶんと昔からあったんですね~。マティさん さんが書きました:流れ的には、『データ(htmlやmpegを含む)からロジック(クラス)そしてシステムへとオブジェクト(対象となる物)の範囲が時間と供に広がって来ている』って事ですよね!
使用する側から見ると、その通りだと思います。淡幻星 さんが書きました:先日の友人との雑談では「オブジェクト指向=カプセル化して他人のライブラリを(楽に&安全に)ガンガン使っていきましょう! 中身は気にしないのです(必要なものは1セットにまとまってます)。ブラックボックス化バンザイ。」という結論に達しました。これで友人、すっきり納得してくれました♪
私は、こういう見方をしてますが、どうでしょう?^^;
Variant型の例は、まさにそんな感じだと思いましたよ。
の通りです。自分も経験から理解しているふりをしていますので・・・詳しいことは、情報系出身者に質問してみで下さい。イグトランス さんが書きました:オブジェクト指向は一種の考え方や捉え方のようなものであって
オブジェクト指向は『広げていくこと』ではありません。淡幻星 さんが書きました:オブジェクト指向って、ずいぶんと昔からあったんですね~。
・・・あ、そういうわけでもないですか。『広げていくこと』がオブジェクト指向、かな?
OSのAPIを気にしなくてもよい方向に進んでいるということは、.NET FrameWork自体がWinAPIに変わる物を用意したということでしょうか。.NetFrameworkでOSのAPIを気にしなくても良い方向に進んでいますよね!これもオブジェクト指向の進化ですよね!
(.NetFrameworkはWin以外でも使用できる)
WinVistaの最初の案では、OSのAPIもWinFX(.NetFramework)を標準にすると言っていました。
そうなんですか。確かに考え方なら日々進化していきますよね^^;オブジェクト指向は、物の考え方と捕らえてください。考え方なので日々進化して行きます。
(基本的に、使う側が楽に確実に処理できるかを目的にしていると思います。)
さらに本文を読み進めていくと上記メッセージ送信ともう1つ、オブジェクト指向プログラミングとは相互にメッセージを送りあうオブジェクトの集まりとしてプログラムを構成する技法である。
確かに外れてきていますよね...。(ハンガリー記法→オブジェクト指向)スレッドの内容から外れてきているようにも思えますが,あえて。
やはり難しいですね...。オブジェクトはこの説明文を見ると”箱”ですかね。オブジェクト
オブジェクト指向においては、データと手続きを一体化して保持している存在。オブジェクトは、外部からのメソッド呼び出しでメッセージを受け取り、内部で処理を行い、他のオブジェクトにメッセージを送ったり、自己の状態を変更する。オブジェクトが集まったものが実行プログラムになる。
オブジェクト指向
オブジェクト指向とは、オブジェクト同士の相互作用としてシステムの振る舞いをとらえる考え方である。
そんなに難しいとか考えなくても良いですよ。やはり難しいですね...。オブジェクトはこの説明文を見ると”箱”ですかね。
> 外から入ってきたメッセージを内部で変換して自分の”箱”の種類(?)を変更したりほかの”箱”にメッセージを送る。
> そして、その”箱”が集まったものがプログラムですかね...。
コード: 全て選択
#N88BASIC
' ↓ ここからプログラムが実行されます
/* 構造化 */
Type MYDATA
Age As Long
Name[255] As Char
End Type
Sub InputAge(ByRef dat As MYDATA)
Dim s As Long /*バグなのかINPUTで構造体のメンバに値が入力されない*/
Input "年齢を入力してください。 >",s
dat.Age=s
End Sub
Sub InputName(ByRef dat As MYDATA)
Dim s As String
Input "名前を入力してください。 >",s
lstrcpy(dat.Name,StrPtr(s))
End Sub
Sub PrintMyData(ByRef dat As MYDATA)
Print "名前 ",MakeStr(dat.Name)
Print "年齢 ",dat.Age
End Sub
Dim MyData As MYDATA
InputName(MyData)
InputAge(MyData)
PrintMyData(MyData)
コード: 全て選択
#N88BASIC
' ↓ ここからプログラムが実行されます
/* オブジェクト指向 */
Class CMYDATA
Private
Age As Long
Name[255] As Char
Public
Sub InputAge()
Input "年齢を入力してください。 >",Age
End Sub
Sub InputName()
Dim s As String
Input "名前を入力してください。 >",s
lstrcpy(Name,StrPtr(s))
End Sub
Sub PrintMyData()
Print "名前 ",MakeStr(Name)
Print "年齢 ",Age
End Sub
End Class
Dim MyData As CMYDATA
MyData.InputName()
MyData.InputAge()
MyData.PrintMyData()
NoWestさん、サンプルソースを使っての詳しい説明ありがとうございます。自分でやってみて大体理解できました。2つを比較すると構造化では関数の引数が構造体なのですが
オブジェクト指向ではクラスが関数を呼び出してますよね。
そうです。> 確かに難しく考えすぎでした。「Class」内でメンバ関数およびメンバ変数を定義し、「Private」はそのクラス内だけアクセス可能なもの、「Public」はプログラム内のどんなところからでもアクセス可能ということですね^^
> あとはこれをどのように利用していくか...。自分でいろいろとやっていきたいと思います。