問題タブ [abstract-class]

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

objective-c - Objective-C で抽象クラスを作成する

私はもともと Java プログラマーで、現在は Objective-C を扱っています。抽象クラスを作成したいのですが、Objective-C ではそれができないようです。これは可能ですか?

そうでない場合、Objective-C でどれだけ抽象クラスに近づけることができますか?

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

oop - フレームワークのコーディングに使用するのに適した設計オプションはどれですか?

私は、クライアントが実装するための一連のインターフェースを提供するフレームワーク(Javaで、しかし質問は一般的です)をコーディングしています。フレームワークの関数は、実装クラスがどのように構築されるかに依存します。つまり、インターフェイスの他のインスタンスを提供するためにそれらの実装に依存します。

たとえば、私は持っているかもしれません:

IMyStuffとIHelperのこれらのインスタンスが使用可能であることを確認するにはどうすればよいですか?

1つの方法は、インターフェースで「getter」メソッドを作成し、私のフレームワークで、返されたnullオブジェクトを入念にチェックすることです。

もう1つのオプションは、実装するインターフェイスメソッドを(戦略パターンを使用して)呼び出すファクトリを実装する抽象クラスを作成することです。しかし、これは私がそもそもインターフェースを持っているという事実に反しています。その後、クライアントは抽象クラスを使用する必要があります。しかし、抽象クラスの代わりにインターフェースを使用することで、これを回避することができます。したがって、インターフェイスを提供するのではなく、抽象クラスのみを提供する必要があります...

それで、これについてのあなたの考えは何ですか、これへの実用的なアプローチは何ですか?

0 投票する
8 に答える
11845 参照

c# - 抽象クラスとは対照的に、部分クラスを使用する利点は何ですか?

私は、ProgrammingMicrosoft®VisualC#®2008:The Languageを読んで、C#とそれを使って何ができるかをよりよく理解しています。ASP.NetのPageクラスからすでに遭遇した部分的なクラスに出くわしました。

私には、部分クラスが抽象クラスとオーバーライドされたクラスで行うことを実行できるようです。明らかに、1つのチームが抽象メソッドを介してインターフェースを制御しますが、とにかくお互いに依存することになります。そして、目標がコラボレーションである場合、ソース管理や他のツールが解決するのはそれではありません。

部分的なクラスのポイントが欠けています。また、誰かが実際の使用法を提供することもできます。

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

c# - 基本クラスのリフレクションは悪い設計アイデアですか?

一般に、基本クラスでのリフレクションは、いくつかの有益で有用な目的に使用できますが、ここでは岩と困難な場所の間にいる場合があります... リフレクションを使用するか、パブリック ファクトリ クラスを実際に公開する必要がある場合に公開します。意味的に言えばプライベートです(つまり、誰でも使用できるべきではありません)。私はいくつかのコードがここにあると思います:

さて、このコードは私にとってはうまくいきますが、それは恐ろしいクラッジおよび/または本当に悪い考えですか? もう 1 つのオプションは、Factory の型を型パラメーターとして渡すことですが、可視性の制限により、Factory クラスは public である必要があります。

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

vb.net - 保護されたコンストラクターと MustInherit/Abstract クラス

保護されたコンストラクターを持つクラスと としてマークされたクラスの違いは何MustInheritですか? (私は VB.Net でプログラミングしていますが、おそらく c# にも同様に当てはまります)。

私が尋ねる理由は、コンストラクターを共有/静的メソッドに変換したい抽象クラスがあるためです。(いくつかの制約を追加するには)。

共有関数でインスタンスを作成できないため、これを行うことはできません。

MustInheritキーワードを削除することを考えています。これで違いはありますか?

ありがとう。

到着予定時刻:

MustInherit キーワードを削除すると、非常に便利な MustOverrides を含めることができなくなります。

それを念頭に置いて、私の問題を回避する方法はありますか?

ETA2:

明確にするために、MustInherit キーワードを削除しない限り、以下を実行できませんか?

0 投票する
12 に答える
207184 参照

java - Mockito を使用して抽象クラスをテストする

抽象クラスをテストしたいと思います。確かに、クラスから継承するモックを手動で作成できます。

モックを手作りする代わりに、モッキング フレームワーク (私は Mockito を使用しています) を使用してこれを行うことはできますか? どのように?

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

c# - この抽象化でコードの重複を避けるためのヒントはありますか?

そこで、SQL Compact Edition の上に Entity Framework を使用してアプリを構築しています。Entites をビジネス オブジェクトとして使用するという考えが気に入らなかったので、レイヤー (私はそれを ObjectModel レイヤーと呼んでいますが、おそらく最適な用語ではありません) を構築してきました。エンティティを入力して保存します。逆もまた同様です - エンティティを取得し、ビジネス オブジェクトとして使用するために POCO を入力します


Customer という POCO オブジェクトがあるとします。

そして、ObjectModel レイヤーを使用してこれを設定したいと思います。私は現在これをやっています...

OM_Customer クラスは、以下の ObjectModelBase から継承されます。

ここでの問題は、GetByIdメソッドにあります。Save メソッドは、すべての Entity Framework オブジェクト コンテキストに AddObject() メソッドがあるため、サブクラスで問題なく使用できます。

ただし、すべてのエンティティに id というプロパティがあるため、一般的な getById メソッドが必要です (データベースでも主キーである)。問題は、linq がここにあることです...

db.CustomerSetに固有です。この抽象クラスで、すべてのエンティティに対して汎用の CRUD/ページング/「コレクションの取得」を提供したいと考えていますが、キーストロークを繰り返さなくても、この単純な GetById メソッドのせいで助けを求めるようになりました。

現在のアイデア:

  • クエリ文字列の作成をより詳細に制御できるエンティティ SQL を使用して、ID で取得します。
  • 完全に抽象化するには時間がかかりすぎる可能性があるため、エンティティ フレームワークと linq を破棄します。

SO コミュニティが上記の問題を解決する方法についてアドバイスをいただければ幸いです。

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

generics - ジェネリック型と抽象クラス/インターフェース

.NET でジェネリック コントロールを作成しているとします。例えば木。人々がこのジェネリック型定義を使用する理由がわかりません

オブジェクト指向プログラミングでは、抽象クラスまたはインターフェイスを使用できます。

したがって、唯一のことは、それらの型がその基本クラスから派生するか、インターフェイスを実装する必要があるということです。何も実装または継承する必要がないため、ジェネリック型の方が便利であるということですか?

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

c# - インターフェイスを実装する抽象クラスを理解するのに助けが必要

次の例を考えてみましょう。インターフェイス MyInterface があり、次に 2 つの抽象クラス MyAbstractClass1 と MyAbstractClass2 があります。MyAbstractClass1 は MyInterface を実装していますが、MyAbstractClass2 は実装していません。

これで、3 つの具象クラスができました。

  1. MyConcreteClass1 は MyAbstractClass1 から派生していますが、MyInterface を実装していません。
  2. MyConcreteClass2 は MyAbstractClass2 から派生していますが、MyInterface を実装しています。
  3. MyConcreteClass3 は MyAbstractClass1 から派生し、MyInterface を実装します。

ConcreteClass1 は MyAbstractClass1 から派生しているため、暗黙的に MyInterface も実装していますか? MyAbstractClass1 が MyInterface のメソッドを暗黙的に実装すると仮定すると、ConcreteClass1 を MyInterface にキャストして MyInterface メソッドにアクセスする必要はありません。

MyAbstractClass1 は、MyInterface のメソッドを抽象メソッドとして暗黙的に実装できますが、MyInterface のメソッドを抽象メソッドとして明示的に実装することはできません。どうしてこれなの?

MyConcreteClass3 は、基本クラスによって既に実装されているインターフェイスを実装しているため、過剰ですか? MyAbstractClass1 から派生したすべてのクラスも MyInterface を実装する必要があることを知っていたとしても、それを実行したい理由はありますか。

クラス図はこちら

代替テキスト http://files.getdropbox.com/u/113068/abstractclassesandinterfaces.png

コードは次のとおりです。

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

actionscript-3 - 2 つの SWF ファイルで使用されている Action Script 3 クラスを、一方の SWF が他方を動的にロードするときに同じクラスに解決するにはどうすればよいですか?

バックグラウンド

純粋な Action Script 3 で高度にモジュール化されたアプリケーションを開発しています (ビルドを自動化するために Flex 4 SDK を使用していますが、すべてのコードは Flash CS4 Professional で直接コンパイルできる必要があります)。

すべてのモジュール間で共有されるインターフェース定義を含む「framework.swc」ファイル、他のモジュールをロードする「mainmodule.swf」、そして他のモジュール用のさまざまな .swf ファイルがあります。クラスを動的にロードするために ApplicationDomain::getDefinition() と組み合わせて Loader クラスを使用しています ["new LoaderContext(false,ApplicationDomain.currentDomain)" を使用します]。

問題

すべてのモジュールは、「framework.swc」で定義されている「AbstractModule」インターフェースを実装しています。ただし、動的にロードされたモジュールをインスタンス化すると (module is AbstractModule) は false を返します。さらに重要なことは、someobject が「framework.swc」で定義されたインターフェイスを実装し、モジュールのメソッドが「framework.swc」で定義された同じインターフェイスのオブジェクトを期待している場合に、module.someMethod(someobject) を呼び出すと、ランタイム エラーが発生することです。 「TypeError: エラー #1034: 型強制に失敗しました: _ を _ に変換できません。」

"mainmodule.swf" と "loadedmodule.swf" (テスト用にロードしたモジュール) は、内部的に、"framework.swc" の共有インターフェイスに別々の定義を使用しているようです。

質問

「mainmodule.swf」と「loadedmodule.swf」が共通のインターフェースを共有定義に解決して、クラスのキャストとクラスの比較が正しく成功するようにするにはどうすればよいですか?