|
Программирование >> Дополнительные возможности наследования
Резюме На этом занятии в общих чертах рассмотрены вопросы анализа и проектирования объектно-ориентированных программ. Анализ состоит в определении ситуаций и сценариев использования профаммы, а проектирование заключается в определении классов и моделировании отнощений и взаимодействия между ними. Еще не так давно профаммист бысфо набрасывал основные фебования к профамме и начинали писать код. Современные профаммы отличаются тем, что работа над ними никогда не заканчивается, если только проект не оказался нежизнеспособным и не бьш отвергнут. Тщательное планирование проекта в начале гарантирует возможность бысфой и безболезненной модернизации его в будущем. На следующих занятиях рассмафиваются средства реализации спланированных проектов. Вопросы тестирования и маркетинга профаммных продуктов выходет за пределы этой книги, хотя при составлении бизнес-плана их никак нельзя упускать. Вопросы о ответы Чем объектно-ориентированный анализ и проектирование фундаментально отличаются от других подходов? До разработки объектно-ориентированной технологии аналитики и профаммисты бьши склонны думать о профаммах как о фуппах функций, работающих с данными. Объектно-ориентированное профаммирование рассматривает интефированные данные и функции как самостоятельные единицы, содержащие в себе и данные, и методы манипулирования ими. При процедурном профаммировании внимание сконценфировано на функциях и их работе с данными. Говорят, что профаммы на Pascal и С - коллекции процедур, а профаммы на С++ - коллекции классов. Является ли объекгно-ориентированное профаммирование той палочкой-вьфучалочкой, которая решит все проблемы профаммирования? Нет, этого никогда и не ждали. Однако на современном уровне фебования к про-фаммным продуктам объектно-ориентированные анализ, проектирование и профаммирование обеспечивают профаммистов средствами, которые не могло предоставить процедурное профаммирование. Является ли С++ совершенным объектно-ориентированным язьком? С++, если сравнивать его с другими альтернативными объектно-ориентированными языками профаммирования, имеет множество преимуществ и недостатков. Но одно из безусловных преимуществ состоит в том, что это самый популярный объектно-ориентированный язык профаммирования на Земле. Откровенно говоря, больщинство профаммистов рещают работать на С++ не после изнурительного анализа альтернативных объектно-ориентированных языков. Они идут туда, где происходят основные события, а в 90-х основные события в мире профаммирования связаны с С++. Тому есть веские причины. Конечно, С++ может многое предложить профаммисту, но эта книга существует - и бьюсь об заклад, что вы читаете ее, - из-за того, что С++ выбран в качестве языка разработки в очень многих крупных корпорациях, таких как Microsoft. Коллоквиум в этом разделе предлагаются вопросы для самоконтроля и укрепления полученных знаний, а также ряд упражнений, которые помогут закрепить ваши практические навыки. Попытайтесь самостоятельно ответить на вопросы теста и выполнить задания, а потом сверьте полученные результаты с ответами в приложении Г. Не приступайте к изучению материала следующей главы, если для вас остались неясными хотя бы некоторые из предложенных ниже вопросов. КоншроАьныв вопросы 1. Какая разница между объектно-ориентированным и процедурным программированием? 2. Каковы этапы объектно-ориентированного анализа и проектирования? 3. Как связанны диаграммы последовательности и сотрудничества? Упражнвнпя 1. Предположим, что есть две пересекающиеся улицы с двусторонним движением, светофорами и пешеходными переходами. Нужно создать виртуальную модель, чтобы определить, позволит ли изменение частоты подачи сигнала светофора сделать дорожное движение более равномерным. 2. Какие объекты и какие классы потребуются для имитации этой ситуации? 3. Усложним ситуацию из упражнения 1. Предположим, что есть три вида водителей: таксисты, переезжающие переход на красный свет; иногородние, которые едут медленно и осторожно; и частники, которые ведут машины по-разному, в зависимости от представлений о своей крутизне . 4. Также есть два вида пешеходов: местные, которые переходят улицу, где им заблагорассудится, и туристы, которые переходят улицу только на зеленый свет. 5. А кроме того, есть еще велосипедисты, которые ведут себя то как пешеходы, то как водители. 6. Как эти соображения изменят модель? 7. Вам заказали программу планирования времени конференций и встреч, а также бронирования мест в гостинице для визитеров компании и для участников конференций. Определите главные подсистемы. 8. Спроектируйте интерфейсы к классам той части программы, обсуждаемой в упражнении 3, которая относится к резервированию гостиничных номеров. 1Гень1д-й ШаОдоны у программистов, использующих язык С++, появился новый мощный инструмент - параметризованные типы , или шаблоны. Шаблонами настолько удобно пользоваться, что стандартная библиотека шаблонов (Standard Template Library - STL) была принята в состав определений языка С++. Итак, сегодня вы узнаете: Что такое шаблоны и как их использовать Как создать класс шаблонов Как создаются шаблоны функций Что представляет собой стандартная библиотека шаблонов (STL) и как ею пользоваться Что таков шаблоны При подведении итогов за вторую неделю обучения вы узнали, как построить объект Partstist и как его использовать для создания объекта PartsCatalog. Если же вы хотите воспользоваться объектом Partstist, чтобы составить, например, список кошек, у вас возникнет проблема: объект Partstist знает только о запчастях. Чтобы решить эту проблему, можно создать базовый класс tist и произвести из него классы Partstist и Catstist. Затем можно вырезать и вставить существенную часть класса PartsList в объявление нового класса CatsList. А через неделю, когда вы захотите составить список объектов Саг, вам придется опять создавать новый класс и снова вырезать и вставлять . Очевидно, что это неприемлемое решение. Ведь через какое-то время класс List и его производные классы придется расширять. А работа, кото{)ую пришлось бы проделать, чтобы убедиться в том, что все изменения, коснувшиеся базового класса, распространены и на все связанные классы, превратилась бы в настоящий кошмар. Благодаря шаблонам, эта проблема легко решается, а с принетием стандарта ANSI шаблоны стали неотъемлемой частью языка С++, подобно которому они сохраняют тип и очень гибки.
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |