「peachykeen」オプションが最適な場合もありますが、継承を使用したり、エンティティをサブクラス化したりする場合に役立つ別のオプションは次のとおりです。
宣言.h
// these classes doesn't have references to each others
public class FinantialBaseClass
{
// ...
}
public class CorporationBaseClass: FinantialBaseClass
{
// ...
}
public class MarketBaseClass: FinantialBaseClass
{
// ...
}
public class EquitiesBaseClass: FinantialBaseClass
{
// ...
}
FinantialApp.h
// these classes have references, but, to parent classes,
// not each others
public class CorporationClass: CorporationBaseClass
{
vector<EquitiesBaseClass> Equities;
}
public class MarketClass: MarketBaseClass
{
vector<EquitiesBaseClass> Equities;
}
public class EquitiesClass: EquitiesBaseClass
{
public CorporationBaseClass* Corporation;
public MarketBaseClass* Market;
}
public class MyFinantialAppClass
{
protected vector<CorporationBaseClass> Corporations;
protected vector<MarketBaseClass> Markets;
protected vector<EquitiesBaseClass> Equities;
public CorporationBaseClass* addCorporation() { ... }
public MarketBaseClass* addMarket() { ... }
public EquitiesBaseClass* addEquity(CorporationBaseClass, MarketBaseClass)
{ ... }
}
作業クラスは、それぞれが「基本クラス」として機能し、作業クラスは、クラス自体ではなく、相互に基本クラスを参照することに注意してください。それはあなたがそれが使いにくい循環/前方のものを避けるのを助けます。
アプリがあることに注意してください。メインクラスおよびアソシエーションクラス(「エクイティ」)のコンテナとして機能するクラス。
「equity」クラスが「Market」と「Corporation」の間の関連付けを表していることを確認します。そのクラスは「 Market」と「Corporation」の一部ではなく、「App」のコンポーネントです。クラスを追加する場合は、クラス自体のリストではなく、コンテナを介して追加します。
追加として、すべてのクラスで共有されるものを支援する可能性のある追加の「最終ルート基本クラス」があることに注意してください。