Вездесущие объекты

Знакомство с объектно-ориентированным подходом

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

Абстракция.

Наследование.

Полиморфизм.

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

Передача сообщений.

Ассоциации.

Агрегация.

Объектно-ориентированный подход был воспринят в сфере разработчиков программ­ного обеспечения очень быстро, что вполне понятно. Как одна из технологий разработки программ, она имеет много преимуществ. В настоящее время развивается компонентный подход к разработке программного обеспечения, при котором создание любой системы начинается с создания набора классов. Затем можно расширить эту систему путем добав­ления новых свойств к уже созданным компонентам либо путем создания новых компо­нентов. При таком подходе классы, созданные во время проектирования системы, можно использовать повторно, что существенно снизит время разработки.

UML позволяет построить легкие в использовании и понимании модели объектов, благодаря чему упрощается их программная реализация.

Объектно-ориентированный подход определяется несколькими фундаментальными принципами, которые и будут изучены в этой главе. В следующей же части будет рас­сказано, как для реализации этих принципов применяется язык UML.

Вездесущие объекты

Все, что окружает нас, относится к объектам. Они составляют наш мир. Как было отмечено в предыдущей главе, современное программное обеспечение обычно моде­лирует окружающий мир или небольшую его часть. Другими словами, программы строятся на основе объектов. Если вы понимаете основные свойства объектов, то мо­жете и построить представляющее их программное обеспечение.

Прежде всего, объект является экземпляром класса, (типа). Вы и я, на­пример, представляем собой экземпляры класса "человек". Объект имеет структуру, т.е. обладает атрибутами (свойствами) и поведением. Поведе­ние объекта состоит из операций, которые этот объект выполняет. Атри­буты и операции имеют общее название признаки.

Как объекты класса "человек", вы и я имеем такие атрибуты: рост, вес и возраст. (Можно придумать еще какие-нибудь.) Мы также выполняем операции: едим, спим, читаем, пишем, говорим, ходим на работу и т.д. Если бы нужно было создать систему, связанную с информацией о людях, например систему начисления зарплаты или сис­тему для отдела социального обеспечения, нужно было бы отразить некоторые из этих атрибутов и операций в программном обеспечении.

В области объектно-ориентированных систем, помимо категоризации, классы обес­печивают выполнение других задач. Класс представляет собой шаблон для создания объектов. Его можно представить как формочку, предназначенную для "штамповки" новых объектов. (Кто-то может возразить, что это та же категоризация, но, думается, не стоит вступать в дискуссию по этому поводу.)

Вернемся к примеру со стиральной машиной. Если класс стиральных машин имеет атрибуты: компания-производитель, название модели, серийный номер изделия и ем­кость, а также выполняет операции "загрузить белье", "загрузить стиральный порошок", "включить" и "выгрузить белье" — налицо механизм для создания новых экземпляров класса стиральных машин. Другими словами, на базе этого класса можно создавать но­вые объекты (рис. 2.1). Это очень важно для создания объектно-ориентированного про­граммного обеспечения. Хотя в этой книге вопросы программирования не рассматри­ваются, знание того, что программные классы могут создавать новые экземпляры, очень важно для понимания концепции объектно-ориентированного подхода.

Рис. 2.1. Класс стиральной машины — исходная модель стиральной машины, ко­торая служит шаблоном для создания новых экземпляров стиральных машин

В главе 3, "Использование концепций объектно-ориентированного проектирова­ния", вы увидите, что имена классов и свойств, например стиральная машинаи номер изделия, пишутся В виде СтиральнаяМашина (WashingMachine) и серий-ныйНомер (serialNumber). Здесь мы ведем обсуждение на обычном языке (не UML), т.к. главной целью является нормальное восприятие материала.

Отметим еше один момент. Запомните, что цель объектно-ориентированного подхо­да состоит в создании программного обеспечения, которое отражает (т.е. "моделирует") отдельную часть окружающего нас мира. Чем больше атрибутов и операций принима­ются во внимание, тем больше полученная модель будет приближена к реальности. В примере со стиральной машиной для получения более точной Модели можно использо­вать дополнительные атрибуты, такие как объем барабана, внутренний таймер, тип фильтра, двигателя, скорость двигателя. Можно еше повысить точность модели, добавив операции "добавить отбеливатель", "установить время замачивания", "установить время стирки", "задать время слива", "задать время отжима" (рис. 2.2).

Рис. 2.2. Увеличение числа атрибутов и операций в моде­ли позволяет точнее отражать окружающий мир