- - PR -
オブジェクト指向プログラミングのセオリーについて
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-10-20 13:40
こんにちは。VB.NET&プログラマーの初心者です。
今、オブジェクト指向プログラミングをする上で、共通的な変数や定数、 及び構造体などを作成する上でどのようなソース形式したら良いのか (共通のクラスがいいのか、共通モジュールがいいのか、 メインのクラスにPublicとして宣言した方が良いのか) 悩んでいます。 オブジェクト指向プログラミングにおいての セオリーを知らない為、どのようにプログラミング していった方が万人にわかりやすく、管理がしやすいのか 皆さんからアドバイスを頂きたいと思います。 参考までに開発環境を以下に記載します。 <開発環境> VS2003(日本語版が発売次第、VS2005に移行予定) VB.NET ※現在、新製品のクラサバソフトのクライアント画面を開発中です。 | ||||||||||||||||
|
投稿日時: 2005-10-20 14:07
そういうクラスを作ることになると思います。 複数の箇所で使われているから共通という発想ではなく、1つにまとめた 方がすっきりするものを1つのクラスにするという視点が良いと思います。 たとえ偶然同じ値であっても、別の意味があって、別の目的に使っている ならば1つにまとめるべきではありません。個々のクラスに持つほうが良 いでしょう。 クラスを作っていくと、アプリケーション全体で共通の定数というのは、 ほとんど無い状態になるはずです。 _________________ たつごろー codeseek こみゅぷらす | ||||||||||||||||
|
投稿日時: 2005-10-20 14:13
「共通のクラス」とは何でしょうか? たとえば Common という名前のクラスがあって、 そこに汎用的な静的メソッドが詰め込まれているようなライブラリが、 世の中に溢れていますが、そういう類でしょうか? クラスである以上、そのクラスに特化したメソッドを定義することになります。 ソースを見ていても非常に判りやすい記述になるからです。 (その実例が .NET Framework ですが、これはサービス指向に近いですね) 標準モジュールは、OOP ではやめた方が良いでしょう。 いわゆる、グローバルという考え方が "できてしまい" ます。
オブジェクト指向のセオリと言われてしまうと、 説明に莫大な文字数を費やすことになります。 ということで、勝手ながら少し的を絞らせて頂きます。 質問を見る限り 「昔で言う "共通モジュール" を作りたいが、どうやって組むべきか?」 と捉えられます。 ですので「万人にわかりやすく」「管理がしやすい」について返答します。
基本はクラス単位で独立していれば OK という漠然とした答えになります。 具体例は .NET Framework を見るとわかるでしょう。 広大な海でありながら、非常に判りやすいです。
.NET であれば、クラス ライブラリとして作成し、他のプロジェクトから参照します。 作成途中であっても「プロジェクト参照」が使えますし、VSS と合わせると大変便利です。 --- 万人にわかりやすい・管理しやすい、の 2 点において以下のリンクはかなり有用です。 一度、目を通されることを強くお勧めします。 クラス ライブラリ開発者向けのデザイン ガイドライン ただ、最低でも、継承の利点と欠点・インターフェイスの利点くらいまでは勉強して、 クラス ライブラリの作成に着手した方が良いかと思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2005-10-20 16:11
たつごろーさん、じゃんぬねっとさん回答ありがとうございます。
お二人の回答を聞く限り、そもそも共通的な変数・定数・構造体等を 持たなければいけないプログラム構成が間違っているような気がします。 ちょっとわからない部分もあったので、 以下に1つずつコメントしていきます。
たつごろーさんへ。 なるほどー、そういうものなんですか。 目的や処理毎にまとめるということはとてもわかりやすいのですが 実際にプログラミングをすると、同じような定義をそれぞれのクラス へ記述しなければならないからちょっと面倒ですね。 また、共通で使用したい定数等はクラス毎に分けるとメンテナンスが 面倒そうなのでどうなのかなぁと思いました。
じゃんねねっとさんへ。 説明が不十分ですみません。 VB.NETでプログラミングをしていく中で、それぞれのクラスで 共通的に使用する定数や構造体を、C言語でいうヘッダーファイルのように、 まとめたいと思っているのですが、ソース形式をモジュールやクラスなど、 どの形式で作成した方が良いのか分からず、クラス形式の事を「共通のクラス」 と表現していました。
じゃんねねっとさんへ。 どこかの本にも同じことが書いてありました。
じゃんねねっとさんへ。 お勧めのリンクはとても参考になりました。ありがとうございます。 で、最後にお二人へ質問ですが、 もしかして、通常オブジェクト指向プログラミングでは 共通的な定義体(C言語のヘッダーファイルのようなもの)が 必要な場合は、クラスとして作成し、そのクラスを継承(Inherits)して 使用していくのが一般的だということですか? [ メッセージ編集済み 編集者: taa 編集日時 2005-10-20 16:21 ] [ メッセージ編集済み 編集者: taa 編集日時 2005-10-20 16:27 ] | ||||||||||||||||
|
投稿日時: 2005-10-20 16:21
VSS:Visual Souce Safe マイクロソフトのソース履歴管理ツール(?)だったと。 詳細はマイクロソフトのページを参照してみてください。 http://www.microsoft.com/japan/msdn/ssafe/ _________________ #「やらない」と「出来ない」を混同してはならない | ||||||||||||||||
|
投稿日時: 2005-10-20 16:25
Visual SourceSafe のことです。(^-^*) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2005-10-20 16:31
すみません。
規約に引っかかってしまったみたいなので 宣伝部と思われる箇所を削除しました。
また、じゃんねねっとさん回答ありがとうございます。 | ||||||||||||||||
|
投稿日時: 2005-10-20 16:34
追記された内容について返答です。
あ、それは違います。 共通となる定義 (定数) などは、それはそれで共通となるクラスに分類して、 public なアクセス修飾子にしておけば問題ないと思います。 (うまく表現できませんが...) それ以外のものは、使用するクラス内で定義しましょうということです。 プロジェクトによっては外部ファイルなどにしておくべき定数もありますが。 # 前レス、被ってしまいました... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1|2|3
次のページへ»