Связь — это степень взаимодействия между двумя классами или функциями, которая нарушает принцип сокрытия информации. Чем ниже связь, тем более модульной является программа, а это означает, что при дальнейшем изменении функциональности программы необходимо изменять меньше кода. Однако полностью исключить сцепление невозможно; его можно только минимизировать.
Типы связи
1. Связь содержимого: это когда один класс изменяет содержимое другого класса. Например, в C ++ классы друзей могут обращаться к закрытым членам друг друга. Однако преимущество классов друзей заключается в том, что они могут повысить производительность крупномасштабной программы, удалив один уровень взаимодействия.
2. Общая связь: это когда два класса обращаются к одним и тем же общим данным (например, глобальной переменной).
3. Связь управления: когда одна функция управляет потоком другой функции.
bool foo (int x) {if (x == 0) return false; else return true;} void bar () {//Вызов foo () путем передачи значения, которое управляет его потоком: foo (1);}
4 . Обычное связывание вызовов: когда одна функция вызывает другую функцию без передачи каких-либо данных в качестве аргументов . Почти в каждой программе есть функция, которая вызывает другую функцию (ы), поэтому полностью удалить связь невозможно.
5. Связь данных: когда одна функция передает данные другой функции, которая может использоваться для вычислений. Хотя это довольно часто, передаваемые данные должны иметь одинаковую интерпретацию для двух функций.
6. Связь типа и использования: когда член данных класса B
имеет тип класс A
.
7. Связь штампа: когда подпись одной из функций класса B
имеет класс A
в качестве аргумента или типа возвращаемого значения.
class A {//Код для класса A.}; class B {//Член данных класса A type: Связь типа и использования A var; //Аргумент типа A: связка штампа void calculate (A data) {//Что-нибудь делаем. }};
8. Связывание импорта: когда библиотека импортируется для использования внутри программы. Например, когда операторы #include
и import
используются в C ++ и Java соответственно.
9. Внешний: при взаимодействии с внешней системой.