|
Программирование >> Программирование на языке c++
Другая часть описания класса, которую не видно через прямоугольные окна, является одинаковой для всех классов заданного семейства. Фактически шаблон - это класс с параметрами, или па-раметризированный класс. Такими параметрами могут быть: типы (ни одного, один или несколько), передаваемые в класс, которые могут быть как стандартными, так и новыми (определенными пользователем); параметры (ни одного, один или несколько), передаваемые в класс, во многом имеющие сходство с параметрами функций; типы и параметры, передаваемые в класс. Параметризированные классы подробно рассмотрены в гл. 6. При написании программ очень важным является выявление и устранение ошибок. Для этих целей в объектно-ориентированных программах используется специальный метод, называемый обработкой исключений (exception handling), частным случаем которого является обработка ошибок (error handling). Основная идея этого метода поясняется на рис. 1.10. Объектно-ориентированную программу можно рассматривать как совокупность объектов, взаимодействующих через сообщения. Типами объектов являются библиотечные и определенные пользователем классы. Каждый класс имеет внешнее представление, или интерфейс (interface), и внутреннее представление, или реализацию (implementation). Когда объекту посылается сообщение, начинается обработка этого сообщения внутри объекта, причем обычно невозможно увидеть, что делается внутри (доступ внутрь закрыт). Допустим, что сообщение, передаваемое в объект, является ошибочным, например, мы обращаемся к элементу внутреннего массива с недопустимо большим значением индекса. Возникают вопросы: кто может обнаружить и кто может исправить ошибку? Очевидно, что проверить индекс и определить ошибку в общем случае можно только там, где соответствующий массив построен, т. е. в классе. Однако исправить ошибку может только функция, посылающая сообщение объекту класса. Эти соображения и легли в основу метода обработки исключений, в соответствии с которым выполняются определенные действия (рис. 1.10). 1) Пусть функция F посылает сообщение объекту О. 2) Если объект О обнаруживает в сообщении ошибку, неоднозначность или то, что невозможно выполнить, он прерывает свои функции и генерирует исключение. 3) Функция F представляется в виде двух частей: собственно функции и обработчика исключения. Следствием генерации исключения в объекте является активизация обработчика исключения. 4) Обработчик исключения делает вывод о возможности продолжения программы (изменяет ошибочное сообщение) или о необходимости ее завершения по ошибке. Такой метод имеет ряд преимуществ: -ф- поиск ошибок осуществляется внутри класса, а их обработка - за пределами класса. Это поддерживает независимость интерфейса и реализации; осуществляется явное разделение (а не смешивание) кода собственно функции и кода для обработки ошибок. Функция F тело функции F обработчик исключения Объект О (Г) Передача сообщения принятие решения об исключении интерфейс возможная .генерация обработка сообщения исключения Корректировка и повторение сообщения Заверщение программы Рис. !. 10. Пояснение метода обработки исключений Подробное описание метода выявления и обработки исключений рассмотрены в гл. 7. В работе [9] приведены этапы проектирования объектно-ориентированной программы, исполъзующей все рассмотренные в этом параграфе базовые конструкции. Каждый этап сопровождается примерами фрагментов программ.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |