Объективно - ориентированные модели создаются на основе объективно - ориентированного программирования на языках высокого уровня (С++, Турбопаскаль и др.).
В состав модели входят следующие понятия: тип, класс, объект.
Под типом понимается модель объекта, обладающая существенными качественными признаками, в которой определены операции, производимые над объектом.
Примерами типов являются следующие.
Тип char языка Си. Его существенным признаком является размер 8 бит. Объект, определенный этим типом, принимает значения от -128 до 127.
Типы определяемые пользователем с помощью ключевых слов typedef, enum. Типы, определяемые структурой. Структуры позволяют определять новыетипы путем логического группирования переменных различных типов. Например структура structure piket {NOM_PIK, GOR_KR, VERT_KR, KOORD, VYSOTA, NASV_ST} определяет тип piket, характеризуемый известными свойствами, соответствующим атрибутам пикета в реляционной модели базы данных.
Класс - это определяемый пользователем тип, в котором наряду с элементами данных определены функции, задающие поведение типа. Наиболее четко определено понятие класса в языке СИ++.
Класс напоминает определение структуры за следующим исключением
- в классе содержатся следующие спецификации доступа, задаваемые ключевыми словами public, protected, private,
- вместо ключевого слова struct применяются class или union,
- наряду с элементами данных применяются функции,
- применяются специальные функции: конструкторы и деструкторы.
Управление доступом осуществляется следующим образом. При метке private элементы данных и функции - элементы доступны для функций - элементов этого класса. При public доступ разрешен для функций - элементов и других функций программы, в которой имеется представитель класса. При protected - доступ разрешен для функций - элементов данного класса и классов, производных от него.
Конструктор является функцией - элементом с тем же именем, что и ее класс. Он необходим для создания элемента класса.
Деструктор - функция - элемент, имеющая то же имя, что и ее класс. Он по необходимости уничтожает элемент класса, созданный конструктором.
Важной чертой объективно - ориентированного программирования является наследование. При этом новый класс может получать атрибуты и поведение от уже существующего класса.
Новый класс называют производным классом. Класс, элементы которого наследуются, называется базовым классом.
Синтаксис наследования имеет следующий вид.
Class base
{... }
class derived: ключ доступа base
{... }
Ключ доступа не является обязательным и может быть private, protected или public. По умолчанию для классов принимается ключ доступа - private, для структур - public.
Покажем наследование на примере тахеометрической съемки. Пусть имеется класс plan, под которым понимается составление плана. Это действие возможно при вычисленных значениях прямоугольных или полярных координат пикетов и их высот. Функция xyhpiket () входит составным элементом в класс piket. Тогда класс plan должен наследовать класс piket с тем чтобы получить координаты и высоты пикетов для построения плана.
Эта конструкция на языке Си++ будет выглядеть так:
class piket
{...
void xypiket ();
... }
class plan: public piket
{ }
Отметим теперь понятие объекта, под которым понимается экземпляр типа данных. В рассматриваемом примере объекту в классе piket будет соответствовать запись с конкретным значением атрибутов. Следующим важным элементом кроме типа класса и объекта в объектноориентированных моделях является сообщение.
Сообщение состоит из имени приемника сообщения и имени операции, которая осуществляется в приемнике, а также аргументов данной операции. Например в функции main
void main (void) {...
plan. xyhpiket (<аргумент>)
... }
таким сообщением будет конструкция
plan. xyhpiket (аргументы)
Роль приемника играет класс plan, операция с аргументами определенная именем plan. xyhpiket (аргументы). В состав аргументов входят величины, необходимые для вычислений координат и высот пикетов.