すべき特定の割合員が共有すると本体の間に由来します。
-
29-09-2019 - |
質問
私は現在設計の授業のための申請書いた私の授業で、二つのクラスがとれることがあるベース由来のクラスのペアの、実際に人間のメンバー変数も、私の問題としているとセメンバ変数とのないます。
その理由は、構造がこれらのクラスではとりをもたせ造っていRSSリーダーといてこれら二つのクラスデータを保持するのを配信します。最初のデータを送り、例えば、ソースのurlの場所にrss.xml ファイルは地元の保管場合、送りが最後に変更された。第二の開催情報、記事に含まれる飼料等の公表日時および整数インデックスに基づく公表日程に使用される時系列の並べ替えます。
class feed
{
string title;
string description;
string feed_url;
string local_location;
string channel;
bool feed_is_changed; // This is a flag that will be raised and lowered
// when the feeds are being refreshed
double last_updated; // The last update date/time will be converted to a
//standardised double value
}
class feed_item
{
string title;
string description;
double pub_time;
double pub_time_in_sec; // I'm separating the seconds so they can be used
// for a 'sub-index' when there are multiple feeds with the same pubtime
// (there are restrictions on the data types we are allowed to use
// (concocting work-arounds will aid in understanding, etc))
double pub_date;
int pub_year;
int order_in_list; // The index that will be calculated from pub_time,
// pub_date, etc
}
上記のコードは完了しておりませんので、私は、現在のみを変数と関数を非公開/公開ビットは一度お越しい完了した。これを見ていただきますと上記のコードでは、二つの変数を共用している タイトル や ます。
くなった場合であっていることなどから企業-塩基だけを非アクティブは不変数の場合は効率がよくして別のクラスにない場合、またはこれは状況に懸念が議論のいずれかです。私の懸念は、コードが困難となるもの維持、規模が大きるものがありますの実行架に内在する一方法とします。への意見やアドバイスこれこそます。
解決
A feed_itemな飼料で失敗した場合には、 Liskov置換の原理 なるクラスのサブクラス.私はチェック耳—この一対の授業は絶対にしない音されたか,という話がわからないサブクラス.
時(非常時には実施の継承は良い考えで、通常のような抽出を共有部分クラスで両方の実装方法です。ここでは、全くの悲惨なアイデアが大きくない共有のコードの特典せいとしない。くコードを簡単!
他のヒント
一派生クラス?その後はほぼ確実に継承する間違ったデザイン。
相続する限り、そうした制限なれまで以降の決定にもよります。
私の経験則は避け継いでますので、明確かつ説得力のある場合に使用します。
また基底クラス:
struct NamedItem { // or maybe just "Item"
string title;
string description;
};
struct Feed : NamedItem {/*...*/};
struct FeedItem : NamedItem {/*...*/};
または、優先とるためには、どのようなこの場合、利用封じ込め:
struct ItemInfo {
string title;
string description;
};
struct Feed {
ItemInfo info;
//...
};
struct FeedItem {
ItemInfo info;
//...
};
特に、がない場合にはどうするお客様にはお勧めです。"NamedItem"を知らずの由来タイプするものではありませんが意味を利用継承関係を示します。