Вездесущие объекты
Знакомство с объектно-ориентированным подходом
Эта часть посвящена базовым принципам объектно-ориентированного подхода, который лежит в основе процесса моделирования. В частности, будут рассмотрены следующие важные понятия.
• Абстракция.
• Наследование.
• Полиморфизм.
• Инкапсуляция.
• Передача сообщений.
• Ассоциации.
• Агрегация.
Объектно-ориентированный подход был воспринят в сфере разработчиков программного обеспечения очень быстро, что вполне понятно. Как одна из технологий разработки программ, она имеет много преимуществ. В настоящее время развивается компонентный подход к разработке программного обеспечения, при котором создание любой системы начинается с создания набора классов. Затем можно расширить эту систему путем добавления новых свойств к уже созданным компонентам либо путем создания новых компонентов. При таком подходе классы, созданные во время проектирования системы, можно использовать повторно, что существенно снизит время разработки.
UML позволяет построить легкие в использовании и понимании модели объектов, благодаря чему упрощается их программная реализация.
Объектно-ориентированный подход определяется несколькими фундаментальными принципами, которые и будут изучены в этой главе. В следующей же части будет рассказано, как для реализации этих принципов применяется язык UML.
Вездесущие объекты
Все, что окружает нас, относится к объектам. Они составляют наш мир. Как было отмечено в предыдущей главе, современное программное обеспечение обычно моделирует окружающий мир или небольшую его часть. Другими словами, программы строятся на основе объектов. Если вы понимаете основные свойства объектов, то можете и построить представляющее их программное обеспечение.
Прежде всего, объект является экземпляром класса, (типа). Вы и я, например, представляем собой экземпляры класса "человек". Объект имеет структуру, т.е. обладает атрибутами (свойствами) и поведением. Поведение объекта состоит из операций, которые этот объект выполняет. Атрибуты и операции имеют общее название признаки.
Как объекты класса "человек", вы и я имеем такие атрибуты: рост, вес и возраст. (Можно придумать еще какие-нибудь.) Мы также выполняем операции: едим, спим, читаем, пишем, говорим, ходим на работу и т.д. Если бы нужно было создать систему, связанную с информацией о людях, например систему начисления зарплаты или систему для отдела социального обеспечения, нужно было бы отразить некоторые из этих атрибутов и операций в программном обеспечении.
В области объектно-ориентированных систем, помимо категоризации, классы обеспечивают выполнение других задач. Класс представляет собой шаблон для создания объектов. Его можно представить как формочку, предназначенную для "штамповки" новых объектов. (Кто-то может возразить, что это та же категоризация, но, думается, не стоит вступать в дискуссию по этому поводу.)
Вернемся к примеру со стиральной машиной. Если класс стиральных машин имеет атрибуты: компания-производитель, название модели, серийный номер изделия и емкость, а также выполняет операции "загрузить белье", "загрузить стиральный порошок", "включить" и "выгрузить белье" — налицо механизм для создания новых экземпляров класса стиральных машин. Другими словами, на базе этого класса можно создавать новые объекты (рис. 2.1). Это очень важно для создания объектно-ориентированного программного обеспечения. Хотя в этой книге вопросы программирования не рассматриваются, знание того, что программные классы могут создавать новые экземпляры, очень важно для понимания концепции объектно-ориентированного подхода.
Рис. 2.1. Класс стиральной машины — исходная модель стиральной машины, которая служит шаблоном для создания новых экземпляров стиральных машин
В главе 3, "Использование концепций объектно-ориентированного проектирования", вы увидите, что имена классов и свойств, например стиральная машинаи номер изделия, пишутся В виде СтиральнаяМашина (WashingMachine) и серий-ныйНомер (serialNumber). Здесь мы ведем обсуждение на обычном языке (не UML), т.к. главной целью является нормальное восприятие материала.
Отметим еше один момент. Запомните, что цель объектно-ориентированного подхода состоит в создании программного обеспечения, которое отражает (т.е. "моделирует") отдельную часть окружающего нас мира. Чем больше атрибутов и операций принимаются во внимание, тем больше полученная модель будет приближена к реальности. В примере со стиральной машиной для получения более точной Модели можно использовать дополнительные атрибуты, такие как объем барабана, внутренний таймер, тип фильтра, двигателя, скорость двигателя. Можно еше повысить точность модели, добавив операции "добавить отбеливатель", "установить время замачивания", "установить время стирки", "задать время слива", "задать время отжима" (рис. 2.2).
Рис. 2.2. Увеличение числа атрибутов и операций в модели позволяет точнее отражать окружающий мир