Например, гипотетически вы инженер-программист, а не инженер-электронщик. На уровне 1, физическом уровне, вы чувствовали бы себя очень некомфортно, и вам было бы гораздо удобнее работать на уровне 7, прикладном уровне. Возможно, вы слышали термин «full-stack-инженер». Такой инженер способен продуктивно работать на всех уровнях. Но это мифическое создание вряд ли встречается в реальности.
В случае с классами высокая связность подразумевает тесную связь функций-членов и данных. Связность увеличивается, когда функции-члены выполняют небольшое количество связанных действий с небольшим набором данных. Высокая связность и слабая сопряженность часто идут рука об руку. Более полную информацию по этой теме можно получить в книге Structured Design37, изданной более 40 лет тому назад, но продолжающей оставаться актуальной и по сей день.
auto options_table = std::map{};
class command {
public:
command(std::string const& id) {
options_table.emplace(id, this);}
virtual bool validate(std::string const&) = 0;
virtual void commit(std::string const&) = 0;
};
class debug_cmd : public command {
public:
debug_cmd() : command("debug"s) {}
bool validate(std::string const& s) override;
void commit(std::string const& s) override;
};
debug_cmd debug_cmd_instance;