問題タブ [object-oriented-analysis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
68 参照

java - is-a 関係または instanceof 関係が特定の状況に適しているかどうかを判断する方法は?

OK、これは私に何度も起こったので、コミュニティに尋ねたほうがよいでしょう。何かをインスタンスとして宣言するか is-a 継承として宣言する (およびサブクラスのインスタンスを宣言する) のどちらが適しているかを判断する際に、しばしば問題が生じます。

例えば、

変更されないis-aと変更される is staticBaseStation- a の場合、位置が変更されるたびに を呼び出して、静的および動的 Ba​​seStation を個別のオブジェクトとして宣言することはできませんか? しかし、そうすることでオブジェクト指向の原則に違反する気がします。BaseStation(x,y)dynamicBaseStationBaseStation(x,y)dynamicBaseStationsetXsetY

では、基本的に、余分な作業のように感じる場合、継承を使用するかどうかをどのように決定すればよいでしょうか?

0 投票する
4 に答える
12160 参照

scala - メソッドをトレイトまたはケースクラスに入れますか?

Scala で同じトレイトを継承する 2 つの異なるクラスのメソッドを定義するには、2 つの方法があります。

代替手段は次のとおりです。

最初のメソッドはメソッド名を繰り返しますが、2 番目のメソッドはクラス名を繰り返します。

コードが分かれているので、1番の方法が一番使いやすいと思います。ただし、複雑なメソッドには2番目のメソッドを使用することが多いため、たとえば次のように、追加の引数を非常に簡単に追加できます。

これらの慣行の他の違いは何ですか? 2 番目のアプローチを選択した場合、バグが発生する可能性はありますか?

編集: 私はオープン/クローズの原則を引用しましたが、新しいケースクラスに応じて関数の出力だけでなく、コードのリファクタリングのために入力も変更する必要がある場合があります。最初のものよりも良いパターンはありますか? 最初の例に前述の機能を追加すると、入力が繰り返される見苦しいコードが生成されます。

0 投票する
2 に答える
73 参照

java - Java リクエスト Double

私のプログラムでscanner.NextDouble()を使用していて、ユーザーがdoubleではないもの、つまりあらゆる種類のcharを入力した場合、有効なdoubleを入力するように再プロンプトするにはどうすればよいですか? 私は例外をスローしてそれをキャッチしようとしましたが、私ができることは、それが間違っていたことを伝えることだけです。制御をtryブロックに戻す方法がわかりません。誰かが何か意見を持っていれば、それは大歓迎です!

ありがとう

0 投票する
1 に答える
1206 参照

oop - オブジェクト指向設計 - 専門化: 継承と属性

私は通常、サブクラスによってクラスを継承することによってクラスを特殊化するか、クラスを分類する属性を定義することによってクラスを特殊化するかの選択を迫られる設計上の問題に出くわします。たとえば、車のコンポーネントのコレクションの場合、クラス (ホイール、タイヤ、ドアなど) を定義するか、"Type" という属性を持つ単一のクラス "CarComponent" を定義できます。さまざまなタイプの自動車コンポーネントをリストする列挙からの値。

これら 2 つのアプローチを比較するにはどうすればよいでしょうか。また、それぞれを推奨する設計パターンは何でしょうか?

ありがとう。

0 投票する
2 に答える
10899 参照

uml - ステート チャート、ステート マシン図、状態遷移図の違い

ステート チャート図ステート マシン図状態遷移図の違いは何ですか? いくつかの場所で、ステート チャート図とステート マシン図が同じことを意味することを学びましたが、いくつかの場所では異なるものとして示されています。一方、ステート マシン図は、オブジェクトとその存続期間中のオブジェクト間の遷移を示します。

0 投票する
1 に答える
99 参照

ruby - Ruby でのモジュールの読み込みの問題

あるファイルからはモジュールの関数にアクセスできるが、別のファイルからはアクセスできないという状況があります。これらのファイルは両方とも同じディレクトリにあります。できる限りコードを再作成してみます。

ディレクトリ構造:

lib/AutoConfig.rb

lib/FileGenerator.rb

lib/modules/helper.rb

AutoConfig ファイルは、アプリの主力です。モジュール関数を呼び出すと、myhelper何の問題もありません。AutoConfig は途中で を呼び出しますFileGenerator.generatorFunction

FileGenerator.generatorFunctionも同じモジュール関数が含まれていますが、何らかの理由でプログラムを実行すると次のエラーが発生します。

私はこれで数時間、さまざまな組み合わせを試してみましたが、どこが間違っているのかわかりません。どんな助けでも大歓迎です。

0 投票する
4 に答える
231 参照

java - Java OOP の概念

上記から、それMyClassがクラスでpublic static void main(String[] args) メソッドであるとすれば、コードのどの部分がオブジェクトと見なされるかを知りたいと思います。

クラスにオブジェクトがあり、オブジェクトにメソッドがあるとしたら、上記のコードのどの部分がオブジェクトですか? ここに作成されたオブジェクトはありますか?