Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Объектно-ориентированная парадигма.
Сразу же необходимо заметить, что общепринятого определения "объектно-ориентированной модели данных" не существует. Сейчас можно говорить лишь о неком "объектном" подходе к логическому представлению данных и о различных объектно-ориентированных способах его реализации. Мы знаем, что любая модель данных должна включать три аспекта: структурный, целостный и манипуляционный. Посмотрим, как они реализуются на основе объектно-ориентированная парадигмы программирования:
Структура: Структура объектной модели описываются с помощью трех ключевых понятий: инкапсуляция - каждый объект обладает некоторым внутренним состянием (хранит внутри себя запись данных), а также набором методов - процедур, с помощью которых (и только таким образом) можно получить доступ к данным, определяющим внутреннее состояние объекта, или изменить их. Таким образом, объекты можно рассматривать как самостоятельные сущности, отделенные от внешнего мира. Пример: Class Point { // вводим новый тип данных - объект "точка" X,Y: int; // данные объекта - координаты точки Point(X: int, Y: int); // конструктор объекта - процедура, вызываемая при // определении переменной на базе объекта и // присваивающая значения его данным
Draw(); // метод "нарисовать точку" Erase(); // метод "стереть точку" Move(newX,newY); // метод "переместить точку" (изменяет данные объекта) int GetX(); // метод "получить значение поля X" int GetY(); // метод "получить значение поля Y" // все методы должны быть описаны, например // реализация метода Move: Move(newX: int, newY: int) { X=newX; // запись новых данных в объект Y=newY; // } } // конец описания объекта Begin // основная процедура программы Point A(0,0); // создать новый объект и присвоить ему данные for i=1 to 100 // создать цикл A.Draw(); // нарисовать точку A.Hide(); // стереть точку A.Move(i,i*10); // присвоить экземпляру объекта новые данные endfor; // print(A.GetX(),A.GetY()); // получить и напечатать данные объекта
End. Из этого примера видно, что мы не можем напрямую обратиться к данным объекта, а должны вызывать метод Move для изменения его данных и GetX, GetY для считывания значений этих данных. Т.е. объект скрывает свою внутренню структуру, именно это свойство и называется "инкапсуляцией". наследование - подразумевает возможность создавать из классов объектов новые классы объекты, которые наследуют структуру и методы своих предков, добавляя к ним черты, отражающие их собственную индивидуальность. Наследование может быть простым (один предок) и множественным (несколько предков). Пример: Class Circle extend Point { // создаем новый объект "окружность", наследующий // свойства объекта "точка" Radius: int; // добавляем новое поле "радиус", поля X и Y наследуются // от родительского объекта Circle(X:int,Y:int,Radius:int); // конструктор нового объекта Draw(); // переопределяем некоторые методы Hide(); // родительского объекта, метод Move наследуется ChangeRadius(Radius); // вводим новый метод "изменить радиус" GetRadius(); // вводим новый метод "получить значение радиуса" // методы GetX и GetY наследуются от родительского // объекта } полиморфизм - различные объекты могут по разному реагировать на одинаковые внешние события в зависимости от того, как реализованы их методы. Пример: Begin Point A(100,100); Circle B(200,200,50); A.Draw(); // рисует точку B.Draw(); // рисует окружность End. Целостность данных: Для поддержания целостности объектно-ориентированный подход предлагает использовать следующие средства: автоматическое поддержание отношений наследования возможность объявить некоторые поля данных и методы объекта как "скрытые", не видимые для других объектов; такие поля и методы используются только методами самого объекта создание процедур контроля целостности внутри объекта Средства манипулирования данными: К сожалению, в объектно-ориентированном программировании отсутствуют общие средства манипулирования данными, такие как реляционная алгебра или реляционное счисление. Работа с данными ведется с помощью одного из объектно-ориентированных языков программирования общего назначения, обычно это SmallTalk, C++ или Java.
Подведем теперь некоторые итоги: В объектно-ориентированных базах данных, в отличие от реляционных, хранятся не записи, а объекты. ОО-подход представляет более совершенные средства для отображения реального мира, чем реляционная модель: естественное представление данных. В реляционной модели все отношения принадлежат одному уровню, именно это осложняет преобразование иерархических связей модели "сущность-связь" в реляционную модель (см. параграф 5.5.3). ОО-модель можно рассматривать послойно, на разных уровнях абстракции. имеется возможность определения новых типов данных и операций с ними. В то же время, ОО-модели присущ и ряд недостатков: осутствуют мощные непроцедурные средства извлечения объектов из базы. Все запросы приходится писать на процедурных языках, проблема их оптимизации возлагается на программиста. вместо чисто декларативных ограничений целостности (типа явного объявления первичных и внешних ключей реляционных таблиц с помощью ключевых слов PRIMARY KEY и REFERENCES) или полудекларативных триггеров для обеспечения внутренней целостности приходится писать процедурный код. Очевидно, что оба эти недостатка связаны с отсутствием развитых средств манипулирования данными. Эта задача решается двумя способами - расширение ОО-языков в сторону управления данными (стандарт ODMG), либо добавление объектных свойств в реляционные СУБД (SQL-3, а также так называемые объектно-реляционных СУБД).
|
||||||
Последнее изменение этой страницы: 2021-05-27; просмотров: 65; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.214.155 (0.01 с.) |