Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Внутренние программные классы
Внутренние программные классы скрывают решения разработчика, которые могут со временем измениться. Обычно они создаются на поздних стадиях процесса проектирования. Определить их из аналитической модели, относящейся к предметной области, невозможно. Внутренние программные классы инкапсулируют различные структуры данных (стеки, очереди, таблицы данных), выбранные проектировщиком. Примерами внутренних классов являются также классы-разъемы Применение наследования при проектировании Наследование полезно при проектировании двух похожих классов, то есть таких, у которых много общих черт. На этапе проектирования архитектуры его нужно иметь в виду, чтобы впоследствии на этапах детального проектирования и кодирования можно было повторно использовать тот же или слегка видоизмененный код. Наследование задействуют и с целью сделать проект более удобным для сопровождения – такое применение оченъ упрощает инкрементную модификацию программы. Иерархии классов (называемые также иерархиями обобщения/специализации или иерархиями наследования) допустимо разрабатывать сверху вниз, снизу вверх или в обоих направлениях. При разработке сверху вниз проектируется класс, который включает характеристики, общие для всех его наследников. В ходе специализации этого класса формируются подклассы со специфическими особенностями. У абстрактного класса не может быть экземпляров, поэтому он используется как шаблон для создания классов, а не объектов. Иными словами, он способен выступать только в роли суперкласса, который определяет общий интерфейс для всех своих подклассов. Абстрактная операция – это операция, которая объявлена, но не реализована в абстрактном классе. Абстрактный класс должен иметь хотя бы одну абстрактную операцию. В объектно-ориентированном проектировании полиморфизм используется, когда в различных классах должна существовать операция с одним и тем же именем. Ее спецификация во всех классах одинакова, но реализация может быть различной: это дает возможность во время выполнения использовать вместо одного объекта другой с тем же интерфейсом. Динамическое связывание применяется совместно с полиморфизмом для ассоциирования запроса с объектом и одной из его операций во время исполнения. При статическом связывании (типичный случай в процедурных языках) ассоциация запроса с операцией устанавливается во время компиляции, ее нельзя впоследствии изменить. При динамическом связывании, напротив, запрос может сначала выполняться операцией одного объекта, а потом операцией другого объекта. Примеры наследования Примеры суперклассов и подклассов. В банковской системе класс Счет имеет два атрибута: номерСчета и баланс. Пример полиморфизма и динамического связывания. Рассмотрим теперь создание объектов этих классов, а также пример полиморфизма и динамического связывания. Следует отметить, что объекту типа Счет можно присвоить объект типа Чековый Счет или Сберегательный Счет, но обратное неверно. Дело в том, что каждый Чековый Счет является Счетом, равно как и каждый Сберегательный Счет является Счетом, однако нельзя сказать, будто каждый Счет является Сберегательным, он может быть и Чековым. Пример наследования абстрактному классу. Рис.9.11. Пример абстрактного суперкласса и подклассов Спецификация интерфейса класса В спецификации интерфейса класса определяется интерфейс скрывающего информацию класса, в том числе его операции. Спецификация должна включать: – описание информации, скрываемой классом, например инкапсулированную структуру данных (если речь идет о классе абстрагирования данных) или интерфейс устройства; – критерий, на основании которого был выделен данный класс; – предположения, сделанные при специфицировании класса: могут разные задачи получать одновременный доступ к операциям объекта этого класса или доступ должен быть строго последовательным; – предположительные модификации, побуждающие проектировать с учетом возможных изменений; – суперкласс (если есть); – унаследованные операции (если есть); – операции класса. Для каждой операции необходимо определить: выполняемую функцию; предусловие (условие, которое должно выполняться перед вызовом операции); постусловие (условие, которое должно выполняться после вызова операции); инвариант (условие, которое должно выполняться всегда); входные параметры; выходные параметры; вызываемые операции других классов. Спецификацию интерфейса класса можно представить в описательной или табличной форме. Детальное проектирование ПО После разбиения системы на задачи и проектирования скрывающих информацию классов следует приступать к детальному проектированию программы. На этом этапе разрабатывается внутреннее устройство составных задач, содержащих вложенные объекты, подробно рассматриваются вопросы синхронизации, создаются классы-разъемы, инкапсулирующие детали межзадачных коммуникаций, и определяется внутренняя логика упорядочения событий для каждой задачи. Детальный проект подсистемы изображается на детальных диаграммах параллельной кооперации, которые конкретизируют диаграммы, разработанные на этапе разбиения на задачи. Здесь изображается внутреннее строение сгруппированных задач и объектов-разъемов. Популярное:
|
Последнее изменение этой страницы: 2016-03-17; Просмотров: 1043; Нарушение авторского права страницы