Опубликован: 17.10.2005 | Доступ: свободный | Студентов: 8823 / 588 | Оценка: 4.38 / 4.10 | Длительность: 41:16:00
ISBN: 978-5-7502-0255-3
Специальности: Программист
Лекция 7:

Статические структуры: классы

Основные соглашения

Класс POINT демонстрирует ряд приемов, которые будут использованы в последующих примерах. Необходимо оговорить основные соглашения.

Распознавание вида компонент

Компоненты x и y объявлены как относящиеся к типу REAL без ассоциированного алгоритма, следовательно, они являются атрибутами. Все остальные компоненты содержат конструкции вида

is
   do
      ... Инструкции ...
   end

которые описывают алгоритм, что является признаком подпрограмм. Подпрограммы rho, theta и distance возвращают результат типа REAL во всех трех случаях, что отражено в объявлениях вида

rho: REAL is ...

Это определяет их как функции. Две другие подпрограммы, translate и scale, не возвращают результата (объявление не завершается конструкцией: T, где T некоторый тип) и, соответственно, являются процедурами.

Поскольку x и y являются атрибутами, а rho и theta функциями, данный конкретный класс использует для представления точки декартову систему координат.

Тело подпрограммы и комментарии к заголовку

Тело подпрограммы (предложение do ) представляет собой последовательность инструкций. Можно разделять последовательные инструкции и объявления точкой с запятой в традициях Algol-Pascal, но это не обязательно. Далее с целью упрощения точка с запятой будет опускаться между элементами на отдельных строках, но всегда будет использоваться как разделитель нескольких инструкций или объявлений в одной строке. (См. "Война вокруг точек с запятой", лекция 8 курса "Основы объектно-ориентированного проектирования")

В подпрограммах класса POINT все инструкции являются присваиваниями значений. В данной нотации для обозначения присваивания используется символ " := " также следуя соглашениям, принятым в Algol и Pascal. Этот символ нельзя перепутать с символом равенства " = ", применяемым, как и в математике, в операциях сравнения.

Другое соглашение о нотации касается использования комментария к заголовку подпрограммы. Уже отмечалось, что комментарии начинаются с двух последовательных тире " -- ". Они могут размещаться в любом месте, где, по мнению автора, дополнительные разъяснения могут принести пользу. Особую роль играет комментарий к заголовку (header comment). В соответствии с общим стилевым правилом он должен помещаться в начале каждой подпрограммы после ключевого слова is с отступом как в примере класса POINT. Комментарий к заголовку должен кратко отражать назначение подпрограммы.

Атрибуты также сопровождаются комментариями, следующими непосредственно за их объявлением и имеющими тот же отступ, что и комментарии к заголовку подпрограмм. Иллюстрацией могут служить объявления x и y.

Предложение indexing

В начале нашего класса помещено предложение, начинающееся с ключевого слова indexing. Оно содержит единственный пункт, помеченный как description. Предложение indexing не оказывает влияния на выполнение программ и служит для размещения информации, ассоциированной с классом. В общем случае оно содержит ноль или более пунктов вида

index_word: index_value, index_value, ...

где index_word - произвольный идентификатор (элемент индексирования), а каждое значение index_value - произвольный элемент языка (идентификатор, целое число, строка и т.д.) (См. "Заметки об indexing", "Подходы к повторному использованию" ).

Это дает два преимущества:

  • Читатели исходного текста получают сводку свойств класса без необходимости рассмотрения деталей.
  • В средах разработки с поддержкой повторного использования кода соответствующие инструментальные средства (часто называемые браузерами, навигаторами кода, инспекторами кода и т.д.) могут использовать информацию из данного раздела, помогая потенциальным пользователям найти нужные им классы. Эти средства обычно позволяют вести поиск по заданному шаблону среди элементов индексирования и их значений index_value.(В лекции 18 курса "Основы объектно-ориентированного проектирования" рассмотрен базовый механизм ОО-браузеров.)

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

Предложения indexing и комментарии к заголовку являются иллюстрацией правильного применения принципа самодокументирования (Self-Documentation principle): везде, где это возможно, документация модуля должна размещаться непосредственно в самом модуле. (См. "Самодокументирование", "Модульность" )

Александр Шалухо
Александр Шалухо
Анатолий Садков
Анатолий Садков

При заказе pdf документа с сертификатом будет отправлен только сертификат или что-то ещё?