Информационные системы

Автор работы: Пользователь скрыл имя, 05 Ноября 2009 в 13:11, Не определен

Описание работы

Лекции

Файлы: 1 файл

КИС_лекции (1 семестр).doc

— 645.00 Кб (Скачать файл)

    

    end

    13.1.5. Модули Object Pascal

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

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

    Структура модуля Object Pascal имеет вид: 

    unit name_of_unit; //Заголовок модуля

    interface  //Блок интерфейса

    uses

      unit1, unit2;

    const

      const1 = value1;

      const2 = expression1;

    type

      type1 = type_def1;

    var

      var_id1 : type_def1;

      var_id2 : type_def2;

    procedure proc_id1;

    function func_id1 : type_def2;

    implementation //Блок реализации

    uses

      unit3, unit4;

    const

      const3 = value2;

    type

      type2 = type_def3;

    var

      var_id3, var_id4 : type_def4;

    procedure proc_1;

    begin

    

    end;

    function func1 : type_def5;

    begin

    

    end; 

    procedure proc_id1;

    begin

    

    end;

    function func_id1 : type_def2;

    begin

    

    end;

    end. 

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

    Блок  интерфейса содержит описание констант, типов, переменных, процедур и функций, которые будут доступны в других программах и модулях. В блоке интерфейса описываются только заголовки процедур и функций. Их текст приводится в разделе реализации.

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

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

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

    В объектно-ориентированном программировании базовыми единицами программ и данных являются классы.

    13.2.1. Основные  понятия

    Классы

    Класс – это структура  данных, которая может содержать в своем составе переменные, функции и процедуры.

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

    В Object Pascal определен структурный тип class.

    Тип class обязательно должен быть описан как пользовательский тип в разделе type, например: 

    type

      TMyClass = Class

            field1: type_definition1;

            field2: type_definition2;

            procedure method1;

            function method2 : type_definition3;

      end;

    Затем в разделе var может быть объявлена переменная объектного типа: 

    var

      Object1 : TMyClass; 

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

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

    Объекты

    Объектом  или экземпляром класса называется переменная объектного типа.

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

    13.2.2. Основные  концепции

    Объектно-ориентированное программирование базируется на трех основных понятиях: инкапсуляции, наследовании и полиморфизме.

    Инкапсуляция – комбинирование данных с процедурами и функциями, которые манипулируют этими данными.

    Например, окружность описывается координатами центра и радиусом (данные). Кроме того, над окружностью можно проделывать различные действия (методы):

    • вычислять ее длину и площадь ограниченного ею круга;
    • проверять находится ли некоторая точка внутри данной окружности и т.п.

    Класс, описывающий объект "окружность", может выглядеть следующим образом: 

type

  TCircle = class

    x,y : double;

    r : double;

    function area : double;     // Вычисление площади окружности

    function circumference : double;   // Вычисление длины окружности

    function inside (x,y : double) : Boolean; //Проверка нахождения точки внутри окр-ти

end; 

    Для работы с классом необходимо создать  его экземпляр, то есть описать в  разделе var переменную данного объектного типа: 

    var

          Circle : TCircle; 

    Доступ  к полям класса осуществляется следующим образом: 

    Circle.x:=5;

    Circle.y:=20;

    Circle.r:=10;

    with Circle do begin

      x:=5;

      y:=20;

      r:=10;

    end;

    Аналогичным образом производится и вызов  методов. Например, чтобы рассчитать площадь окружности, используется следующая  строка: 

    A:=Circle.area Методу area не нужно передавать никаких данных. Подразумевается, что метод применяется к экземпляру класса, внутри которого он определен. Таким образом, для расчета площади метод area использует данные, содержащиеся в поле r данного экземпляра класса.
 

    Инкапсуляция  позволяет обеспечить защиту данных от внешнего вмешательства или неправильного  использования.

    Наследование – это возможность использования уже определенных классов для построения иерархии классов, производных от них.

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

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

TRing = class (TCircle)

  r2 : double;

  function area : double;     // Вычисление площади кольца

  function circumference2 : double;   // Вычисление длины внутренней окружности

  function inside (x,y : double) : Boolean;   // Проверка нахождения точки внутри кольца

end; 

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

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

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

    Например, объявления, представленные ниже идентичны. 

    TMyClass = class

    TMyClass = class (TObject) 

    Полиморфизм - это свойство родственных классов решать схожие по смыслу проблемы разными способами. В рамках Object Pascal поведенческие свойства класса определяются набором входящих в него методов.

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

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

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

    13.2.3. Поля, свойства и методы

    Класс является сложной структурой данных, объединяющей переменные, функции и процедуры в одном типе данных.

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

    Поля

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

    Например, класс, содержащий одно поле и один метод, будет описываться следующим образом: 

    TSampleClass = class (TObject) //Объявление нового класса

      FSample : integer;   //Поле класса

      procedure SampleMethod;  //Метод класса

    end; 

    Свойства

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

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

Информация о работе Информационные системы