Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по основам ООП.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
5.29 Mб
Скачать

Базовая форма

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

Пусть O - объект. По определению он является экземпляром некоторого класса. Точнее, он является прямым экземпляром (direct instance) только одного класса, например C .

С учетом наследования O будет тогда косвенным экземпляром других классов, - предков C . Это тема дальнейшего обсуждения; в данной дискуссии достаточно понятия прямого экземпляра. Везде, где не может возникнуть недоразумений, слово "прямой" будет опущено. Класс C называется порождающим классом (generating class ) или просто генератором (generator ) объекта O. Заметьте, C - программный текст, а O - структура данных времени выполнения, появляющаяся в результате работы рассмотренных ниже механизмов создания объектов.

Часть компонентов C является атрибутами. Эти атрибуты полностью определяют форму объекта, представляющего собой просто набор полей, по одному на каждый атрибут.

Рассмотрим класс POINT из предшествующей лекции (Текст класса POINT см. в лекции 7). Исходный текст имеет вид:

class POINT feature

x, y: REAL

... Объявления подпрограмм ...

end

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

Рис. 8.1.  Экземпляр класса POINT

В данной книге объекты - набор полей - изображаются в виде смежных прямоугольников, содержащих соответствующие значения. Внизу курсивом в скобках дается имя класса (в данном случае - POINT ). Против каждого поля, тоже курсивом - имена соответствующих атрибутов (x и y ). Иногда сверху указывается имя объекта (здесь P_OBJ), не имеющее двойника в программном тексте, но позволяющее ссылаться на объект при обсуждении.

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

Простые поля

Оба атрибута класса POINT относятся к типу REAL . Следовательно, соответствующие поля прямого экземпляра POINT содержат действительные числа.

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

[x]. BOOLEAN , может иметь только два различных экземпляра, соответствующих булевым значениям true и false ;

[x]. CHARACTER , экземпляры которого представляют символы;

[x]. INTEGER , экземпляры которого представляют целые числа;

[x]. REAL и DOUBLE , экземпляры которых представляют действительные числа одинарной и двойной точности.

Тип STRING , представляющий конечную последовательность символов, на данном этапе рассматривается как базовый. Далее будет показано, что в действительности он относится к другой категории. ("Строки", см. лекцию 13)

Для каждого базового типа необходимо определить правила записи их значений в исходных текстах. Соглашения просты:

[x]. Для типа BOOLEAN два различных экземпляра обозначаются как True и False .

[x]. Экземпляр CHARACTER будет записываться как символ в апострофах: 'A' .

[x]. Экземпляр STRING обозначается как последовательность символов в двойных апострофах: "Это строка".

[x]. Для обозначения экземпляра INTEGER используем обычную десятичную нотацию: 34 , -675 , +4 .

[x]. Для экземпляров REAL или DOUBLE будет применяться как обычная нотация: 3.5 или -0.05 , так и экспоненциальное представление: -5.e-2.