0

起動時に ruby​​ のアプリケーションには、コマンドライン モードとファイルモードの 2 つのモードがあるとします。

パラメータruby​​ myprogram input.txt output.txtを指定すると、入力ファイル内のいくつかのコマンドに基づいて出力が生成されます。また、パラメーターが指定されていない場合は、コマンド プロンプトが表示されます。次のコマンドで。

create_class_with_capacity 40

create_student_with_marks Alex 70

create_student_with_marks Mathew 30

create_student_with_marks John 55

..

create_student_with_marks Sylvia 70 etc...


fail_student_roll_no 12

=> Student with roll number 12 #{student} failed


give_marks_to_roll_no 70 1

=>Student with roll number 1 Alex got 70 marks


find_all_students_with_marks 70

=> Alex, Peter , Russell , Mark etc...

RSpec、TDD、Cucumber、SOLID、およびパターンを念頭に置いて、そのようなアプリケーションを設計する方法。私が直接尋ねているのは、該当する場合はモジュールであるべきものを設計するために、ここでオブジェクトであるべきものは何ですか..? そして、ここでテストする必要があるものとそうでないものをどのように判断するのですか? オブジェクト指向設計の観点から最も適切なメカニズムを設計します。

また、この種のオブジェクト指向設計の原則と ruby​​ の実践については、本やブログを参照してください。

4

1 に答える 1

4

このアプリケーションを作成する必要があると言っていますか? これは宿題ですか?

あなたは分析麻痺に苦しんでいるように思えます。頭の中でズームする流行語が多すぎます。

パターンについて心配するのはやめましょう。問題を分解して、コードを書き始めます。

1 つの推奨事項は、I/O をクラスから除外することです。ユーザーとの対話とは関係のないすべてのロジックを基本クラスに配置します。そうすれば、テキスト バージョンを置き換える Web ベースの UI を作成するように求められた場合でも機能します。

何をテストする必要がありますか?壊れる可能性があると思われるすべてのコード。

オブジェクト指向設計の最も適切な方法は? 明白なことを実行してください: 名詞は問題ステートメントの潜在的なオブジェクトであり、動詞は潜在的な方法です。

私が見ているいくつかの潜在的なオブジェクトは次のとおりです: Student、Course、Roll。

考えられるメソッドを次に示します。 Student と Course の CRUD 操作。成績を設定し、生徒を不合格としてマークします。

それほど複雑ではありません。「シンプル」に考えて何かを機能させてから、それを改良します。

アップデート:

何をしたか説明していただけると回答しやすいです。

もしそれが宿題の問題だとしたら、それが大きな違いを生むとは思えません。私たちに推測させるのではなく、SOLID を読んで、作成したクラスを見て、それらの原則に準拠しているかどうかを自問してみてください。

パターン?過大評価。それらについて心配する必要はありません。

于 2011-11-27T14:27:16.957 に答える