Программирование >>  Дополнительные возможности наследования 

1 ... 178 179 180 [ 181 ] 182 183 184 ... 265



программ

Углубившись в синтаксис С++, легко упустить из виду, как и зачем используются различные подходы и средства программирования. Сегодня вы узнаете:

Как проводить анализ проблем и поиск решений, основываясь на подходах объектно-ориентированного программирования

Как проектировать эффективные объектно-ориентированные программы для нахождения оптимальных решений поставленных задач

Как использовать унифицированный язык моделирования (UML) для документирования анализа и проектирования

Является ли С++ оОъектно-ориентированным языком программирования

Язык С++ был создан как связующее звено между новыми принципами объектно-ориентированного программирования и одним из самых популярных в мире языком профаммирования С для разработки коммерческих программ. Для реализации назревших идей объектного программирования требовалась разработка надежной и эффективной среды программирования.

Язык С был разработан как нечто среднее между языками высокого уровня для бизнес-приложений, такими как COBOL, и работающим на уровне железа , высокоэффективным, но трудным в использовании языком ассемблер. Язык С разрабатывался для реализации структурного профаммирования, при котором решение задачи разбивается на более мелкие рутинные единицы повгоряюшихся действий, называемых процедурами.

Профаммы, которые создавались в конце девяностых, принципиально отличаются от написанных в начале десятилетия. Профаммами, основанными на процедурных подходах, обычно трудно управлять, их тяжело поддерживать и модернизировать. Графические ин-

9995419951

D+ /--D



терфейсы пользователя, Internet, выход на телефонные линии по цифровым каналам и масса новых технологий резко увеличили сложность проектов, при этом ожидания потребителей относительно качества интерфейса пользователя также постоянно росли.

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

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

Что же представляют собой виртуальные объекты? Сравним их с предметами и объектами окружающего мира: автомобилями, собаками, деревьями, облаками, цветами. Каждый из них имеет свои характеристики: бысфый, дружелюбный, коричневый, густой, красивый. Кроме того, множеству объектов свойственно определенное поведение: они движутся, лают, растут, проливаются дождем, увядают. Под словом собака большинство из нас понимают не совокупность пищеварительной, нервной и прочих систем, что может заинтересовать лишь узких специалистов, а мохнатого друга с четырьмя лапами, приветливо машущего хвостом и заливающегося звонким лаем. Для нас важны внешние признаки и поведение собаки, а не ее внутреннее усфойство .

Построение моделей

Чтобы отследить все признаки и связи объекта окружающего мира, нам пришлось бы создавать модель вселенной, настолько в этом мире все взаимосвязано. Целью модели является создание осмысленной абстракции реального мира. Такая абстракция должна быть проще самого мира, но при этом отображать его достаточно точно, чтобы модель можно было использовать для предсказания поведения предметов в реальном мире.

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

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

Модель, которая не будет проще моделируемого предмета, бесполезна. Стивен Райт (Steven Wright) пошутил на эту тему: У меня есть карта, где один дюйм равен дюйму. Я живу на Е5 .

Создание хорошей объектно-ориентированной профаммы по сути своей является моделированием реальных объектов средствами профаммирования. Для создания такой виртуальной модели важно хорошо знать, во-первых, средства профаммирования и, во-вторых, последовательность посфоения профаммы с помощью этих средств.



Проектирование программ: язык моделирования

Язык моделирования - это, по сути, фикция, набор соглашений по поводу принципов предварительного моделирования профаммы на бумаге. Тем не менее без этого этапа невозможно создать эффективный профессиональный профаммный продукт. Давайте договоримся изображать классы на бумаге в виде треугольников, а отношения наследования между ними - в виде пунктирных стрелок от базового класса к производному. Для примера смоделируем класс Geranium (Герань), произведенный от класса Flower (Цветок), как показано на рис. 18.1.


Рис. 18.1. Схематическое изображение наследования класса

На рисунке видно, что Geranium - особый вид Flower, и это вполне соответствует действительности. Если мы с вами договоримся графически изображать таким способом наследования классов, то будем прекрасно понимать друг друга. Со временем мы, вероятно, захотим моделировать многие сложные отношения и разработаем свой набор соглашений и правил по созданию диафамм, отображающих взаимосвязи объектов программы.

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

В таком случае бьшо бы полезным существование единого языка моделирования, понятного для всех. (В действительности эту прекрасную идею реализовать ничуть не проще, чем заставить всех жителей Земли говорить на эсперанто.) Тем не менее такой язык бьш создан, и имя ему - UML (Unified Modeling Language - унифицированный язык моделирования). Его задача состоит в том, чтобы добиться единообразия в отображении взаимоотношений между объектами в диафаммах. В соответствии с соглашениями языка UML нашу схему, представленную на рис. 18.1, следовало бы изобразить иначе (рис. 18.2).



1 ... 178 179 180 [ 181 ] 182 183 184 ... 265

© 2006 - 2025 pmbk.ru. Генерация страницы: 0.002
При копировании материалов приветствуются ссылки.
Яндекс.Метрика