掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
クラスの呼び元について (ID:123597)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>いい機会だと思って、オブジェクト指向をしっかりと勉強します。 はい。その言葉が頂ければボクなりの解釈を書いても問題ないでしょう。 まず、[VB6.0]だと Form オブジェクトはその名称がインスタンス(実体) を指す変数として使えて、ちょっと特殊な解釈が必要だと思うんですが、 [VB.NET]になって『Form もクラスである』という概念がはっきりする と、Form か?クラスか?の違いはどっちもクラスなんだから、目的に 応じて纏めれば良いのでは?…と思います。 ぐーぐる検索で幾つかのサイトに目を通して頂けたなら、純粋な意味で クラス化として有効なものは『抽象化』できるものと理解して頂けたと 思います。これは1つの部品として再利用できる形にし、生産性を上げたり、 データと手続きを一体化させる『カプセル化』や決められた手続き以外には データを扱うことができない『情報隠蔽』や属性や機能を別のものから受け 継ぐ『インヘリタンス(継承)』などに繋がるものです。最終的に『ポリモー フィズム』『オブジェクト指向』に行き着きます。 具体的に TextBox クラスを考えます。入力を必要とするアプリケーションで 同じモノを流用できます。ユーザの入力に対し文字列データを処理します。 文字列以外のデータを貼り付けたり出来ないように一定の手続きが決められて います。TextBox クラスの動きをそのまま利用して、ドロップダウンリスト と組み合わせれば ComboBox クラスに継承できます。 このような設計になっていると、クラス化する意味が出てきます。 質問の内容に戻りますと、おそらくこのクラスは他のアプリで利用できる 形ではありませんよね?特に Edit の内部処理なんて、このアプリでしか 使えない固有のモノでしょう?その時点で『純粋な意味で』クラス化する 意味は無くなっているのではないでしょうか?。つまり、Form 側にサブ プロシージャ(関数)として全て作成しても問題ないレベルでは?…という 事です。 まぁ、ただ、『純粋じゃナイ意味で』はクラス化した方が理解しやすい 場合は多々あります。ぐーぐる検索『クラス化 必要』ではこんなもの も引っ掛かりました。色々な切り口で調べてみて下さい。 [データベース系アプリケーションで、データや処理をどこまでクラス化する?] http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=13071&forum=25&16 質問のコードですが、例えば、色々な処理をするメインフォーム Form1 から、 データベース検索の為の Form2 を表示します。Form2 のボタン押下で Select Edit Insert ならどうコーディングしますか?Form2 のボタン押下イベント内に 記述しますか?。Form2 をクラスに置き換えて考えるとクラス内に記述する事に なりますね。でも Form2 の操作を Form1 からすると… Form1 に記述する事に なります。…この時点ではどちらでも良いでしょう。 では更に Form3 から Form2 を呼び出す場合は?同じ Select Edit Insert 処理があるなら Form2 に書いてないと2箇所に書く必要が出てきます。メンテ ナンスで修正が入ると複数箇所で修正が発生します。修正漏れの可能性も。 …ただし Form2 を引数にモジュールに渡して1箇所に纏める…って解決方法も あります。 ってな感じで考えて、いくら抽象化って言っても抽象化した部品だけでアプリは 作れません。どっかのクラスに抽象化できない処理は絶対書いてあります。 抽象化できない処理のみ纏めたクラス…ってアリかな?…定数なら標準モジュール に Const で書いてあったりしますが…。 ・目的(データベース処理・ファイル操作処理・通信処理…etc)を意識して纏めてみる。 ・2箇所以上に全く同じ処理を書くなら考えてみる。 ・ただし、解決法は『サブプロシージャ化』『モジュール化』『クラス化』など 1つではない。 って観点から考えてみてはどうでしょう? とりあえず過去ログ検索『クラス化』…でサブクラス化以外の話題↓ http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200112/01120001.txt http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200210/02100001.txt http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200404/04040001.txt
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.