1. ホーム
  2. architecture

[解決済み】オブジェクト指向のプロジェクトはどのように設計するのですか?[クローズド]

2022-04-03 08:19:06

質問

私は、多くのクラスがあり、拡張可能である必要がある大規模なプロジェクトに取り組んでいますが、私のプログラムをどのように計画し、クラスがどのように相互作用する必要があるかがわかりません。

数学期前にOODコースを受講し、UMLの書き方や、要求仕様書をオブジェクトやクラスに変換することなど、多くのことを学びました。シーケンス図も習いましたが、なぜか講義を聞き逃したのか、あまり印象に残っていません。

以前のプロジェクトでは、コースで学んだメソッドを使ってみましたが、たいていの場合、「ああ、これは私が考えていたものと同じように見えるね」と言えるやいなや、新しい機能を追加するために泥の中を掘る気にはなれないコードで終わってしまいます。

私の手元にあるのは、Steve McConnellの コード・コンプリート このサイトでも、他のサイトでも、常に素晴らしいと聞いています。デザインの章を読みましたが、私が求めている情報が出てこないようです。しかし、その情報をすべて自分のプロジェクトに適用することはできません。

そこで 高レベルの設計段階(プログラミングを始める前)で、必要なクラス(特に「現実の世界のオブジェクト」に基づかないクラス)と、それらがどのように相互作用するかを決定するために行うことは何でしょうか。 ?

具体的には、どのような手法を使っているのかに興味があります。どのようなプロセスを踏めば、最終製品に近い、きれいなデザインができるのでしょうか?

どのように解決するのですか?

私が初期設計(クラス図にたどり着くまで)に使っている手順は、以下の通りです。

  1. 要求の収集。 クライアントと話し、ユースケースを因数分解して、ソフトウェアが持つべき機能を定義します。

  2. 個々のユースケースの物語を構成する。

  3. 物語に目を通し、クラス候補として名詞(人、場所、物)を、メソッド/ビヘイビアとして動詞(行動)をハイライトします。

  4. 重複する名詞を捨て、共通する機能を因数分解する。

  5. クラス図を作成する。 Java開発者であれば、SunのNetBeans 6.7には、ダイアグラム作成とラウンドトリップエンジニアリングを可能にするUMLモジュールがあり、無料で利用できます。 Eclipse(オープンソースのJava IDE)にもモデリングフレームワークがありますが、私は使った経験がありません。 また、オープンソースのArgoUMLを試してみるのもいいかもしれません。

  6. OODの原則を適用してクラスを整理する(共通機能の因数分解、階層の構築など)