39892

Объектно-ориентированное программирование. Скрытие данных в объектах

Реферат

Информатика, кибернетика и программирование

Наследование определение объекта и дальнейшее использование всех его свойств для построения иерархии порожденных объектов с возможностью для каждого порожденного объекта относящегося к иерархии доступа к коду и данным всех порожденных объектов...

Русский

2015-01-19

42 KB

0 чел.

Объектно-ориентированное программирование

ООП представляет собой способ программирования, позволяющий создавать модульные программы с представлением данных на определенном уровне абстракции.

Ключевым понятием ООП является объект. В Паскале объект подобен записи Record и содержит данные различных типов. Но в отличие от записи он может содержать и методы работы над объектом – это процедуры или функции, которые оперируют данными объекта.

 

 Пример: Рассмотрим семейство объектов, описывающих файлы различных типов и действия над ними.

Объект-файл можно определить как совокупность данных:

- длина файла;

- дата создания файла;

- текущая позиция указателя файла;

и совокупность методов работы с файлами, т.е. из файла можно прочитать данные, записать в файл и установить дату создания.

Все объекты характеризируются тремя свойствами:

- инкапсуляция – комбинирование записи с процедурами и функциями для получения объекта как нового типа данных;

- наследование – определение объекта и дальнейшее использование всех его свойств для построения иерархии порожденных объектов с возможностью для каждого порожденного объекта, относящегося к иерархии, доступа к коду и данным всех порожденных объектов;

- полиморфизм – присваивание определенному действию одного имени, которое затем совместно используется по всей иерархии объектов, причем каждый объект выполняет это действие характерным для него способом.

Одним из примеров иерархии может быть дерево каталогов:

    Геометрический объект

    Плоский  Объемный  

  С вершинами  без вершин

     Окружность эллипс

Описание объектов:

 TYPE

Coordinates = object

 x, y: integer;

 end;

var

c: coordinates;

c.x

c.y {обращение к полям}

 type

 TPerson = object

 Name: string [30];

 Date: string [10];

 Rate: real;

Procedure Init (Nm, Dt: string; Rt: real);

Function GetName: string;

Function GetDate: string;

Function GetRate: real;

Procedure ShowName;

Procedure ShowDate;

Procedure ShowRate;

End;

 Описание потомка предыдущего объекта:

 type

TStudent = object (TPerson)

 Ball: real;

Procedure Init (Nm, Dt: string; Rt, Bl: real);

Function GetBall: real;

Function GetSum: real;

Procedure ShowBall;

Procedure ShowSum;

Procedure ShowAll;

End;

 Метод – представляет собой процедуру или функцию, определенную в рамках объекта, которая используется для выполнения действий над полями объекта.

Описание методов внутри объекта только указывает действия, но не указывает, каким образом они будут выполняться. Сами методы описываются вне определения объекта, как отдельная процедура или функция.

При описании метода, его имени должно обязательно предшествовать имя типа объекта, которому принадлежит данный метод.

 

 Procedure TStudent.ShowBall;

Begin

End;

 

Procedure TPerson.Init;

Begin

Name:= ‘Иванов’;

End;

 Скрытие данных в объектах

 Иногда при использовании объектов внутри модулей могут встречаться части описаний объектов, которые нежелательно экспортировать. Необходимо предусмотреть объекты, методы, которые доступны, но непосредственный доступ к данным объекта запрещен.

В Паскаль для этих целей используют скрытые или частные поля и методы. Такие поля и методы доступны только внутри того модуля, в котором описан объект. Таки образом, полное описание объекта выглядит следующим образом:

 Type

NewObject = object

 Поля;

 Методы; {общедоступные}

 Private

 Поля;

 Методы; {скрытые}

 Public

 Поля;

 Методы; {общедоступные}

End;

 Виртуальные методы

 Все используемые ранее методы являлись статическими. Статические методы всегда работают с экземплярами типа объекта, для которого они были введены. Таким образом, происходит жесткое закрепление метода за типом объекта. Наряду со статическими методами в Паскаль используются виртуальные методы.

Суть виртуального метода заключается в общедоступности использования его действия по одному и тому же имени всеми объектами дерева иерархии, при этом каждый из объектов реализует это действие по-своему.

Виртуальность говорит о том, что при вызове такого метода необходимо уделять внимание действию, а не конкретному экземпляру объекта, над полями которого оно будет производиться.

Метод становиться виртуальным, если за его описанием указывается слово virtual:

 Type

NewObject = object

 Поля;

 Методы; virtual;

 Виртуальные методы используются для работы  с динамическими объектами:

 TYPE

CoordinatesPtr = ^Coordinates;

Coordinates = object

 x, y: integer;

 end;

var

c: CoordinatesPtr;

New(c);

c^.x;

 Обращение к таким объектам можно построить только после выделения памяти в Heap-области.

Для динамических объектов введено расширение процедур New и Dispose. Оно связано с введением второго параметра в виде соответствия метода объекта. Этот метод должен быть строго определен и для New носит название Constuctor.

 Пример:

 Type

DataInputPtr =^ DataInput;

  DataInput = object (coordinates)

Visibleflag: Boolean;

Constructor Init (xIn, yIn: byte; Vin: boolean);

Destructor Done; virtual;

Procedure Show; virtual;

Var

AllDatP: ^ DataInput;

 Процедура распределения памяти с Constuctor выглядит следующим образом:

 New (AllDatP, Init (5, 10, true));

 Для процедуры Dispose введенный метод носит название Destructor – уничтожение объекта.

 Dispose (AllDatP, Done)

 Для уничтожения объекта Destructor можно записывать следующим образом:

 Destructor DataInput.Done;

Begin

End;


 

А также другие работы, которые могут Вас заинтересовать

42994. Устройство плоскостного биполярного транзистора 1.86 MB
  Движение электронов и дырок в транзисторах типа npn и pnp Поэтому сопротивление эмиттерного перехода мало и для получения нормального тока в этом переходе достаточно напряжения E1 в десятые доли вольта. Вольтамперная характеристика эмиттерного перехода представляет собой характеристику полупроводникового диода при прямом токе см. участка база эмиттер U6э существенно влияет на токи эмиттера и коллектора: чем больше это напряжение тем больше токи эмиттера и коллектора. При этом изменения тока коллектора лишь...
42995. Разработка привода и натяжной станции подземного ленточного конвейера 5.59 MB
  Современное массовое и крупносерийное производство продукции разнообразных отраслей промышленности выполняется поточным методом с широким использованием автоматических линий. Поточный метод производства и работа автоматической линии основаны на конвейерной передаче изделий от одной технологической операции к другой. Следовательно конвейеры являются составной и неотъемлемой частью современного технологического процесса – они устанавливают и регулируют темп производства, обеспечивают его ритмичность, способствуют повышению производительности труда и увеличению выпуска продукции. Конвейеры являются основными средствами комплексной механизации и автоматизации транспортных и погрузочно-разгрузочных работ и поточных технологических операций.
42996. Расчет подстанции (п/ст) «Симахинская» 1.85 MB
  Питание данной подстанции осуществляется воздушной линией электропередач 110 кВ от подстанции Таежная. Описание существующей схемы электрических соединений подстанции Схема электрических соединений подстанции рис. Главными признаками определяющими тип подстанции являются её местоположение назначение и роль в энергосистеме число и мощность установленных трансформаторов их тип и высшее напряжение. Все подстанции можно разбить на три основные категории [78]: – по упрощенным схемам как правило без выключателей на стороне высокого...
42998. Обеспечение аварийным источником электроснабжения потребителей объекта по адресам: г. Санкт-Петербург, Лиговский пр.37, ул. Восстания д.1, ул. Восстания д.6 2.69 MB
  Проектом предусматривается установка стационарного дизельэлектрического агрегата мощностью 350 кВА и мобильного дизельэлектрического агрегата мощностью 150 кВА для аварийного электроснабжения потребителей объекта. Дизельэлектрические агрегаты размещаются по адресу: г. Запас дизельного топлива для каждого дизельэлектрического агрегата расположен во встроенном топливном баке. Емкости топливных баков обеспечивают время работы не превышающее 8 часов работы дизельэлектрических агрегатов на номинальном режиме.
42999. Розрахунок деталі вал-шестерня 2.02 MB
  При проектуванні дискових шеверов необхідно прагнути до вибору максимальних зовнішніх діаметрів шевера. Якщо пройняти до уваги що вказані параметри гвинтового зачіпляє роблять вплив на розміри дискового шевера то останні повинні бути різними у міру переточування зубів шевера. Це зумовлює одну з особливостей розрахунку дискового шевера – необхідність визначення розмірів шевера при різних ступенях його сточенності. Це умова – забезпечення повної обробки активної частини профілю колеса – є основним при розрахунку шевера.
43001. Круглый фасонный резец с радиальной подачей для обработки деталей 1.1 MB
  Форма режущего лезвия определяется формой обрабатываемого изделия формой профиля обрабатываемой поверхности. 57 квалитеты; Идентичность формы причем точность фасонного резца на одиндва класса выше детали; Высокая производительность обработки за счет экономии времени – обрабатываются одновременно все участки фасонного профиля детали; Большой срок службы – за счет увеличения количества переточек по передней поверхности; Применение фасонных резцов не требует высокой квалификации рабочего. При изучении исходных данных следует...
43002. Динамический и силовой анализ механизма 99.5 KB
  Динамический анализ механизма включает в себя определение движущего момента такого, чтобы звенья механизма двигались с заданными скоростями при заданных нагрузках и массах действующих на механизм. Формула для определения движущего момента