問題タブ [data-hiding]
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.
java - ミューテーターを非表示にし、説明が必要
あなたが持っているクラスを持っていると仮定しDog
ます
DogHandler
さらに、のインスタンスを作成してDog d
に渡すクラスがありますOwner
私は、私ができると思います
...に渡す前に犬のコピーを作成しますが、これOwner
はコストのかかる操作であり、避けたいと思います。
Dog
...ゲッターのみを含むを実装するインターフェースを考え出し、 Dog
そのインターフェースにキャストして結果を渡します
...コンストラクターで設定可能な変数を初期化し、オブジェクトのこのインスタンスの変更を許可しない
オブジェクトの受信者がオブジェクトを変更できないようにする他の方法はありますか?
データを含む単純なBeanを取得して、読み取り専用にする方法を教えてください。
c++ - C++ での親子関係
以下の C++ コードを検討してください
オブジェクト B を含む (持つ) オブジェクト A があります。親は A で、子は B です。A に B をdoSomethingImportant()させたい場合、Aを B の友人として追加することが唯一の方法であることがわかります。それをするために。
friend class A
これにより、A の関数が B のプライベート関数にアクセスできるようになります。
Data_Hiding の概念に抜け穴ができるため、このアプローチは少し奇妙に感じます。オブジェクト間の親子関係を確立するより良い方法はありますか? それともこれが最善の方法ですか?
この質問に対する私の実際の動機を追加する
c - C 構造体定義の非表示
これが私のセットアップです:
public.h:
struct.h で
func.h で:
func.c:
main.c で:
これらのファイルを GCC でコンパイルすると、次のエラーが発生します。
古いコンパイル エラー
宣言指定子の複数のストレージ クラス
編集後のコンパイル エラー
「*」トークンの前に「=」、「,」、「;」、「asm」、または「__attribute__」が必要です
誰かが私を助けてくれたり、なぜ私がこれを手に入れたのか、それを修正する方法を説明できますか?
oop - カプセル化、データの抽象化、データの非表示に関する正確な説明
オブジェクト指向の概念:、、encapsulation
およびdata abstraction
はdata hiding
3つの異なる概念ですが、互いに非常に関連しています。そのため、インターネットから情報を読んで概念を完全に理解するのに苦労しています。ある場所で入手できる情報は、インターネット上の別の場所の情報と矛盾しています。誰かが私に3つの概念を明確に説明し、3つの違いを引き出すチュートリアルに案内してもらえますか?
android - Android-タブを押したときにRelativeLayoutを非表示にする
2つのタブ、詳細、添付ファイルを持つtabHostがあります。私がやりたいのは、[添付ファイル]タブを押したときに、RelativeLayoutにある情報を非表示にしたいということです。setVisibility(View.VISIBLE)を設定する必要があることはわかっていますが、このメソッドをそのタブに関連付けるにはどうすればよいですか?
タブを作成するための次のコードがあります。
誰か助けてくれませんか?
ありがとう。
java - JUnit4でオブジェクトをテストするためのハンドル
特定のテストケースでは、テストケースの依存関係をオーバーライドして、サーブレットの要求や応答などの依存関係をさらに挿入する必要があります。
私のAPIはJSPをコンパイルして実行するために実際のサーブレットコンテナを必要とするため、これらをモックすることはできません。
JUnit 4を使用してテストインスタンスへのハンドルを取得するにはどうすればよいですか?
オーバーライドを試みましcreateTest()
たが(これは機能します)、そのようなテストで使用されるランナーは内部にあり、階層に表示されないためBlockJUnit4Runner
、同じ動作をテストに拡張することはできません。Parameterized
c++ - 同じオブジェクトを使用して、関数内で C++ 関数を呼び出す必要がありますか?
例:
ここで、+ 演算子をオーバーロードして、2 つの従業員オブジェクトの年齢を追加するとします。これらの従業員オブジェクトの 1 つは、オーバーロードされたオペレーター関数を呼び出しますが、このインスタンスでは、そのオブジェクトも基本クラスから getAge() 関数を呼び出す必要があります。プライベートではなく年齢を保護できることはわかっていますが、そのプロパティを非公開のままにする方法はありますか?
java - カプセル化とデータ隠蔽 - Java
インタビュアー:カプセル化とは何ですか? Java ではどのようにカプセル化を実現していますか?
私: カプセル化は、クライアントから情報を隠すメカニズムです。情報は、データ、実装、またはアルゴリズムの場合があります。アクセス修飾子を使用してこれを実現します。
インタビュアー:これはデータ隠蔽です。Java でカプセル化を実現するにはどうすればよいですか?
私: うーん
具体的な質問:「アクセス修飾子」以外に、Java でカプセル化を実装する方法は何ですか?
c# - OOP でのカプセル化
私はOOPの概念について勉強しています。私が読んだドキュメントから理解したように、OOP でのカプセル化の概念のサンプル プログラムを作成しました。以下にコードを貼り付けました。カプセル化に関する私の概念は正しいですか?
デフォルト.aspx
Default.aspx.cs
クラス社員
私の主な疑問は、従業員で ShowDetails() メソッドを呼び出した方法についてです。これはメソッド ShowDetails() を非表示にする良い方法ですか?.
c - C で実装固有の型と変数を区別する
インターフェイス仕様「X」があるとしましょう。X は、との両方のタイプのメンバーの存在を保証XHeader.h
する struct を呼び出すように呼び出します。ただし、実装定義のメンバーは禁止されているわけではなく、実際にそうすることで効率が向上する場合は推奨されます。私が働いている会社のために X の実装を作成する必要があり、いくつかの状態を保存するために私の実装に固有のいくつかのメンバーを持つことが非常に便利であることに気付いたので、私は次のように書きました:X_Fiddle
foo
bar
int
もちろん、これらは実装固有の詳細であり、将来のある時点で変更または消失する可能性があるため、使用すべきではない、dinky_dingbat
または使用すべきではないことをユーザーに伝えることは何もありません。dingbat_data
不透明なポインターのようなものを使用して実装を隠すことができない場合、そのような内部メンバーを目立たせるにはどうすればよいですか (またはそのようなものを隠すための他のトリック)? このような問題に対処するために一般的に使用される/標準的な方法はありますか? 私が考えることができる最善の方法は、先頭のアンダースコアのような命名規則を使用することですが、先頭のアンダースコアの規則がメンバー変数に適用されるかどうかはわかりません.C++固有の規則にも混乱していると感じています. また、それらに次のような名前を付けるかINTERNAL_dinky_dingbat
、内部に含まれる内部型用に別の構造体を持つことも考えましたX_Fiddle
、しかし、余分な入力を最小限に抑えたいので、やや嫌いです。または、実装固有の詳細がコメントとドキュメントに記載されている、上記のようなプレーンで通常の構造体を使用するだけで完全に受け入れられるのでしょうか。 ?
私がゼロから始めている、および/または私の会社/チームにこの特定のケースに関する慣習がないと仮定します。