Бертран Мейер - Основы объектно-ориентированного программирования
- Название:Основы объектно-ориентированного программирования
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Бертран Мейер - Основы объектно-ориентированного программирования краткое содержание
Фундаментальный учебник по основам объектно-ориентированного программирования и инженерии программ. В книге подробно излагаются основные понятия объектной технологии – классы, объекты, управление памятью, типизация, наследование, универсализация. Большое внимание уделяется проектированию по контракту и обработке исключений, как механизмам, обеспечивающим корректность и устойчивость программных систем.
В книге Бертрана Мейера рассматриваются основы объектно-ориентированного программирования. Изложение начинается с рассмотрения критериев качества программных систем и обоснования того, как объектная технология разработки может обеспечить требуемое качество. Основные понятия объектной технологии и соответствующая нотация появляются как результат тщательного анализа и обсуждений. Подробно рассматривается понятие класса - центральное понятие объектной технологии. Рассматривается абстрактный тип данных, лежащий в основе класса, совмещение классом роли типа данных и модуля и другие аспекты построения класса. Столь же подробно рассматриваются объекты и проблемы управления памятью. Большая часть книги уделена отношениям между классами – наследованию, универсализации и их роли в построении программных систем. Важную часть книги составляет введение понятия контракта, описание технологии проектирования по контракту, как механизма, обеспечивающего корректность создаваемых программ. Не обойдены вниманием и другие важные темы объектного программирования – скрытие информации, статическая типизация, динамическое связывание и обработка исключений. Глубина охвата рассматриваемых тем делает книгу Бертрана Мейера незаменимой для понимания основ объектного программирования.
Основы объектно-ориентированного программирования - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Класс POINT
Ниже приведена версия исходного текста класса POINT . Фрагменты, начинающиеся с двух тире "--", представляют собой комментарии, продолжающиеся до конца строки. Комментарии содержат пояснения, облегчающие понимание текста, и не влияют на семантику класса.
indexing
description: "Точка на плоскости"
class POINT feature
x, y: REAL
-- Абсцисса и ордината
rho: REAL is
-- Расстояние до начала координат (0, 0)
do
Result := sqrt (x^2 + y^2)
end
theta: REAL is
-- Полярный угол
do
-- Предлагается реализовать в качестве упражнения (упр. У7.3)
end
distance (p: POINT): REAL is
-- Расстояние до точки p
do
Result := sqrt ((x - p.x)^2 + (y- p.y)^2)
end
translate (a, b: REAL) is
-- Перемещение на a по горизонтали, b по вертикали
do
x := x + a
y := y + b
end
scale (factor: REAL) is
-- Изменение расстояния до начала координат в factor раз
do
x := factor * x
y := factor * y
end
rotate (p: POINT; angle: REAL) is
-- Поворот вокруг p на угол angle
do
-- Предлагается реализовать в качестве упражнения (упр. У7.3)
end
end
Некоторые аспекты приведенного текста неочевидны и требуют дополнительных разъяснений.
Класс в основном состоит из предложения, перечисляющего различные компоненты, вводимого ключевым словом feature. Кроме того, присутствует предложение indexingдающее общее описание ( description ), полезное для понимания функциональности класса, но никак не влияющее на семантику исполнения. Позднее будут рассмотрены три дополнительных предложения: inherit- для наследования; creation- при необходимости использования специального конструктора; invariant- для объявления инвариантов класса. Будет рассмотрена также возможность включения в класс двух или более предложений feature.
Основные соглашения
Класс 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", лекция 4).
Это дает два преимущества:
[x].Читатели исходного текста получают сводку свойств класса без необходимости рассмотрения деталей.
[x].В средах разработки с поддержкой повторного использования кода соответствующие инструментальные средства (часто называемые браузерами, навигаторами кода, инспекторами кода и т.д.) могут использовать информацию из данного раздела, помогая потенциальным пользователям найти нужные им классы. Эти средства обычно позволяют вести поиск по заданному шаблону среди элементов индексирования и их значений index_value .(В лекции 18курса "Основы объектно-ориентированного проектирования" рассмотрен базовый механизм ОО-браузеров.)
Приведенный пример содержит единственный индексный элемент - description , значение которого - строка, описывающая назначение класса. Все примеры классов в данной книге будут также содержать элемент description . Настоятельно рекомендуется следовать этому примеру и начинать исходный текст любого класса с предложения indexing, дающего краткую характеристику класса по аналогии с тем, как каждая подпрограмма начинается с комментария к заголовку.
Читать дальшеИнтервал:
Закладка: