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

Контрольная работа 2. Одиночные классы.

Класс это пользовательский тип данных, объявляется в разделе описаний типов (TYPE). Экземпляр класса (объект класса) – переменная класса, объявляется в разделе описаний переменных (VAR).

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

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

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

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

Закрытые поля класса могут быть инициализированы различными способами. Чаще всего бывает необходимо копирование объектов (конструктор копирования) или создание объектов каким либо другим способом, например для даты из строки формата dd.mm.yyyy.

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

Конструктор из строки целесообразно применять, когда используется стандартное представление даты. Здесь надо иметь в виду, что в разных странах могут использоваться различные строковые форматы даты, например mm.dd.yyyy или сокращенно mm.dd.yy.

Желательно, чтобы конструкторы были перегружаемыми (overload), т.е. имеющими одинаковые имена, но отличающиеся списком формальных параметров.

Задача 2.1.

Создать класс даты с полями - день, месяц, год. Предусмотреть следующие конструкторы класса:

  • Конструктор по умолчанию, инициализирует поля текущей датой.

  • Конструктор с параметрами, инициализирует каждое поле произвольными числовыми значениями отдельно для дня, месяца и года.

  • Конструктор с параметром, инициализирует дату строкой формата «дд.мм.гггг»

  • Конструктор копирования, инициализирует поля значениями из другого объекта данного класса.

Предусмотреть метод вывода даты в естественном формате, например «29 февраля 2008 года».

Листинг 2.1. Объявление класса в модуле UDate.

unit UDate;

Interface

Uses SysUtils;

Type cDate=

class

private

day : 1..31;

mon : 1..12;

yea : 1582..2500;

public

Constructor Init(); overload;

Constructor Init(sdate : string); overload;

Constructor Init(d : byte;

m : byte; y : word); overload;

Constructor Init(date : cDate); overload;

Function DateToStrRus : string;

end;

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