問題タブ [subclassing]

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 に答える
2215 参照

c++ - C++ でオブジェクトのクラスを現在のクラスのサブクラスに変更するにはどうすればよいですか?

基本クラスへのポインターの配列があるので、これらのポインターが基本クラスの (異なる) サブクラスを指すようにしますが、それらと対話することができます。(実際には、仮想化してオーバーロードしたメソッドは2、3しかありません)ポインターの使用を避け、代わりに基本クラスの配列を作成するだけで、クラスを私のサブクラスに設定する方法があるかどうか疑問に思っています選ぶ。仮想メソッドの関数ポインターを検索するためにそれを使用する必要があるため、クラスを指定する何かがそこにあるに違いないことはわかっています。ところで、サブクラスはすべて同じ ivar とレイアウトを持っています。

注: 設計は実際には、パフォーマンスの向上のために変数の代わりにテンプレート引数を使用することに基づいているため、実際には抽象基本クラスはサブクラスの単なるインターフェイスであり、コンパイルされたコードを除いてすべて同じです。

ありがとう

編集:すべてのサブクラス(および必要に応じて)ベースクラスは同じレイアウト/サイズを持っています

それはさておき、戦略パターンは良いでしょうが、それはクラスへのポインターを追加しますが、私が避けようとしているのはまさに1つの違いです.

簡単に言えば、私がやろうとしていることは

明らかにそれははるかに複雑ですが、クラスに関する限り、私が探しているのはほとんどすべてです。これはおそらく言語機能です。

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

iphone - サブクラス化された UIPasteboard 選択から NSRange を取得する

選択動作を取得するために UIPasteboard をサブクラス化する方法があるかどうか疑問に思っていますが、「切り取り、コピー、貼り付け」オプションは取得できません。これに加えて、選択されたテキスト本文の NSRange を返す、サブスクライブできる通知はありますか?

助けてくれてありがとう!

編集:このサブクラスを使用して、ユーザーが関数を実行したい領域を指定できるようにしたいと思います。

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

java - 列挙型と列挙型コンストラクターをスタックするか、サブクラス化するか、どちらが優れたJavaプログラミング手法ですか?

種類が異なる有限数のアイテムを考えると、それらをスタックされた列挙型と列挙型コンストラクターで表すのが良いですか、それともサブクラス化するのが良いですか?それとも、より良いアプローチがありますか?

コンテキストを説明するために、私の小さなRPGプログラム(皮肉なことに単純なはずです)では、キャラクターのインベントリにさまざまな種類のアイテムがあります。アイテムは、タイプ、用途、効果によって異なります。

たとえば、インベントリの1つのアイテムは、ユーティリティ属性を調整するグレムリンと呼ばれる呪文の巻物です。別のアイテムは、戦闘で使用され、ダメージを与えるモートと呼ばれる剣である可能性があります。

私のRPGコードでは、在庫アイテムを表す2つの方法を試しました。1つの方法は、サブクラス化(たとえば、InventoryItem-> Spell-> AdjustingAttributes; InventoryItem-> Weapon-> Sword)を行い、必要に応じて各サブクラスをインスタンス化し、GremlinやMortなどの名前を割り当てることでした。

もう1つの方法は、列挙型と列挙型コンストラクターをスタックすることでした。たとえば、itemCategory、itemSpellTypes、itemWeaponTypesの列挙型を作成しましたが、InventoryItemの列挙型は次のようになりました。

これらの2つのアプローチよりも優れたJavaプログラミング手法はありますか?または、これらが唯一の方法である場合、2つのうちどちらが優れていますか?よろしくお願いします。

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

iphone - 画像からのカスタム UIToolBar

背景に画像を使用する UIToolbar オブジェクトを作成する必要があります。ほとんどのボタンも画像で、長方形です。ただし、1 つのボタンは円形で、Windows タスク バーの [スタート] ボタンのようにツールバーに重なっています。下記参照。

ツールバーのイメージを描画するには、UIToolbar をサブクラス化する必要があることはわかっています。もしそうなら、これを行う方法を示すサンプルコードはありますか?

さらに、大きな丸いボタンを実装する方法について何かアイデアはありますか? このための別のカスタム サブクラスを考えていますが、もっと簡単な方法があるかどうかはわかりません。

とにかく必要に応じてアート担当者に画像を切り刻ませることができますが、丸いボタンを何らかの方法で切り刻む必要があると確信しています.

アイデアやサンプルコードはありますか?

代替テキスト http://iphone.sophtware.com/toolbar.png

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

iphone - オーバーライドされた three20 TTDefaultStyleSheet スタイルが機能しない

最近、アプリに three20 を統合して、TTWebController のデフォルトのツールバーの色をオーバーライドしようとしています。

TTWebController.m:118 で、これがツールバーの tintColor を設定していることがわかります。

そこで、TTDefaultStyleSheet をサブクラス化し、toolbarTintColor をオーバーライドする独自のスタイルシートを作成しました。

FooStyleSheet.h:

FooStyleSheet.m:

そして私のアプリケーションで:didFinishLaunchingWithOptions:私はデフォルトのスタイルシートを設定しました

しかし、TTWebController を表示すると、tintColor が継承されません。TTDefaultStyleSheet.m を直接編集すると:

期待どおりに動作します。

自分のスタイルを取り入れるのを妨げている見落としがあるものはありますか?

ありがとう、-
ノルム

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

iphone - UINavigationBar のサブクラス化 ... UINavigationController でどのように使用しますか?

UINavigationBar (カスタムの背景画像とテキストの色を設定するため) をサブクラス化し、それをアプリのすべてのナビゲーション バーに使用したいと考えました。UINavigationController の API ドキュメントを見ると、navigationBar は読み取り専用のようです。

@property(nonatomic, readonly) UINavigationBar *navigationBar

Is there a way to actually use a custom UINavigationBar in my UIViewControllers? I know that other apps have done custom navigation bars, like flickr:

http://img.skitch.com/20100520-bpxjaca11h5xne5yakjdc2m6xx.png

Here is my UINavigationBar subclass:

the implementation

I know that I can use a category to change the background image, but i still want to be able to set the text color of the navigation bar title

any suggestions or other solutions? I basically want to create a light background and dark text like Flickr's app navigation bars

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

iphone - NavigationControllerのnavigationBarプロパティを上書きするのに最適なポイント

デフォルトのプロパティを自分のサブクラスのインスタンスUINavigationControllerに置き換えるために上書きしています。だから私は次のようなものを試しましたnavigationBarUINavigationBar

私の-initWithRootViewController:。しかし、それは私が期待したようにはうまくいきませんでした。まだデフォルトnavigationBarが表示されています。

では、上書きするのに最適なポイントはnavigationBar何ですか?

よろしくお願いします
–f

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

java - Java FilterOutputStreamクラスを適切に拡張する方法は?

ファイルのアップロードの進行状況を大まかに監視したいと思います。MultipartEntityをオーバーライドして、writeTo(OutputStream out)メソッドを、デフォルトのInputStreamをラップするために作成したFilterOutputStreamクラスに書き込むことができることを知っています。私がそれをどのように行ったかの詳細については、ここで私の答えを参照してください。

ただし、詳しく調べると、これは2回送信されたすべてのバイトをカウントします。ドキュメントにアクセスして、何が起きているかを確認しました。FilterOutputStreamのwrite(byte []、int、int)メソッドは、単にFilterOutputStreamのwrite(byte)メソッドをループで呼び出すように見えます。より効率的なメソッドを提供するためにサブクラスをお勧めします。これには、基になるOutputStreamのwrite(byte []、int、int)を呼び出し、基になるOutputStreamがバイトをストリームにプッシュするより良いメソッドを持っていることを期待することが含まれると思います(出力ストリームのドキュメントの推奨サブクラスはこのメソッドをオーバーライドし、より良い仕事をします単にOutputStream#write(byte)メソッドをループするよりも)。

これは私が窮地に陥っているところです。MultipartEntity#writeTo(OutputStream)が常にOutputStream.write(byte []、int、int)の呼び出しになることを保証することはできません。したがって、そこに送信されたバイトを数えると、を使用して送信されたバイトを見逃す可能性があります。 write(byte)メソッド。ただし、OutputStream.write(byte []、int、int)メソッドがwrite(byte)メソッドを呼び出さない可能性があるため、write(byte)メソッドではカウントできません。

1つの答えは、サブクラスのwrite(byte []、int、int)メソッド内でsuper.write(byte []、int、int)を呼び出すことです。次に、これはwrite(byte)メソッドをループして、一度に1バイトずつ書き込むことを知っています。次に、write(byte)メソッド内に書き込まれたすべてのバイトをカウントできます。ただし、これは非効率的であり、ドキュメントはこれに対して直接推奨しています。OutputStreamのサブクラスのいくつかは、一度に複数のバイトをストリームに書き込むことができると確信しているので、その利点を使用しないのはばかげています。

では、FilterOutputStreamを適切にオーバーライドして、効率的であり、送信されたすべてのバイトをカウントするにはどうすればよいですか?

これが長い場合は申し訳ありませんが、誰かが私よりも問題をうまく説明できるように、私はそれをwikiにしました。

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

objective-c - UIImageView のサブクラス化 - アニメーション画像が表示されない、または表示されない

送信する変数に応じて、さまざまなアニメーションを再生するサブクラスのインスタンスを作成するために、UIImageView をサブクラス化しようとしています。特定の 2 フレーム アニメーションを再生するための最初のコード (サブクラス化前) は、次のようになりました。「bubbleAnimationTemp」は、ヘッダーで宣言した単なる UIImageView オブジェクトです。

それで、私は UIImageView を次のようにサブクラス化しようとしました:

@終わり

ご覧のとおり、UIImageView に追加する UIImages を作成するための 2 つの異なる方法を試しました。しかし、私が抱えている問題は、アニメーションの再生時に何も表示されないことです。

また、最初のメソッドのコードをこのサブクラスに単純にコピーしようとしたため、プロセスは本質的に同じですが、まだ何も表示されません。

UIImageView のサブクラス化に関する注意事項についてドキュメントを確認しましたが、不足しているものはないようです。Interface Builderに配置した「UIImageView」オブジェクトを「BubbleAnimation」オブジェクトに変更したことを確認したので、そうではありません。

なぜ何も表示されないのかについての助けをいただければ幸いです。いつもありがとう!

マイケル

****************アップデート****************

さて、以下のKalleのアドバイスのおかげで、これはすべて修正されました. しかし、現在、同様の問題が再発しており、何が間違っているのだろうか。

基本的には、アニメーションと一緒に、ふきだしに表示される小さなハートが欲しいです。次のように UIImage を BubbleAnimation クラスに追加しました。

そして、いつものように実装で合成します。次に、setMood メソッドでハートを正しい色に設定します。

IB では、非表示の UIImageView オブジェクトを追加し、bubbleHeart という ViewController の UIImageView IBOutlet にリンクしました。吹き出しが表示されたら、次のコードを使用してアニメーションとハートを表示します。

問題は、アニメーションは表示されますが、小さなハートが表示されないことです。UIImage を使用する代わりに、BubbleAnimation クラスで UIImageView を作成し、さまざまな方法で初期化しようとしましたが、喜びはありませんでした。そのようなものを呼び出すとself.bubbleHeart = [[UIImageView alloc] initWithImage:bubbleAnimation.heart];、おそらく変数を再初期化しているため、機能しません。なぜそれが表示されないのですか?

どうもありがとう!

マイケル

0 投票する
0 に答える
5565 参照

c# - Fluent nHibernate - 複数のテーブルでSubClassesOnColumnを区別しますか?

私はサブクラスに頭を悩ませ、Fluent nHibernate のサブクラスに参加しようと数日間試みてきましたが、何の進展もありませんでした。wiki を調べましたが、十分な情報が得られないようで、グーグルで検索すると、価値の低いコードを使用しているか、一見関係のない古い結果が返されます。

可能であれば、簡単な例が欲しいだけです

次のような 4 つのテーブルがあります。

したがって、Animal テーブルには、テストとして、1 つの Id のみを含むルックアップ テーブルである AnimalType テーブルを参照する FK があります。

1 = 爬虫類

AnimalTypeId 列は、サブクラスを分割する識別子列であり、各動物テーブル (爬虫類) には、AnimalTypeId に応じて Animal テーブルの Id を参照する FK プライマリ キーがあるという考えです。

したがって、私のC#クラスは次のようになります

これをテーブルごとのサブクラスとしてマップするにはどうすればよいですか?

これが私の現在のマッピングです。

それはほとんど機能しますが、サブクラスが別のテーブルからのものであることを認識していないようです。HBM マッピングは以下のとおりです。

編集: エンティティの重複に関して以前に問題がありました。解決策は次のコメントにリンクされています。