Бертран Мейер - Основы объектно-ориентированного программирования

Тут можно читать онлайн Бертран Мейер - Основы объектно-ориентированного программирования - бесплатно полную версию книги (целиком) без сокращений. Жанр: Прочая околокомпьтерная литература. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Бертран Мейер - Основы объектно-ориентированного программирования краткое содержание

Основы объектно-ориентированного программирования - описание и краткое содержание, автор Бертран Мейер, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Фундаментальный учебник по основам объектно-ориентированного программирования и инженерии программ. В книге подробно излагаются основные понятия объектной технологии – классы, объекты, управление памятью, типизация, наследование, универсализация. Большое внимание уделяется проектированию по контракту и обработке исключений, как механизмам, обеспечивающим корректность и устойчивость программных систем.

В книге Бертрана Мейера рассматриваются основы объектно-ориентированного программирования. Изложение начинается с рассмотрения критериев качества программных систем и обоснования того, как объектная технология разработки может обеспечить требуемое качество. Основные понятия объектной технологии и соответствующая нотация появляются как результат тщательного анализа и обсуждений. Подробно рассматривается понятие класса - центральное понятие объектной технологии. Рассматривается абстрактный тип данных, лежащий в основе класса, совмещение классом роли типа данных и модуля и другие аспекты построения класса. Столь же подробно рассматриваются объекты и проблемы управления памятью. Большая часть книги уделена отношениям между классами – наследованию, универсализации и их роли в построении программных систем. Важную часть книги составляет введение понятия контракта, описание технологии проектирования по контракту, как механизма, обеспечивающего корректность создаваемых программ. Не обойдены вниманием и другие важные темы объектного программирования – скрытие информации, статическая типизация, динамическое связывание и обработка исключений. Глубина охвата рассматриваемых тем делает книгу Бертрана Мейера незаменимой для понимания основ объектного программирования.

Основы объектно-ориентированного программирования - читать онлайн бесплатно полную версию (весь текст целиком)

Основы объектно-ориентированного программирования - читать книгу онлайн бесплатно, автор Бертран Мейер
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

(отличающийся от наследуемых компонентов родителей) ...

end

Родителей класса достаточно перечислить в предложении inherit. (Как обычно, можно разделять их имена точкой с запятой, хотя это не обязательно.) Порядок перечисления классов не играет никакой роли.

В моделировании систем найдется еще немало примеров, подобных COMPANY_PLANE .

[x].Наручные часы-калькулятор моделируются с применением множественного наследования. Один родитель позволяет устанавливать время и отвечать на такие запросы, как текущее время и текущая дата. Другой - электронный калькулятор - поддерживает арифметические операции.

[x].Наследником классов судно и грузовик является амфибия ( AMPHIBIOUS_VEHICLE ). Наследник классов: судно, самолет - гидросамолет ( HYDROPLANE ). (Как и с TEACHING_ASSISTANT , здесь также возможно дублируемое наследование, поскольку каждый из классов-родителей является потомком средства передвижения VEHICLE .)

[x].Ужин в ресторане; поездка в вагоне поезда - вагон-ресторан ( EATING_CAR ). Вариант: спальный вагон ( SLEEPING_CAR ).

[x].Диван-кровать ( SOFA_BED ), на котором можно не только читать, но и спать.

[x]."Дом на колесах" ( MOBILE_HOME ) - вид транспорта ( VEHICLE ) и жилище ( HOUSE ) одновременно; и так далее.

С точки зрения программиста эти примеры представляют академический интерес - нам платят за построение систем, а не за построение модели мира. Впрочем, во многих практических приложениях с аналогичными комбинациями абстрактных понятий вы обязательно столкнетесь. Более подробный пример из графической среды разработки ISE мы изложим чуть ниже.

Числовые и сравнимые значения

Следующий пример напрямую относится к повседневной практике ОО-разработки и неразрывно связан с построением библиотеки Kernel.

Ряд классов Kernel, потенциально необходимых всем приложениям, требуют поддержки таких операций арифметики, как infix "+", infix "-", infix "*", prefix "-", а также специальных значений zero (единичный элемент группы с операцией " + ") и one (единичный элемент группы с операцией " * "). Эти компоненты используют отдельные классы библиотеки Kernel: INTEGER , REAL и DOUBLE . Впрочем, они нужны и другим, заранее не определенным классам, например, классу MATRIX , который описывает матрицы определенного вида. Приведенные абстракции уместно объединить в отложенном классе NUMERIC , являющемся частью библиотеки Kernel:

deferred class NUMERIC feature

... infix "+", infix "-", infix "*", prefix "-", zero, one...

end

NUMERIC имеет строгое математическое определение. Его экземпляры служат для представления элементов кольца (множества с двумя операциями, каждая из которых индуцирует на нем группу, причем одна из операций коммутативна, а вторая дистрибутивна относительно первой).

Многим классам необходимо отношение порядка с операциями сравнения элементов. Такая возможность полезна для классов Kernel, таких как STRING, и для многих других классов. Поэтому в состав библиотеки входит отложенный класс COMPARABLE:

deferred class COMPARABLE feature

... infix "<", infix "<=", infix ">", infix ">="...

end

Математически его экземпляры - это полностью упорядоченные множества с заданным отношением порядком.

Не все потомки COMPARABLE должны быть потомками NUMERIC . В классе STRING арифметика не нужна, однако нужен порядок. Обратно, не все потомки NUMERIC должны быть потомками COMPARABLE . Так, на множестве матриц с действительными коэффициентами есть сложение, умножение, единица, нуль, что придает ей свойства кольца, но нет отношения порядка. Поэтому COMPARABLE и NUMERIC должны оставаться различными классами, и ни один из них не должен быть потомком другого.

Объекты некоторых типов, однако, имеют числовую природу и одновременно допускают сравнение. (Такие классы моделируют вполне упорядоченные кольца.) Примеры таких классов - REAL и INTEGER . Целые и действительные числа сравнивают, складывают и умножают. Их описание можно построить на множественном наследовании:

expanded class REAL inherit

NUMERIC

COMPARABLE

feature

...

end

Рис. 15.4. Структура множественного и единичного наследования

Окна - это деревья и прямоугольники

Рассмотрим оконную систему с произвольной глубиной вложения окон:

Рис. 15.5. Окна и подокна

В соответствующем классе WINDOW мы найдем компоненты двух основных видов:

[x].те, что рассматривают окно как иерархическую структуру (список подокон, родительское окно, число подокон, добавить, удалить подокно);

[x].те, что рассматривают окно как графический объект (высота, ширина, отобразить, спрятать, переместить окно).

Этот класс можно написать как единое целое, смешав все компоненты. Однако такой проект будет не самым удачным. Класс WINDOW следует рассматривать как сочетание двух абстракций:

[x].иерархической структуры, представленной классом TREE ;

[x].прямоугольного экранного объекта, представленного классом RECTANGLE .

На практике класс будет описан так:

class WINDOW inherit

TREE [WINDOW]

RECTANGLE

feature

... Характерные компоненты окна ...

end

Обратите внимание, класс TREE является родовым (generic) классом, а потому требует указания фактического родового параметра, здесь - самого класса WINDOW . Рекурсивная природа определения отражает рекурсию, присущую моделируемой ситуации, - окно является одновременно деревом окон.

Далее, можно подметить, что отдельные окна не содержат ничего, кроме текста. Эту особенность окон можно реализовать вложением, представив класс TEXT_WINDOW как клиента класса STRING , введяатрибут

text: STRING

Предпочтем, однако, вариант, в котором текстовое окно являетсяодновременно строкой. В этом случае используем множественное наследование с родителями WINDOW и STRING . (Если же все наши окна содержат лишь текст, их можно сделать прямыми потомками TREE , RECTANGLE и STRING , однако и здесь решение "в два хода" возможно будет более предпочтительным.)

Деревья - это списки и их элементы

Класс дерева TREE - еще один яркий пример множественного наследования.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Бертран Мейер читать все книги автора по порядку

Бертран Мейер - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Основы объектно-ориентированного программирования отзывы


Отзывы читателей о книге Основы объектно-ориентированного программирования, автор: Бертран Мейер. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x