Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmirovanie__prezent_Babalovoy_4_06.doc
Скачиваний:
2
Добавлен:
21.09.2019
Размер:
544.77 Кб
Скачать

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

Класс – это структура (абстрактный тип данных), компонентами которой являются хранимые данные, их свойства и методы для их обработки.

Событие класса – внешнее событие, на которое реагирует данный класс

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

Объект или экземпляр класса – это переменная, обеспечивающая доступ к полям и методам класса в конкретной среде применения.

type date = class

private

dd, mm, yy: integer;

public

procedure init (d, m, y: integer);

function month: integer;

function day: integer;

function year: integer;

end;

procedure date.init (d, m, y: integer);

begin

dd := d; mm := m; yy := y;

end;

function date.day: integer;

begin

result := dd;

end;

В состав классов входят:

1. Поля – типизированные данные для хранения внутр. состояния объекта.

2. Методы – это действия, выполняемые над полями объекта.

3. Свойства обеспечивают реализацию механизма доступа к полям класса. Доступ к ним осуществляется только через промежуточный код. Зарезервированные слова: property, read, write. Свойство обязательно соотносится с конкретным полем класса и определяет те методы класса, которые должны использоваться при записи в это поле или при чтении из него конкретных значений параметров.

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

Методы – это процедуры и функции для обработки данных, которые принадлежат классу.

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

Constructor Create() - Создание экземпляра класса

Destructor Destroy() - Уничтожение экземпляра класса

Любой созданный класс может наследовать свои свойства другим классам.

Перекрытие или переопределение методов

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

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

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

Для того чтобы изменить поведение виртуальных или динамических методов у потомка (переопределить метод или перекрыть) используется служебное слово override.

Перегружаемые методы

В Object Pascal допускается определение в одном классе нескольких методов с одинаковыми именами, но разными списками параметров. Такие методы называются перегружаемыми, они объявляются при помощи директивы overload. С их помощью можно присваивать одинаковые имена родственным методам. Выбор конкретной версии метода, применимой в данных обстоятельствах, осуществляется компилятором.

Overload

перегружаемые

Function divide (x,y:integer):integer;overload; Function divide(x,y:real):real;overload;

Override

Перекрываемые (Перезаписываемые)

Procedure Cut_arr ; override;

Указание, что метод перезаписывается

4.4.Объекты и классы. Структура класса: поля, методы, свойства. Области видимости полей классов. Разработка классов пользователей с динамическими структурами данных типа объект-вектор. Пример описания класса.

Класс – это структура (абстрактный тип данных), компонентами которой являются хранимые данные, их свойства и методы для их обработки.

Событие класса – внешнее событие, на которое реагирует данный класс

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

Объект или экземпляр класса – это переменная, обеспечивающая доступ к полям и методам класса в конкретной среде применения.

В состав классов входят:

1. Поля – типизированные данные для хранения внутр. состояния объекта.

2. Методы – это действия, выполняемые над полями объекта.

3. Свойства обеспечивают реализацию механизма доступа к полям класса. Доступ к ним осуществляется только через промежуточный код. Зарезервированные слова: property, read, write. Свойство обязательно соотносится с конкретным полем класса и определяет те методы класса, которые должны использоваться при записи в это поле или при чтении из него конкретных значений параметров.

Связывание метода с объектом – это механизм поиска метода объектом

способа связывания: 1). Статическое, 2). Динамическое, 3). Виртуальное

Разделение методов и полей по доступности обеспечивает защиту информации.

Видимость полей классов определяет режим наследования полей классов или режим их доступности в других модулях.

Секция private. Область видимости методов минимальна – только для внутренних методов объявленного класса. Производные классы не могут использовать поля, методы и свойства, описанные в private. Члены класса недоступны даже в наследниках.

Секция protected. Обеспечивает доступ к методам для самого класса, а также для любых его потомков.

Секция public. Никаких ограничений на видимость методов, типов, свойств класса не накладывается. Т.е. члены класса доступны везде, где доступно описание класса.

Секция Published – элементы класса доступны везде. Эти элементы можно редактировать в процессе выполнения программы.

Р

class CVector

{

private:

int item[];

public:

CVector(int size);

~CVector();

void addItem(int index,

int newItem);

void delItem(int index);

int getItem(int index);

void clear();

void setSize(int newSize);

int getSize();

int findItem(int itemToFind);

void sort(); };

азработка классов пользователей с динамическими структурами данных типа объект-вектор

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

Динамические массивы размещаются в динамической области памяти. Математическая интерпретация массива – вектор. Векторы могут быть любой размерности – одномерные, двумерные и т.д. Двумерный вектор – таблица. Процедура для задания размерности динамического массива любого типа должна быть выполнена до записи данных в элементы массива. Размерность массива может быть определена в процессе решения задачи методом setSize.

Класс должен включать в себя методы:

  1. изменение размерности if (newSize >= 0) realloc(item, newSize*sizeof(int));

  2. получение текущей размерности return msize(item);

  3. запись элемента в указанную позицию (память д.б. распределена заранее)

if (index >= 0 && index < getSize())

item[index] = newItem;

  1. удаление элемента по указанной позиции, память не освобождается

if (index >= 0 && index < getSize())

item[index] = 0;

  1. поиск элемента

for (int i = 0; i < getSize(); i++)

if (item[i] == itemToFind)

return i;

return -1;

  1. сортировка 7. освобождение памяти

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]