• 締切済み

VB.NET,2005でのオブジェクト指向、クラス設計のポイント。

VB6ユーザでした。 これから、VisualStudio2005で、VisualBasiの開発を 新規に行う所です。 VB6ユーザの悩み所として、クラス設計があるかと思います。 オブジェクト指向の概念は理解しているのですが、 クラス設計のポイントをアドバイス頂けないでしょうか。 みなさんの、VB.NET、VisualStudio2005等での オブジェクト指向プログラミングの勘所を教えて頂けると 助かります。 思いつく事では・・・ 例1) 顧客DBがあり、いろんな画面から操作する場合、 顧客クラスを用意し、DB操作は、顧客クラスを経由して 行うとか。 例2) 出来るかどうか分かりませんが、 画面で共通部品となる部分を、クラス化し、継承して いくとか。 参考になるHPでも良いので、アドバイスをお願い致します。

みんなの回答

  • us123
  • ベストアンサー率26% (10/38)
回答No.2

オブジェクト指向技術には多くの解釈や説明があるように思います 少しでも抽象的な理解を深めると、オブジェクトの認識の仕方が変わるように思います 参考に提案します オブジェクト指向システム分析設計入門 http://www.sra.co.jp/people/aoki/IntroductionToOOAOOD/index.htm&...​ オブジェクト指向は内容よりも形式を大事にする。抽象化を武器にして,内容から形式を切り離し,独創的な構想から新たな形式を創り出すことを尊ぶのである。その意味で,哲学の構造主義や,数学の公理主義に近い。けっして機能主義や経験主義を否定しているのではない。内容の抽象化を経て得られた形式の背後には,無数の具体的なものが控えているはずであり,現実世界からかけはなれたものではない。しかし,形式を偏重し過ぎて,対応する現実世界を失った構想が乱用される危険が増したことも事実であろう。かといって,オブジェクト指向からフレームワークという枠組みを排斥すれば,オブジェクト指向そのものが...

回答No.1

お世話になります。 本は人によって合う合わないがありますが、 この本は結構おすすめです。 [Microsoft Visual Basic .NETで学ぶUML] http://www.amazon.co.jp/Microsoft-Visual-Basic-NET%E3%81%A7%E5%AD%A6%E3%81%B6UML-%E5%B0%8F%E6%9D%BE/dp/4891003286

関連するQ&A

  • VBがオブジェクト指向言語でない理由

    一般的にVBはオブジェクト指向ではない(VB7でその方向へ向かう)といわれていますが、実際にVBをさわり始め、いろんな本を読んでみると、 1)クラスが作成でき、構造体と関数を1つにまとめ、メンバ(プロパティ・メソッド)を定義付けできる 2)Implementsステートメントでクラスの継承が出来る と、ある程度のオブジェクト指向言語の要件を備えているように見えます。 といっても私はJAVAもSmallTalkも知らないので、「何が真のオブジェクト指向か」というのを良く判っていないのかも知れないのですが。 しかしC++関連書などを読んでいると出てくるクラスの使用例などはVBのそれと大差なく、なぜクラスの作成もできて、継承も可能なVBがオブジェクト指向ではないのか? という疑問がわいてきました。 JAVAとは何が違うのか? これが出来ないからオブジェクト指向ではないのだ! という理由をご存じの方、回答もらえればうれしいです。

  • オブジェクト指向について

    趣味でプログラミングをしているのですが オブジェクト指向の概念がうまく理解できていないので 教えていただけませんでしょうか? 解説本などを読むと、オブジェクト指向のクラスを動物クラスを継承して犬クラスや猫クラスなどと解説してあるのですが。 どうも、僕がプログラム設計するとしっぽクラスや泣き声クラスなどといった違った動物の類似機能をまとめてのクラスをつくり各メソッドとしてしまいまっています。 動物クラスや乗り物クラスを組み合わせてプログラムを設計する事ができません。 本格的なプログラムを組む用途では無いので気にしなくても目的の機能が実装できれば問題無いと知人からは言われ(面倒なので教えたくないのかもしれませんが)そのまま来てしまいました。 最近、気になって来たので。 正しい使い方を身に着けたいと思いチャレンジしていますが、変な癖がついていて犬や猫クラスなどと思いながら設計していると思考が止まってしまいます。 そこで、下記のことを教えていただけませんでしょうか? (1)泣き声クラスなどの同機能を1つのクラスにしてしまう設計しか出来ない(発想できない)のは考え方のどこがわるいのでしょうか? (追記:一部分だけならペンギンクラス猫クラスなどと言う動物クラスの継承的な発想はできるのですが実際のプログラミングの際は動物のようなわかり易い物オブジェクトとして目に見える物体ではない事柄をオブジェクト化にする事が難しく感じるのではないかと思います。) (2)今までの小さい規模での開発なら、クラスのつくり方がおかしくても不具合は無かったのですが、どのような時に困る事があるのでしょうか?(解説などでも再利用性などと、さらっと解説されていますがイマイチぴんときません) (3)正しくオブジェクト指向がマスター出来ている方にとって、どのクラスにどのメソッド実装するか悩む事などはあるのでしょうか? また、設計で一番悩むのはどのあたりですか? (4)UMLのマスターは必須でしょうか?(現在は、なんとなくUMLぽい感じでメモ書きをつくり、えせオブジェクト指向でプログラムを組んでいます。) (5)その他アドバイスがあればお願いします。 ※乱文で問題もハッキリせず質問の整理等がうまくいっていないと思いますが1つの項目だけでも構いませんので、ご教授お願いします。

    • ベストアンサー
    • Java
  • オブジェクト指向の教え方

    新入社員にJavaを教えているところなのですが、オブジェクト指向プログラミングをどのように教えていいか困っています。 全員がC言語研修を受講済みで、さらにJava言語も、継承やオーバーロード、例外まで一通り教えて、一応理解しています。 そこで、次のレベルとして、C言語風のプログラミング(「プログラム=関数の集まり」の考え方)から、オブジェクト指向(「プログラム=オブジェクトの集まり」の考え方)に意識改革させたいところです。 問題領域をオブジェクトの集まりとしてとらえ、そこからクラスを抽出していく、という説明がよくありますが、 「何をオブジェクトにするのか」「どのようにクラスを抽出したらいいのか」の部分を詳しく教えたいのですが、どのように説明したらいいでしょうか。また、参考になるWebサイトなどありませんでしょうか? 自分が普段作るときは、ほぼ「勘」でクラス設計していますので、それでは教えられなくて困っています。よろしくお願いします。

    • ベストアンサー
    • Java
  • 【オブジェクト指向について】

    【オブジェクト指向について】 こんにちは。初めて質問をさせていただきます。 さて、ただいまVBを勉強中なのですが、オブジェクト指向のところで躓いてしまいました。 質問したい事は以下の点です。 (1) オブジェクト指向の理解について   オブジェクト指向とは、プログラミングをするときに変数や機能などをクラスというものに格納しておくことで、プログラミングを円滑にすすめるための概念であると理解していますが、この理解は正しいのでしょうか? ご回答お待ちしております。よろしくお願いいたします。

  • オブジェクト指向に関して。

    Javaの解説本を読んでオブジェクト指向プログラミングという物があることをしりました。その本には「オブジェクトはデータとそのデータを扱うための機能を持っている。この機能はメソッドと呼ぶ。クラスは設計図のような物で変数とメソッドから構成されている。設計図を実際に形にした物がインスタンスである。」と書いてありました。私はオブジェクト=クラスのような感じがしたのですが、実際のところオブジェクト=クラスでいいのでしょうか?  また、友人に話したところ、オブジェクト指向はサブルーチンに似ているといっていました。私はプログラミングの知識が全くないのでサブルーチンという物が何なのかわからないのですが、サブルーチンとオブジェクト指向の考え方は違うような気がするのです。友人に説明して納得させるにはどうしたら良いのでしょうか? ぜひ、力を課してください。

  • VBのシステムの設計書にUMLは適用できますか?

    現在、VBでシステム開発を行っている者(新人)です。 VBで開発するシステムの基本設計書、詳細設計書を作成する際、UMLは利用できますでしょうか。 UMLはJava(オブジェクト指向)向きのもので、VB向きではないのは分かっているのですが。 (上司に、VBの設計書にUMLはどう使えるかのレポートを書くように言われまして^^;) VBでクラスモジュールを作る場合には、クラス図やオブジェクト図が適用できるのかと思いますが、クラスを作らない場合など、他にはUMLのどのようなものが適用できるでしょうか? DBのER図などに適用できますでしょうか? また、VBで開発するシステムの設計書の特徴などがあったら教えていただきたいと思います。VBだったらこういう風に書くとか(画面設計にフォームの画像を貼るとか)、この項目はVBの場合いらないとか(上司は「VBはソースが分かりやすいから詳細設計はいらないんじゃないか?」と言っています)、どんなことでもいいので、アイデアを下さい。  ご指導の程、よろしくお願いいたします。

  • オブジェクト指向全般、及び、クラス設計について。

    オブジェクト指向全般、クラス設計についての質問です。 当方、C#の日曜プログラマであり、数年まえから趣味のプログラミングを楽しんでおりました。 これまではあまりOOPに関する深い部分の理解をしないままなんとなくプログラミングをしてきましたが、このほど、そこらへんの理解を深めるべく名著と呼ばれる以下の書籍を買い漁って理解を深めようと模索しておりましたが、どうも、しっくりきません。 リファクタリング プログラミングの体質改善テクニック(マーチンファウラー) オブジェクト指向でなぜつくるのか(平澤章) デザインパターンとともに学ぶ オブジェクト指向のこころ(アラン・シャロウェイ) (これ以外に名前は失念してしまいましたが、UNLの書籍も読みました) それぞれの書籍を読んで「うん。なるほど。」というある程度の理解はできているつもりですが、如何せん、自分のコードで・・・となると、ちょうど作文の最初の一文が見つから無いときのような、そんな感覚に襲われてしまします。 これまでの自分のプログラミングというのは、「動けば良い」という部分が最優先であり、かつ、それのみにしかこだわって無かったことも原因としてはありそうです。 その中でも、特に戸惑ってしまうのが、「何をクラスにするのか」という最も基本的な部分です。 今習作として、2ch用ブラウザのコードを書いていますが クラス候補としていくつかのものを、確信の無い状態で挙げてはみますが ワード及び原則としての「責務」「単一責任の原則」「高凝集度」「疎結合」・・・ (それぞれの用語や原則の意味は、ある程度理解しているつもりですが) これらの用語の海で溺れてしまっている感覚で、何をクラスとすればよいのか?という部分で すでにアップアップしているような感じとなってしまいます。 また、個々のオブジェクトの関連において、あるオブジェクトを保持するのはどのオブジェクトである べきか?また、あるオブジェクトにメッセージパッシングするのはどのオブジェクトであるべきなのか?等など・・・このあたりについても、一向に頭の中の霧が晴れてくれません。 このような、悩みを解消する考え方、方法、その他おすすめの書籍でも構いませんが、ご助言いただけませんでしょうか? よろしくおねがいします。

  • オブジェクト指向の間違いと改善案について

    オブジェクト指向というより オブジェクト指向プログラミングについての間違いと改善案をブログに書いてみました。 http://chaosblogchaos.blog.fc2.com/?no=2 この考え方に間違いがあるでしょうか? 説明不足の点はないでしょうか? よろしくお願いします。 以下ブログの内容 ---------- ■カオス指向(仮) カオス指向(仮)とは、オブジェクトに処理を追加・削除することでオブジェクトの振る舞いに無限性を持たせる試みです。 カオス指向(仮)ではデータが主体となり、木構造で保持します。 (ファイルフォルダで例えると、フォルダがオブジェクト、ファイルがプロパティに当たるイメージです) 処理を追加・削除が可能なことからプロトタイプベースがもっとも近いですが、 オブジェクトが親子関係を持つことと オブジェクトの親子関係から処理が影響を受ける事が異なります。 ●オブジェクトの内容  ・配列か連想配列で子オブジェクトを保持できます。    オブジェクトどうしの強い関係を意味し、親が削除される場合、子も削除される関係にあります。    オブジェクトはルートからの木構造の中に必ず存在する事になります。  ・別途、変数領域を確保する。    処理で使用する値を保持します。    オブジェクトどうしの弱い関係を保持できます。  ・処理を持つ。    オブジェクトに処理を持たせることができるます。    プロトタイプベースと異なる点は、    オブジェクトが処理を持っていても、オブジェクトがその処理をするわけでは無く、自身と子オブジェクトに対して適用され、”認識タイプ”を持つ場合に処理します。  ・”認識タイプ”を持つ。    処理の実行を制御します。認識タイプを含むかどうかで処理を行うかどうかを決定します。    オブジェクトのクラスは”認識タイプ”で実現可能と考えて問題ありません。 ●”認識タイプ” オブジェクト指向なら、 人は歩く、話す、・・・。Aさんは人。Aさんは話す。 カオス指向なら、 歩けるなら歩く、話せるなら話す、・・・。Aさんは歩ける、話せる、・・・。Aさんは話す。(歩ける・話せるを認識するようにした場合) 人は歩く、人は話す、・・・。Aさんは人。Aさんは話す。(人を認識するようにした場合) のどちらでも作成が可能で、 話せるなら話す、・・・。の場合、ウサギAの”認識タイプ”に話せるを追加することで、ウサギAは話せるようになります。 話せるウサギは実用的ではありませんが、 特定ユーザーのアクセスログだけ出力したい場合は、 処理を用意し、対象ユーザーに”認識タイプ”を追加することでログ出力処理を追加することが出来ます。 ●木構造と処理 ユーザー   日本     Aさん     Bさん   アメリカ     Cさん とある場合、 全ユーザーの処理をユーザーに保持 日本用の処理がある場合、日本に アメリカ用の処理がある場合、アメリカに処理を追加します。 そうすることでAさんは日本の処理、Cさんはアメリカの処理が行われます。 ●同一処理による関係 処理には優先順位が存在し、その順番で処理します。 処理A、処理Bとある場合、処理Aの中で元処理として実行します。 処理Aの中で元処理を行わない場合、処理Bは行われません。 ■カオス指向(仮)でどうなるか? ・幾つかのデザインパターンが不要になります。   デコレータ・コンポジット・ステートパターン等 ・多重継承らしきものが出来るようになります。   ※根本から違うので、多重継承らしきものとします。 ・循環問題が発生しませんない   ファイルフォルダのような木構造では循環は起こりえない。 ■オブジェクト指向プログラミングの問題点 オブジェクトにつき1クラスという決め付けが オブジェクト指向プログラミングにはあったのではないかと考えております。 オブジェクト指向では、 オブジェクト:クラス:継承クラスは1:1:1で、1:1:*は条件により可能ですが原則不可能。 カオス指向では、 オブジェクト:クラスは1:*と頭からクラスを複数持たせることで多重継承らしき形が実現可能ということです。 クラスの継承がなくなっていますが、クラスを複数持たせる事とクラスに順番を持たせることで継承が可能です。 オブジェクト指向プログラミングでは、オブジェクトにつき1クラスという決め付けが継承というシステムを作り 多重継承を難しくしたのではないかと考えております。

  • オブジェクト指向(具体的にはどんなクラスで作ります?)

     オブジェクト指向、クラスの便利さは大体わかりました。 (赤外線やマイクロ波の専門的な説明はわかったけど、リモコンや電子レンジに具体的に見てみないと、ぴんときていない状態だと、思います。) それに、一人で作っていることもあり、また構造化プログラミングで今まで作ってきたので、具体的にどういうクラスに分け、どういうことを将来予想し、作るのかがわかりません。 仮に、シンプルな日記から作る場合、どういったクラスを作り、どういうことを予想し、作りますか? 特に、継承や他に使いまわせるようにとか、ソフトを作り、何を想定するのかを知りたいです。

  • オブジェクト指向の特徴

    プログラミングにおいて Java言語などのオブジェクト指向とは 「クラス(設計図)からインスタンス(実体)を量産できる。」がオブジェクト指向ではないプログラミング言語との決定的な違いなのでしょうか? またオブジェクト指向とオブジェクト指向ではない言語の決定的な違いや 実際に実務において経験した感覚的な違いなどがあれば教えてください。 インターネットに乗っていない些細なことでも構いません。

    • ベストアンサー
    • Java

専門家に質問してみよう