14

私は自分自身のプロジェクトのいくつかに取り組んできましたが、不愉快な露出はありません。現在、関数のポリモーフィズムを使用してデータベース関数の共通クラスを作成するなど、オブジェクト指向アプローチを無視して小さなアプリケーションを開発するための単純なアプローチを使用していますが、コンストラクターを少し使用していますが、OOPを使用してプロジェクトロジック全体を実装する方法を実際に考えることはできません。

私は、インターフェース、抽象クラス、封印されたクラス、その他のoopsの概念とは何かを知っており、非常に明確なイメージを念頭に置いています。しかし、問題は、いつ、どのようにOOPを必要な場所に大量に実装する必要があるかということです。

リアルタイムアプリケーションとそのケーススタディを研究する必要がありますか?もしそうなら、私がそれらを読んでそれらを実装することができるいくつかのサイトまたは本/電子書籍を私に紹介してください。

現在、プログラミング中に自分が不完全だと感じています。私はデータベースとそのほとんどのコンポーネントを効率的に実装していますが、OOPを使おうとしている間は子供です。

車などの形のようなOOPを理解させようとする多くの例を読みました。これらすべての種類。彼らは概念を明確にすることを望んでいますが、いくつかのライブプロジェクトに実装するには十分ではありません

4

6 に答える 6

16

OOPの適用を学ぶための最初のステップは、一般的な機能とデータをクラスに収集することです。最初は素晴らしい仕事をしませんが、良くなります。基本に立ち返ることについてのCodeMagazineの最近の記事は、これをうまく表現しています。

ソリューション内の実物を表す実オブジェクト(になるクラス)の作成を試み始めます。(これには派手な名前がありますが、これも非常に基本的な名前です。)これは、便利でテーマに関連する関数のユーティリティクラスを作成しているわけではありません。オブジェクトに保持されているデータが、そのオブジェクトのメソッドを呼び出すときにパラメーターを保存するように調整してください。コミュニティ内に実際に存在するオブジェクトを考えてください。それらをパーソナライズします。クラスの機能を使用しているときに、クラスで何が起こっているのかを気にしないように配置します。

最初は、これらすべてのデザインパターンについて心配する必要はありません。学んだ基本的なOOPの概念を最初に実践することをお勧めします。これらのパターンに焦点を合わせると、多くの人がOOPの哲学について実際に考えることをスキップし、代わりに事前にパッケージ化された計画に自分の状況を詰め込もうとします。エンターテインメントやアイデアの「デザインパターン」について読んでください。後で、それらを実際に研究して、それらのいくつかを具体的に実装しようとするでしょう。

要するに、あなたは飛び込んで、あなたが学んだことを適用し始めなければなりません。良いデザインを作る前に、悪いデザインを作る必要があるので、心配しないでください。

質問者からのコメントに応じて編集する:次のステップは、クラス間の関係に集中することかもしれないと思います。たとえば、ロジックでCustomerオブジェクトを使用すると、関連するOrderオブジェクトを取得するために労力を費やす必要はありません。oCustomer.Ordersを返すプロパティを作成しますList<Order>。(これはac#の例です。)このプロパティでは、すべての顧客の注文を取得し、それらをリストオブジェクトに入れ、プロパティが再度呼び出された場合に備えてプライベート変数に保持し、そのリストオブジェクトを返します。すでにこれを行っている場合は、次に試すのが難しい新しいことを探してください。おそらく、顧客が最初に注文した日付を頻繁に見つける必要があります。次に、から継承するOrdersクラスを作成しCollection<order>て、基本を置き換えますList<order>、プロパティFirstOrderを追加します。その後、行うことができますvar FirstOrderDate = oCustomer.Orders.FirstOrder.OrderDate

次に難しい新しいことをやろうとし続けてください。メンバーを継承して追加します。子クラスで基本クラスを作成します。基本クラスのメンバーをオーバーライドします。カスタムコレクションを使用して使いこなしてください。

使用しているオブジェクトモデルから学びます。直感的で使いやすいものを見つけたら、そのようにしてください!キャリアの早い段階で、直感的で簡単なMS-wordオブジェクトモデルを幅広く使用する必要がありました。私が自分のライブラリを作ったとき、私はその感覚を複製しようとしました。結果は良かった。

最終的にパターンを研究します。あなたがそれらに圧倒されないように私が忠告する限り、それらは素晴らしいアイデアの源であり、そして最も重要なことに試してみるものです。(一般的な「パターン」の名前を知ることは、コミュニケーションの目的にも役立ちます。)たとえば、プラグインモデルを見ると、インターフェイスの概念は非常に理にかなっています。

于 2009-12-24T18:43:02.857 に答える
4

これは難しい問題です。優れたオブジェクト指向デザインは、実際のアプリケーションの構築、変更の必要性、元のデザインの再評価の強制などの経験を積んだ後で初めて、第二の性質になります。問題は、ほとんどの例がまったく些細なことによって悪化します。

私が提案できる最善のことは、デザインパターンの実装を検索する場合です。これらは必ずしも平凡で些細な例を提供するわけではありませんが、他の人々のソフトウェアでそれらを見るときに、OOの原則の適用を認識するのに役立ちます。他にできることは、一連の一般的なパターンの実際の実装を自分で作成することです。次に、本番アプリケーションを作成するときに、接続を確立し、関連するパターン/原則/設計手法を適用できるようになることを願っています。

要するに、経験に代わるものはありません。

実際のコードについては、 codeplexのような場所で興味のあるプロジェクトをいくつか見ていきます。

これがGOFデザインパターンの古典的なリストです

一般的なパターンの例を次に示します。

于 2009-12-24T18:28:11.000 に答える
3

まず、OOPSの代わりにOOPを使用することをお勧めします。OOPはプログラミングパラダイムであるため、「システム」の部分は実際には必要ありません(ただし、もちろんこれは単なる意見です)。また、ほとんどの人はOOPを認識しやすいので、質問がより理解しやすくなります。最後に、OOPSはオブジェクト指向プログラミングを間違いのように見せるためです(hehehe ...申し訳ありませんが、悪い冗談です)。もちろん、これは私の意見であり、もちろん間違っている可能性があります。

とにかく、ビジネスに。計画段階の開始時に考えすぎているため、問題が発生していると思います。各オブジェクトが持つメソッドと属性について考えるのはやめましょう。それがどのように役立つか、またはどのように使用するかについては考えないでください。コンピュータとそれをどのように実装するかを忘れてください。頭に浮かぶオブジェクトをリストするだけです。データベースアプリケーションの作成についておっしゃいました。保存したいデータから始めることができます。たとえば、学生のデータベースを作成する場合は、Studentオブジェクトを作成することをお勧めします。また、データベースに接続する方法も必要になるため、オブジェクトをデータベースへの接続として機能させる必要があります。もちろん、これら2つのオブジェクトは単なる提案です。それらを使用するかどうかはあなた次第です。

オブジェクトの長いリストを作成した後、作成したオブジェクトを確認し、それらが何をするかをリストします。オブジェクトが何もしないからといって、リストからオブジェクトを削除する必要があるという意味ではありません。たとえば、「Student」オブジェクトを取り上げます。このオブジェクトはゲッターとセッターで構成されている場合がありますが、これは学生のモデルであるため、データベースシステムで非常に役立ちます。Cプログラミング言語を知っている場合は、「Student」オブジェクトを構造体と考えることができます。。このリストを完成させたら、本当に似ているように見えるオブジェクトを組み合わせてみてください。受動的(データの保存など)または能動的(データベースへの接続やユーザー入力の取得など)に、何もする必要のないオブジェクトをドロップします。オブジェクトと、それらの属性およびメソッドの大部分が必要です。あとは、これらのオブジェクトを実装して、機能を追加するだけです。

これをさらに理解するには、実体関連図を読むことをお勧めします。それはあなたのデザインに役立つはずです。あなたは物事を考えすぎていると思うので、パターンとGOFをまだ読んでいないことをお勧めします。それは、あなたをさらに混乱させる可能性があるからです。この障害を超えると非常に役立ちますが、現時点では、問題にレイヤーが追加されるだけです。

于 2009-12-24T19:34:46.247 に答える
1

あなたが探しているのはオブジェクト指向のデザインパターンだと思います。多くの場合、最高のOOP原則の多くは、多くのタイプのプロジェクトで使用できる標準のデザインパターンで実装されます。

多くの開発者は、問題を検討するときに、それを標準のデザインパターンに適合させようとします。これを正しく使用すると、開発がスピードアップします。

オブジェクト指向のデザインパターンとその適用方法を読んでおくことをお勧めします。この良い例は、ファクトリメソッドパターンでの抽象クラスまたはインターフェイスの使用です。

ウィキペディア(http://en.wikipedia.org/wiki/Factory_method_pattern

于 2009-12-24T18:29:39.327 に答える
1

最初は、デザインパターンに関するこの古典的な本をお勧めします。http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612/ref=sr_1_1?ie=UTF8&s=books&qid=1261679601&sr=8-1

しかし、結局のところ、本当に重要なのは、実際の大きなプロジェクトでの実務経験です。あなたが働き始めるとき、そして数年後、すべてがはるかに明確になるでしょう。

于 2009-12-24T18:35:59.407 に答える
1

物事が私のためにクリックされた瞬間は、ケント・ベックによる「例によるテスト駆動開発」を読んでいました。この本の最初の部分全体は、ベックが機能の一部を段階的に設計するウォークスルーです。プロセスが有機的な方法で行われるのを見ると、非常に役立つことがわかりました。時間の経過とともに進化する非常に少数のクラスから始まります。
パターンから始めるのは必ずしも良い考えではないと思います。デザインパターンは素晴らしいですが、実際のプロジェクトで最初に間違ったことをして、OOで何が機能し、何が機能しないかを理解した後でないと、なぜそれらが役立つのかが明らかになります。

于 2009-12-24T20:01:40.700 に答える