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

Во время интеграции системы вполне возможно, что ошибка, проявляющаяся в одной из программных систем, вызвана некорректным кодом в другом фрагменте. Тем самым ошибки, выявляемые в процессе интеграции, приводят к необходимости исправлять некоторые компоненты. Вслед за этим измененные компоненты должны вновь тестироваться изолированно перед очередной попыткой интеграции. Повторная прогонка разработанных ранее тестовых примеров, выполняемая после изменений в компоненте программы, иногда называется регрессионным тестированием(regression testing).

2.12. Сопровождение и развитие

Хотелось бы, чтобы с передачей пользователю функционирующего приложения, работа команды разработчиков завершалась. К сожалению, такого почти никогда не происходит. Необходимо дополнительное сопровождение программного обеспечения. Вот некоторые причины, вызывающие его неизбежность:

∙В переданном продукте могут быть обнаружены ошибки. Они должны быть исправлены либо через «заплатки» (patches) к существующей версии, либо в новой версии.

∙Изменение требований — возможно, из-зановых государственных постановлений или стандартизации.

∙Переход на другое аппаратное обеспечение. Например, в результате переноса системы на другие платформы или поддержки новых устройства ввода(световое перо или сенсорный экран). Может измениться технология вывода: скажем, вы перешли от текстового интерфейса к графическому.

∙Изменение запросов пользователей. Пользователи могут требовать увеличения возможностей программы, снижения цены, более простого использования и т. д. Как правило, такие «повышенные» требования диктуют конкурирующие продукты.

∙Потребность в улучшенной документации.

Хороший проект предусматривает неизбежность изменений и подготавливает их с самого начала.

Упражнения

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

 

2.Создайте с помощью диаграммы взаимодействия сценарий для организации из упражнения 1.

3.Для типичной карточной игры опишите программную систему, которая будет взаимодействовать с пользователем в качестве противоположного партнера. Типичные компоненты должны включать игровой стол и колоду карт.

4.Опишите программную систему для управления ATM (Automatic Teller Machine). Поскольку словоTeller достаточно многозначно(рассказчик, счетчик голосов при выборах, кассир в банке, диктор радиолокационной станции ПВО и т. д.), то у вас имеется большая свобода в выборе предназначения этой машины. Приведите диаграммы взаимодействия для различных сценариев использования этой машины.

Глава 3 : Классы и методы

Хотя термины, которые используются в объектно-ориентированныхязыках, отличаются, понятия классов, экземпляров, пересылки сообщений, методов и наследования являются общими. Эти термины были введены в главе1. Как уже отмечалось, использование различных терминов для одних и тех же понятий широко распространено в  объектно- ориентированных языках. Мы будем применять единую и, как мы надеемся, ясную терминологию для всех языков программирования. В вводных разделах будем отмечать специфику конкретных языков и различные синонимы для наших терминов. Обращайтесь к разделу»Глоссарий» за разъяснением незнакомых понятий.

В этой главе речь идет о статических атрибутах классов; в главе4 мы рассмотрим их динамическое использование. Здесь же мы проиллюстрируем механизмы объявления класса и определения методов. В главе4 объясняется, как создаются экземпляры класса и как им передаются сообщения. Мы отложим анализ механизмов наследования до главы7.

Важный момент, который необходимо прояснить, — различие между объявлением класса или объекта и его порождением. В первом случае(который является темой этой главы) просто указывается тип данных. Объявление характеризует объект(внутренние переменные, типы поведения), но само по себе не создает новых данных. Порождение, то есть создание новых экземпляров класса, может рассматриваться как разновидность объявления переменной и будет являться темой следующей главы. Различие между этими двумя понятиями отчасти маскируется тем фактом, что в языках с контролем типов данных(таких, какC++) определение, порождающее переменную, выглядит так же, как и чистое объявление.

3.1. Инкапсуляция

Вглаве1 мы заметили, что объектно-ориентированное программирование и, в особенности, объекты могут рассматриваться со многих точек зрения. В этой главе мы будем представлять себе объекты как абстрактные типы данных.