問題タブ [oop]

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 投票する
5 に答える
504 参照

java - リモート インターフェイスまたはオブジェクト モデルの公開

非同期リモート インターフェイスを公開する最善の方法について質問があります。

条件は次のとおりです。

  • プロトコルは非同期です
  • 第三者はいつでもデータを変更できます
  • コマンドの往復は重要な場合があります
  • モデルは UI インタラクションに適している必要があります
  • プロトコルは特定のオブジェクトに対するクエリをサポートしているため、モデルもサポートする必要があります

この分野で不足しているスキルを改善する手段として (および Java 全般をブラッシュアップする手段として)、xmms2用の Eclipse ベースのフロントエンドを作成するプロジェクトを開始しました(後述)。

それで、問題は次のとおりです。リモート インターフェイスを適切なデータ モデルとして公開するにはどうすればよいですか (この場合は、管理とイベント処理を追跡します)。

一般的な議論からパターン名の削除、具体的な例やパッチまで、何でも歓迎します :)


ここでの私の主な目標は、このクラスの問題全般について学ぶことです。私のプロジェクトがそれから利益を得ることができるなら、それは結構ですが、議論を始めるための何かを持っていることを厳密に提示します.

私は「クライアント」と呼ぶプロトコル抽象化を実装しました(従来の理由から)。これにより、メソッド呼び出しを使用してほとんどの公開された機能にアクセスできますが、それは完全ではありませんが満足しています。

xmms2 デーモンによって提供される機能には、トラックの検索、メタデータの取得と操作、再生状態の変更、プレイリストのロードなどがあります。

私は xmms2 の最新の安定版リリースに更新している最中であり、現在の実装の明らかな弱点のいくつかを修正したほうがよいと考えました。

私の計画は、デーモンとのより自然な相互作用を可能にするプロトコル インターフェイスの上に、より良い抽象化を構築することです。現在の「モデル」の実装は使いにくく、率直に言って非常に醜いです (本当に恐ろしい atm である UI コードは言うまでもありません)。

現在、ID に基づいてTrackクラスのインスタンスを取得するために使用できるTracksインターフェイスがあります。検索はCollectionsインターフェイス (残念ながら名前空間の競合) を介して実行されますが、これはむしろ Tracks に移動したいと思います。

どのデータも第三者によっていつでも変更される可能性があり、これは配布されるモデルと変更通知に適切に反映されるべきです

これらのインターフェイスは、接続時に次のようなオブジェクト階層を返すことによって公開されます。

  • 繋がり
    • プレイバック getPlayback()
      • 再生、一時停止、ジャンプ、現在のトラックなど
      • 再生状態の変更を公開する
    • トラック getTracks()
      • 追跡 getTrack(id) など
      • トラックの更新を公開する
    • コレクション getCollection()
      • プレイリストまたは名前付きコレクションを読み込んで操作する
      • メディア ライブラリのクエリ
      • コレクションの更新を公開する
0 投票する
6 に答える
3787 参照

java - Javaデスクトップアプリケーションでデータを永続化するための最良の方法は何ですか?

デスクトップアプリケーションにJavaオブジェクトの大きなツリーがあり、それらをファイルとしてファイルシステムに永続化するための最良の方法を決定しようとしています。

私が持っていたいくつかの考えは次のとおりです。

  • DataOutputStreamを使用して自分のシリアライザーをロールします。これにより、ファイルの内容を最大限に制御できますが、マイクロ管理が犠牲になります。

  • ObjectOutputStreamとそのさまざまな関連クラスを使用した単純な古いシリアル化:データが脆弱であることがわかったため、販売されていません。オブジェクトの構造を変更すると、そのオブジェクトのシリアル化されたインスタンスが壊れます。だから私は恐ろしいバージョン管理の悪夢のように見えるものに閉じ込められています。

  • XMLシリアル化:それほど脆弱ではありませんが、直接のシリアル化よりも大幅に遅くなります。それは私のプログラムの外で変換することができます。

  • JavaDB:JDBCアプリケーションの作成に慣れているので、これを検討しました。ここでの違いは、データベースインスタンスは、ファイルが開かれている間、または保存されている間だけ存続するということです。きれいではありませんが...後で必要になった場合に中央サーバーアーキテクチャに移行するのに役立ち、より簡単な方法でデータモデルを検索する可能性があります。

他の人の意見を知りたいです。そして、私は上記のものよりも明白で単純なアプローチを見逃したことを望んでいます。


以下の回答から抜粋したその他のオプションを次に示します。

  • オブジェクトデータベース-ORMアプローチよりもインフラストラクチャが大幅に少なく、XMLアプローチよりも高速に実行されます。ありがとうaku
0 投票する
16 に答える
1818 参照

oop - エンタープライズ開発にデータセットを使用しないように同僚を説得する方法 (.NET 2.0+)

私が一緒に仕事をしている全員が、エンタープライズ開発へのデータ中心のアプローチに夢中になっており、カスタム コレクション/オブジェクトを使用するという考えを嫌っています。そうでなければ彼らを納得させる最善の方法は何ですか?

0 投票する
6 に答える
496 参照

python - 既存のインスタンスからメソッドを単純に継承するにはどうすればよいですか?

以下に、私がやろうとしていることの非常に簡単な例を示します。HTMLDecorator を他のクラスで使用できるようにしたいと考えています。デコレータと呼ばれるという事実は無視してください。これは単なる名前です。

出力:

私がやろうとしていることは可能ですか?もしそうなら、私は何を間違っていますか?

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

oop - オブジェクト指向プログラミングの LSP?

LSP のフルネームが Liskoff Substitution Principle であると考えるのは正しいですか? これに関する情報を引用する[オンライン]ソースを見つけるのに苦労しています... OOPの基礎のようですが、定義を見つけるのに苦労しています.

0 投票する
11 に答える
13726 参照

oop - どのクラス設計が優れていますか?

どのクラス設計が優れているか、またその理由は?

また

0 投票する
6 に答える
44359 参照

oop - カップリングと結束

カップリングと結束の概念を簡潔な定義に要約しようとしています。誰かが私に短くてわかりやすい説明をしてもらえますか (ウィキペディアのここここの定義よりも短い)? 彼らはどのように相互作用しますか?

ありがとう。

誰かが良い、短い例を持っていますか?

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

python - 特定のモジュール内の特定のクラスのサブクラスを反復処理します

Pythonでは、モジュールXとクラスYが与えられた場合、モジュールXに存在するYのすべてのサブクラスのリストを反復または生成するにはどうすればよいですか?

0 投票する
5 に答える
841 参照

c# - 任意の命名規則 (ビジネス オブジェクト)

わかりました、やりますかBusiness.NameBusiness.BusinessName SubCategory.IDそれともSubCategory.SubCategoryID

あなたのデータベースではどうですか?

なんで?

私は両方で引き裂かれています。「正解」があればいいのに

0 投票する
13 に答える
26827 参照

database-design - データベースのポリモーフィズムにどのように対処しますか?

Person、、、がSpecialPersonありUserます。PersonただのSpecialPerson人です。サイトにユーザー名やパスワードはありませんが、記録を保持するためにデータベースに保存されます。ユーザーは、サイトに登録されているユーザー名とパスワードに加えて、すべて同じデータを持っているPerson可能性があります。SpecialPerson


この問題にどのように対処しますか?Person人に共通するすべてのデータを格納し、キーを使用してデータを検索するSpecialPerson(特別な人の場合)およびユーザー(ユーザーの場合)、またはその逆のテーブルがありますか?