- •Программирование и дизайн пользовательского интерфейса
- •Современные компоненты интерфейса пользователя Размещение информации на экране
- •Выделение элементов интерфейса яркостью
- •Использование цвета при проектировании эргономичного интерфейса
- •Непротиворечивость и стандартизация
- •Тексты и диалоги
- •Средства управления графического интерфейса пользователя
- •Изображения (Иконки)
- •Основные принципы создания меню
- •Дизайн заголовков и полей
- •Форматы ввода
- •Организация системы навигации и системы отображения состояний
- •Проектирование сообщений
- •Предотвращение, обнаружение и исправление ошибок
- •Обработка ошибок в формах ввода
- •Принципы объектно-ориентированного программирования
- •Абстракция
- •Свойства и поведение объектов
Абстракция
означает, что если какой-то класс является абстрактным, то в процессе выполнения приложения не может быть создано объектов этого класса. Класс становится абстрактным, если какой-то из его методов является абстрактным. Для того, чтобы объявить метод абстрактным, после записи его заголовка нужно поставить директиву abstract, и не нужно описывать этот метод в исполнительной части.
Свойства и поведение объектов
мирования», «Информационные технологии».
Под объектами понимают некоторую абстрактную сущность, заданную набором имен атрибутов и имен методов поведения. Но объект не имеет никакого конкретного состояния, т.к. его атрибуты не имеют значений.
Объект — это конкретное представление абстракции. Объект обладает индивидуальностью, состоянием и поведением. Структура и поведение подобных объектов < определены в их общем классе. Термины «экземпляр класса» и «объект» взаимозаменяемы.
Индивидуальность — это характеристика объекта, которая отличает его от всех, других объектов.
Состояние объекта характеризуется перечнем всех свойств объекта и текущими значениями каждого из этих свойств (рисунок 16.1).
-
Стул
Стоимость
Вес
Размеры
Положение
Цвет
Купить ()
Продать ()
Взвесить ()
Переместить ()
Покрасить ()
Рисунок 16.1 - Представление объекта с именем Стул
Объекты не существуют изолированно друг от друга. Они подвергаются воздействию или сами воздействуют на другие объекты.
Поведение характеризует то, как объект воздействует на другие объекты (или подвергается воздействию) в терминах изменений его состояния и передачи сообщений. Поведение объекта является функцией как его состояния, так и выполняемых им операций (Купить, Продать, Взвесить, Переместить, Покрасить). Говорят, что состояние объекта представляет суммарный результат его поведения.
Операция обозначает обслуживание, которое объект предлагает своим клиентам. Возможны пять видов операций клиента над объектом:
модификатор (изменяет состояние объекта);
селектор (дает доступ к состоянию, но не изменяет его);
итератор (доступ к содержанию объекта по частям, в строго определенном по рядке);
конструктор (создает объект и инициализирует его состояние);
деструктор (разрушает объект и освобождает занимаемую им память).
Примеры операций приведены в таблице 16.1.
Таблица 16.1 - Разновидности операций
-
Вид операции
Пример операции
Модификатор
Пополнеть (кг)
Селектор
КакойВес (): integer
Итератор
ПоказатьАссортиментТоваров (): string
Конструктор
СоздатьРобот (параметры)
Деструктор
УничтожитьРобот ()
В некоторых задачах принципиально подчеркнут характер отношений между объектом и его экземплярами. Примерами таких отношений являются:
а) объект не может иметь экземпляров (имеет 0 экземпляров)
б) объект может иметь только один экземпляр в рамках данной задачи
в) объект может иметь много экземпляров
Примером отношений являются:
а) объект млекопитающее не может иметь экземпляров, т.к. любое реальное млекопитающее является экземпляром объекта-потомка от млекопитающего.
б) объект "президент России" может иметь только один экземпляр в течение некоторого периода времени.
в) объект ястерб-тетеревятник имеет множество экземпляров.
Возможность контроля допустимого количества экземпляров объекта увеличивает надежность системы за счет исключения ошибок при создании недопустимых экземпляров.
В общем случае все методы и свободные подпрограммы, ассоциированные с конкретным объектом, образуют его протокол. Таким образом, протокол определяет оболочку допустимого поведения объекта и поэтому заключает в себе цельное (статическое и динамическое) представление объекта.
Большой протокол полезно разделять на логические группировки поведения. Эти группировки, разделяющие пространство поведения объекта, обозначают роли, которые может играть объект.
С точки зрения внешней среды важное значение имеет такое понятие, как обязанности объекта. Обязанности означают обязательства объекта обеспечить определенное поведение. Обязанностями объекта являются все виды обслуживания, которые он предлагает клиентам. В мире объект играет определенные роли, выполняя свои обязанности.
Наличие у объекта внутреннего состояния означает, что порядок выполнения им операций очень важен. Иначе говоря, объект может представляться как независимый автомат. По аналогии с автоматами можно выделять активные и пассивные объекты (рисунок 16.2).
Объекты
Активные объекты (самостоятельное
поведение)
Пассивные объекты (поведение по заказу)
Рисунок 16.2 - Активные и пассивные объекты
Активный объект имеет собственный канал (поток) управления, пассивный — нет. Активный объект автономен, он может проявлять свое поведение без воздействия со стороны других объектов. Пассивный объект, наоборот, может изменять свое состояние только под воздействием других объектов.
Виды отношений между объектами
В поле зрения разработчика ПО находятся не объекты-одиночки, а взаимодействующие объекты, ведь именно взаимодействие объектов реализует поведение системы. Отношения между парой объектов основываются на взаимной информации о разрешенных операциях и ожидаемом поведении. Особо интересны два вида отношений между объектами: связи и агрегация.
Связь — это физическое или понятийное соединение между объектами. Объект сотрудничает с другими объектами через соединяющие их связи. Связь обозначает соединение, с помощью которого
объект-клиент вызывает операции объекта-поставщика;
один объект перемещает данные к другому объекту.
Можно сказать, что связи являются рельсами между станциями-объектами, по которым ездят «трамвайчики сообщений».
Связи между объектами показаны на рис. 9.5 с помощью соединительных линий. Связи представляют возможные пути для передачи сообщений. Сами сообщения показаны стрелками, отмечающими их направления, и помечены именами вызываемых операций.
Агрегация
Связи обозначают равноправные (клиент-серверные) отношения между объектами. Агрегация обозначает отношения объектов в иерархии «целое/часть». Агрегация обеспечивает возможность перемещения от целого (агрегата) к его частям (свойствам). Агрегация может обозначать, а может и не обозначать физическое включение части в целое.
При выборе вида отношения должны учитываться следующие факторы:
связи обеспечивают низкое сцепление между объектами;
агрегация инкапсулирует части как секреты целого.
Варианты наследования
Использование наследования обычно вызвано необходимостью достичь одну из следующих целей:
Построение принципиально нового объекта, базирующегося на свойствах существующего.
Расширение и изменение функциональности имеющегося объекта.
В первом случае, примером может являться построения объектов "Прямоугольник", "Ромб", "Эллипс", на основе объекта "Геометрическая фигура", а иллюстрацией для второго пункта является создание объекта "Прямоугольник с утолщенной линией", путем модификации объекта "Прямоугольник".
Вариант построения нового объекта, подразумевает введение специфических атрибутов и методов, тогда как модификация в первую очередь базируется на свойстве полиморфизма.
Обычный вариант наследования в объектно-ориентированном подходе - наследование типа "является". Типы объекта-наследника и объекта-родителя в этом случае имеют одну природу и являются сравнимыми. У объекта имеется один родитель.
Возможен также случай множественного наследования, при котором новый объект включает все атрибуты и методы нескольких родительских объектов типы которых могут быть несравнимы. Тип объекта-наследника в этом случае может быть приведен к любому из родительских типов. Однако, использование такого вида наследования при проектировании и разработке программных систем не рекомендуется в связи с его сложностью.
Иногда требуется, чтобы вновь создаваемый объект состоял из нескольких компонент. Такой тип взаимодействия именуют композицией, или наследованием "состоит из", хотя с точки зрения объектно-ориентированного подхода это не есть наследование в чистом виде. Типы наследника и составляющих его объектов при этом могут быть несравнимыми. Чаще всего, такой вид взаимодействия реализуется путем включения исходного объекта (объектов) в качестве атрибутов нового объекта.