русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Объектно-ориентированное программирование. Структура программного модуля

8.1. Тип данных «объект»

Объектные типы данных, по сути, являются логическим продолжением рассмотренного ранее типа запись. Если тип запись позволял группировать вместе данные различного типа, то объекты могут содержать не только данные, но и метолы (процедуры и функции) для работы с этими данными. Объектные типы описываются с помощью ключевого слова OBJECT.

 Синтаксис

TYPE

<Имя>=OBJECT

<Данные и методы>

END;

 Пример

TYPE

Point=OBJECT

x,y:Real;

PROCEDURE Move(Dx,Dy:Real);

END;

Методы описываются вне объектов.

 Пример

PROCEDURE Point.Move(Dx,Dy:Real);

BEGIN

x:=x+Dx;

y:=y+Dy;

END;

Объекты также могут наследоваться.

 Синтаксис

TYPE

<Имя>=OBJECT(<Имя родительского объекта>)

<Данные и методы>

END;

В результате наследования в так называемом дочернем (или порожденном) объекте будут присутствовать данные и методы родительского объекта, к которым будут добавлены данные и методы, описанные в дочернем. Методы родительского объекта могут быть перекрыты.

В параграфе 7.3 «Стандартные текстовые файлы» был рассмотрен пример со списком студентов. В каждой строке таблицы содержались данные различных типов, которые были сгруппированы при помощи типа запись. Однако в таблице содержались данные об объектах одинаковой структуры – студентах. Как же поступать в случаях, когда необходимо хранить список объектов, имеющих различную структуру, например геометрических фигур (прямоугольников, треугольников, кругов и т.д.), причем для любой фигуры необходимо, к примеру, вычислять площадь.

Можно представить такой набор объектов несколькими таблицами (т.е. массивами записей):

Прямоугольники   Треугольники   Круги
a b S = ab   a b c S = …   r S = πr2
    314.16
   

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

Фигура a b c r S
Прямоугольник
Треугольник
Круг 314.16

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

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

В программе реализуется базовый объект «Геометрическая фигура», который содержит только функцию для вычисления площади, причем неопределенную (так называемую, абстрактную). Далее создаются три объекта, которые наследуются от общего базового объекта, содержат соответствующие данные, и самое главное, конкретизируют функцию вычисления площади, описанную в базовом объекте.

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

8.2. Тип данных «класс»

Тип данных «класс» описывается при помощи ключевого слова CLASS аналогично вышерассмотренному типу «объект». По выполняемым функциям он также практически аналогичен объектному типу, но предоставляет более мощные средства объектно-ориентированного программирования. Классы реализованы только в среде Delphi и используются, в частности, для описания визуальных элементов интерфейса (таких как формы, кнопки, поля ввода и т.д.). Например, пользовательская форма наследуется от базового класса TForm и содержит описания элементов, находящихся на ней, методов для обработки событий от этих элементов и т.д.

 Пример

TYPE

TUserForm=CLASS(TForm)

Edit1:TEdit; { Поле ввода }

Button1:TButton; { Кнопка }

PROCEDURE Button1Click(Sender:TObject);

{ Метод, вызываемый по нажатии на кнопу }

. . .

END;

В результате такого описания, класс TUserForm обладает всеми свойствами класса TForm, т.е. формы (например, положением на экране, шириной, высотой, методами «Свернуть», «Закрыть» и т.д.).

Просмотров: 543


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.