ok、昨夜の後、私は読書を容易にするために質問を言い換えることにしました。 私は陸軍と戦闘の2つのクラスを持っています。以下HERESにクラス、いくつかの部分が欠落しているとはいえ:複数のクラス、同じ公開インタフェース
class Battlegroups
{
private: battlegroup battlegroupobject[100];
public:
void AddBattleGroup(); //add a battlegroup object to the array
void removebattlegroup(); //remove a battle group objects from the array
};
class Army
{
private: battlegroups battlegroupsobject;
public:
void formbattlegroup()
{
battlegroupsobject.AddBattleGroup();
}
void disbandbattlegroup()
{
battlegroupsobject.removebattlegroup();
}
};
参照は、問題がformbattlegroup()とその無意味インタフェースを追加することのように思えるdisbandbattlegroup()、です。
上記を実行せずにAddbattlegroupおよびremovebattlegroup()メソッドにアクセスする手段がある場合は、教えてください。
またはこれがあなたのやり方であるかどうかを私に教えてください。コードのために、コードを追加するようです。
関数の名前が異なるという事実は、関数の名前が実装で異なる場合、たとえその実装が他のものにディスパッチされているとしても、あなたの設計において*異なる*であることを示すようです。将来、あなたはリファクタリングして、それをどうにかして実装したいかもしれません...あなたのデザインに同じものがあれば、名前はどうして違いますか? –
私はそれらを分かりやすくするために別のものにしましたが、同じ機能をほとんど果たしています –
明瞭にするためにそれらを異なるものにするというあなたの呼びかけは、なぜ彼らに異なる名前を付けるのが理にかなっているのかを示しています。 「ほぼ同じ」は「意味的に同じ」とは異なる意味を持つ。インターフェイスには使用方法が反映されている必要があり2つの機能の実装が似ているがその目的が異なる場合、混乱を避けるために異なる名前を使用するのが理にかなっています。たとえば、 'replace'関数は 'find'関数とほぼ同じように実装できますが、同じ名前を付けるのは意味がありません。 –