русс | укр

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

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

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

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


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

Delphi Pascal (DP)


Дата добавления: 2015-07-09; просмотров: 969; Нарушение авторских прав


Заголовок класса включает имя класса и директиву classи объявляется в разделе описания типов следующим образом:

typeИмяКласса= class

После директивы classсразу начинается тело класса, содержащее в произвольном порядке перечень свойств и заголовки методов. Порядок следования директив public и private и их количество не имеют значения. Каждая директива относится ко всем последующим элементам класса до появления другой директивы.

Конструкторы задаются с помощью директивы constructor. Класс может иметь любое количество конструкторов. Разные конструкторы по-разному могут инициализировать создаваемые объекты. На практике часто используются классы с двумя конструкторами: первый устанавливает свойства создаваемого объекта в значения по умолчанию, второй – в значения, передаваемые через входные параметры конструктора. Конструкторам можно давать любые имена. Стандартным именем является Create. Все одноименные (перегруженные) методы должны иметь в заголовке директиву overload. Деструктор в классе один, обозначается директивой destructor и имеет имя Destroy.

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

procedure ИмяКласса.ИмяМетода (параметры);

Разделение описания класса и программной реализации методов целесообразно потому, что позволяет помещать описание класса в открытой (интерфейсной) части программного модуля, тогда как реализация методов размещается в закрытом разделе реализации и после компиляции распространяется в двоичном коде.

Свойства класса объявляются с помощью комбинации директив classvar (только для версии Delphi 2005/2006), а методы класса – с помощью одной директивы class.



В качестве примера рассмотрим описание класса окружностей, оформив для этого отдельный программный модуль:

Unit Circle; // заголовок модуля

interface// открытый раздел модуля

Type

TCircle = class // заголовок класса

private // закрытые свойства

x, y : integer; // координаты центра

r : integer; // радиус окружности

public // открытые методы

constructorCreate; overload;

constructor Create (ax, ay, ar : integer); overload;

destructor Destroy;

function GetX : integer;

function GetY : integer;

function GetR : integer;

function Length : real; // подсчет длины окружности

procedure SetXY (ax, ay : integer);

procedure SetR (ar : integer);

procedure MoveTo (ax, ay : integer); // метод перемещения

procedure Show; //метод прорисовки окружности

end; // конец описания класса

implementation// закрытый раздел модуля

// для простоты реализация некоторых очевидных методов пропущена

constructor TCircle.Create; // реализация конструктора

Begin

x := 0; y := 0; r := 0;

end;

constructor TCircle.Create (ax, ay, ar : integer); // другая реализация

Begin

x := ax; y := ay; r := ar;

end;

function TCircle.GetX : integer;

Begin

result := x; // result – внутренняя переменная языка DP

end;

function TCircle.Length : real;

Begin

result := 6.28*r;

end;

procedure TCircle.MoveTo (ax, ay : integer);

Begin

«если окружность нарисована, то стереть ее»;

x := ax; y := ay;

// а иначе - можно вызвать метод SetXY (ax, ay);

Show;

end;

procedure TCircle.Show;

Begin

«отображение окружности»;

end;

end;

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

2. Язык C++

Заголовок класса включает имя класса и директиву class. Все конструкторы класса имеют одно и то же имя, совпадающее с именем класса. Деструктор только один, его имя также совпадает с именем класса, но перед именем ставится символ ~ (тильда, волнистая черта). Директивы public и private используются так же, как и в языке DP. Программную реализацию методов можно либо вынести за пределы класса, либо вставить сразу за заголовком метода. Для вынесенной реализации в заголовке обязательно надо сначала указать имя класса. Классовые (статические) свойства и методы объявляются с помощью директивы static.

Пример для класса окружностей (некоторые методы пропущены):

class Circle

{ private:

int x; int y; int r;

public:

Circle ( ); // конструктор без параметров

Circle (int ax, int ay, int ar); // конструктор с тремя параметрами

Circle (int, int); // конструктор с двумя параметрами

int GetX ( ) { return x}; // встроенная реализация метода

void SetXY (int ax, int ay) {x = ax; y = ay}; // аналогично

void MoveTo (int ax, int ay); // реализация вынесена за тело класса

void Show ( ); // аналогично

~Circle( ); // деструктор

}; // конец тела класса

 

Программная реализация некоторых методов за пределами класса:

Circle::Circle ( ) // реализация конструктора без параметров

{x = 0; y = 0; r = 0};

Circle::MoveTo (int ax, int ay) // реализация метода перемещения

{«стереть»; SetXY(ax, ay); Show ( ); };

 

3. Языки Java и С#

Описание класса похоже на С++ за несколькими отличиями:

· каждый элемент класса имеет свою собственную директиву public или private;

· все реальные (т.е. не абстрактные) методы обязательно должны быть программно реализованы внутри класса сразу за своим заголовком, т.е. все методы полностью определяются в теле класса;

· деструкторы не используются, т.к. в язык Java и платформу .NET встроен механизм «сборки мусора», т.е. освобождение памяти из-под неиспользуемых объектов производится автоматически лишь при нехватке памяти.

Пример описания класса окружностей (некоторые методы пропущены):

class Circle

{ private int x;

private int y;

private int r;

public Circle ( ) {x = 0; y = 0; r = 100 ;}

public Circle (int ax, int ay, int ar) {x = ax; y = ay; r = ar ;}

public int GetX ( ) {return x ;}

publicvoid MoveTo (int ax, int ay)

{«стереть»; SetXY(ax, ay); Show ( ); }

}; // конец описания класса



<== предыдущая лекция | следующая лекция ==>
Классы и их описание | Создание и использование объектов


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


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

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

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


 


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

 
 

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

Генерация страницы за: 0.005 сек.