問題タブ [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 投票する
5 に答える
11091 参照

c# - ASP.NET コントローラー基本クラス User.Identity.Name

この投稿で説明したように、コントローラーから master.page にデータを渡すことができるようにするために、抽象基本コントローラー クラスを作成しました。この場合、データベースでユーザーを検索し、User.Identity.Name を照会します (ログインしている場合のみ)。

Userただし、この抽象基本クラスでは、プロパティが常にであることに気付きましたnull。これを機能させるにはどうすればよいですか?

どうもありがとう

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

.net - 抽象クラスの命名規則

かつて、Microsoftが推進したガイドラインは、抽象クラスであるという事実を取り除くために、抽象クラスに「Base」接尾辞を追加することであったことをはっきりと覚えています。したがって、、、、、そしてもちろん、のSystem.Web.Hosting.VirtualFileBaseようSystem.Configuration.ConfigurationValidatorBaseなクラスがあります。System.Windows.Forms.ButtonBaseSystem.Collections.CollectionBase

しかし、最近、フレームワークの多くの抽象クラスがこの規則に従っていないように見えることに気づきました。たとえば、次のクラスはすべて抽象的ですが、この規則に従っていません。

  • System.DirectoryServices.ActiveDirectory.DirectoryServer

  • System.Configuration.ConfigurationElement

  • System.Drawing.Brush

  • System.Windows.Forms.CommonDialog

そして、それは私が数秒でドラムアップできるものです。それで、私は、私が狂っていないことを確認するために、公式文書が何を言っているかを調べに行きました。クラス、構造体、およびインターフェイスの名前は、 MSDNのクラスライブラリ開発の設計ガイドラインにあります。奇妙なことに、抽象クラスの名前の末尾に「Base」を追加するためのガイドラインについての言及が見つかりません。また、フレームワークのバージョン1.1ではガイドラインは利用できなくなりました。

それで、私はそれを失っていますか?このガイドラインは存在しましたか?何も言わずに捨てられただけなのか?過去2年間、私は長いクラスの名前をすべて自分で作成してきましたか?

誰かが私に骨を投げます。

更新 私は夢中ではありません。ガイドラインが存在しました。KrzysztofCwalinaは2005年にそれについて不満を持っています。

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

java - Java: インターフェース vs 抽象クラス (フィールドに関して)

私が集めたものから、クラスに特定のプライベート フィールド (およびメソッド) を強制的に使用させたいと考えています。インターフェイスは public/static/final フィールドとメソッドのみを宣言するため、抽象クラスが必要です。正しい??

私は最初の大きな Java プロジェクトを始めたばかりで、後で自分を傷つけないようにしたいと思っています :)

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

c# - ジェネリックが使用されている場合の抽象クラスまたはインターフェイスへのキャスト

リストボックスで選択された値のデータバインド中に呼び出されるこのメソッドVerify_Xがあります。問題は、厳密に型指定されたデータソースです。以下に示すように、最も具体的な実装を使用する代わりに、抽象クラス BaseDataSource またはインターフェイスを使用して、サポートされているメソッドを呼び出したい: Parameters[] および Select()。

これは、それぞれにメソッドを用意する代わりに、私が持っているさまざまなタイプのデータソースすべてに 1 つのメソッドを使用できるようにするためです。それらはすべて同じ方法で継承されます。

継承・実装の連鎖はこちら

BaseDataSource には、必要なメソッドとプロパティがあります。DseDataSource は次の方法で実装されます。

クラス DseDataSource を編集し、Parameters[] および Select() にアクセスするためのインターフェイスを追加してから、それに対してプログラムすることが可能であることはわかっています。とても難しそうだったのでできます。

最終結果は次のようなコードになります。

0 投票する
24 に答える
368236 参照

oop - 抽象クラスの代わりにインターフェイスを使用する場合と、その逆の場合はいつですか?

これは一般的な OOP の質問かもしれません。使用法に基づいて、インターフェイスと抽象クラスの一般的な比較を行いたかったのです。

いつインターフェイスを使用したいのか、いつ抽象クラスを使用したいのか?

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

c++ - ピュア バーチャル メソッド VS. 関数ポインタ

最近、私は Thread クラス ライブラリを設計しており、次のような Thread 抽象クラスを作成しました。

実際のスレッド クラスは、この抽象クラスを継承doOperationし、独自のロジックでメソッドを実装します。これはStrategy Patternに似ています。

問題は、次の関数でスレッドの実行を定義する C バックエンド ライブラリに依存していることです。

ご覧のように; 2 番目のパラメーターは、スレッドのループ (メイン関数) への関数ポインターであり、ここに問題があります。この C 関数を使用してrunメソッド内のスレッドを開始するため、アドレスをdoOperation2 番目のパラメーターに渡しますが、型が一致しないため、これを行うことができません。

ポインターを返すために使用しようとしましたreinterpret_castが、ISO-C++ は、初期化されていない関数メンバーのポインターを返すことを禁止しています。この競合を克服する方法がわかりません。静的メソッドを使用することが唯一の解決策だと思いますが、それは私の設計パターンを爆破します!

0 投票する
17 に答える
103016 参照

ruby - Ruby で抽象クラスを実装する方法

Rubyには抽象クラスという概念がないことは知っています。しかし、それを実装する必要がある場合、どうすればよいのでしょうか? 私はこのようなことを試しました:

しかし、B をインスタンス化しようとするとA.new、例外が発生する呼び出しが内部的に行われます。

また、モジュールはインスタンス化できませんが、継承もできません。新しいメソッドをプライベートにしても機能しません。

誰にも指針がありますか?