Инкапсуляция данных
В противоположность реляционным БД, где операции над данными (вставка, удаление, модификация), являются общими и могут быть применены к любым объектам (таблицам) БД, объектно-ориентированные БД обеспечивают инкапсуляцию данных, т.е. ограничивают область видимости данных, принадлежащих объекту (и, следовательно, доступ к ним). Доступ к таким данным представляется только операциям этого объекта. В идеале для каждого атрибута объекта должна быть определена операция доступа (get). Но требования полной инкапсуляции приводят к невозможности выполнения параллельных транзакций и быстрого поиска на основе индексов. Инкапсуляция также приводит к тому, что обеспечение целостности становится задачей каждого объекта в отдельности. Лишь ссылочная целостность может контролироваться системой снаружи. Поэтому требования инкапсуляции объектов в ООБД выполняются только на уровне пользователей, а не системы в целом.
Инкапсулированными являются не только данные, но и операции. Только часть операций является доступной снаружи и предоставляет интерфейс объекта. Операции в ООБД состоят из двух частей: подписи (интерфейса), содержащего имя операции и список аргументов, и тела (метода), содержащего собственно реализацию операции. Такой подход выполняет требование независимости программ и операций, поскольку позволяет модифицировать операции объектов, не затрагивая внешние программы, имеющие доступ к этим операциям.
Наследование
Важнейшей базовой концепцией объектно-ориентированного программирования является способность классов к наследованию атрибутов и операций от базового класса, называемого суперклассом. Такая способность к порождению классов от уже существующих делает возможным поступательное наращивание сложности программы и определяет легкость модификации. Процесс образования суперкласса называется обобщением, а процесс образования подкласса – специализацией. Подкласс наследует все основные свойства суперкласса и дополнительно определяет свои собственные. Наследование существенно сокращает избыточность данных, так как общие свойства могут быть легко перенесены в суперклассы. В свою очередь подклассы могут переопределять свойства суперклассов. Возможность переопределения является важной характеристикой наследования, поскольку позволяет легко управлять отдельными классами с минимальным влиянием на остальную часть системы. Переопределение позволяет повторно использовать имя операции в нескольких классах, что дает возможность определять одно и тоже имя для одной и той же операции независимо от ее типа. Конкретный тип операции определяется из контекста при выполнении программы.
Полиморфизм
Переопределение (перегрузка) является частным случаем полиморфизма и означает способность одного и того же программного кода работать с разнотипными данными. Иначе говоря, для разных классов можно определить функции с одинаковыми именами, а вызов конкретной функции будет определяться типом данных либо из контекста. Полиморфизм позволяет обеспечить динамическое (позднее) связывание объектов, когда тип объекта становиться известным не в процессе написания программы, а во время ее выполнения.
Дата добавления: 2016-10-26; просмотров: 3130;