Это пример полей, соответствующих атрибутам одного из "базовых" типов. Формально эти типы определены как классы, а их экземпляры принимают значения из предопределенных диапазонов. К базовым (предопределенным, встроенным)типам относятся:
[x].
[x].
[x].
[x].
Тип
Для каждого базового типа необходимо определить правила записи их значений в исходных текстах. Соглашения просты:
[x]. Для типа
[x]. Экземпляр
[x]. Экземпляр
[x]. Для обозначения экземпляра
[x]. Для экземпляров
Простое представление книги - класс BOOK
Рассмотрим класс с атрибутами базовых типов:
class BOOK1 feature
title: STRING
date, page_count: INTEGER
end
Типичный экземпляр класса выглядит так:
Рис. 8.2. Объект, представляющий книгу
Поскольку в настоящий момент нас в первую очередь интересует структура объектов, то в последующих примерах все компоненты классов будут атрибутами, а подпрограммы отсутствуют.
Это означает, что на данном этапе обсуждения объекты подобны записям или структурам в языках Pascal и C. Принципиальное отличие от этих языков выражается в том, что, благодаря наличию механизмов скрытия информации, клиенты классов не могут непосредственно присваивать значения полям таких объектов. В Pascal и в C с незначительными синтаксическими различиями допустимо объявление записи с последующим присваиванием (Внимание: Недопустимая нотация! Только для обсуждения.):
b1: BOOK1
...
b1.page_count := 355
Здесь во время выполнения полю
В ОО-ПО классы без подпрограмм редко имеют практическое значение. Исключением являются ситуации, когда в родительских классах определяется набор атрибутов, а потомки содержат необходимые подпрограммы. Другим примером могут служить классы, представляющие внешние объекты, которые принципиально невозможно модифицировать, например данные от внешних датчиков в системе реального времени. Но на данном этапе такой подход полезен для понимания основных концепций, подпрограммы будут добавлены позже.
Писатели
Используя указанные выше типы, определим класс
class WRITER feature
name, real_name: STRING
birth_year, death_year: INTEGER
end
Рис. 8.3. Объект «писатель»
Ссылки