Класс – своеобразный шаблон объекта. Отношение между классами рассматривают по двум причинам: отношения классов могут указать на вид общности и могут влиять на семантику связи между ними.
Существуют 3 основных типа отношений между классами:
1) разновидность – отражает степень общности;
2) составная часть – отражает агрегирование объектов;
3) ассоциативность – отражение смысловых связей классов, не связанных никак иначе.
О и ОО языки реализуют механизмы этих трех типов следующим образом: посредством наследования, использования, наполнения и на основе понятия метакласса.
В языке C++ метод абстрактного класса может быть заблокирован с помощью его инициализации в подкласс нулевым или пустым значением. Такой метод называется чисто виртуальной функцией.
Самый общий класс в структуре классов называется базовым. В зависимости от типа языка их бывает несколько и они могут быть классифицированы. Для любого класса различают 2 вида пользователей: экземпляры данного класса и экземпляры производных подклассов.
Множественное наследование наиболее полно реализовано в C++, CLOS. Разработка структуры классов на основе множественного наследования – сложная задача, т.к. необходимо согласовать взаимодействие объектов разных классов. Проблемы: повторное наследование, наличие неопределенности объектов различных суперклассов. Отношение использования между классами в двух вариациях:
- когда в интерфейсной части одного класса должен быть использован другой класс;
- другой класс используется в реализации.
Виды отношения использования:
- 1:1;
- один ко многим.